<?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-3070186580249183534</id><updated>2011-07-07T21:30:29.552-07:00</updated><title type='text'>cinfd blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3070186580249183534.post-2272544285777023366</id><published>2010-05-09T18:06:00.000-07:00</published><updated>2010-05-09T18:07:25.398-07:00</updated><title type='text'>给X61装系统</title><content type='html'>&lt;span class="Apple-style-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; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;1，首先，你要有一个系统安装盘的ISO文件；&lt;br /&gt;2，其次，准备一个U盘，装XP的话1G足够，Vista或Win 7可能要4G以上；&lt;br /&gt;3，安装一个叫Ultra ISO的软件（当然在另外一台电脑上！）&lt;br /&gt;4,用Ultra ISO打开那个ISO文件，然后选择“启动光盘”-》“写入硬盘映像”，写入U盘，记得格式选USB-ZIP+；&lt;br /&gt;5，然后把X60设为USB硬盘启动，用刚才的U盘就可以像光盘一样装系&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.top81.ws/show.php?f=1&amp;amp;t=974419&amp;amp;m=6857975"&gt;http://www.top81.ws/show.php?f=1&amp;amp;t=974419&amp;amp;m=6857975&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-2272544285777023366?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2272544285777023366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2272544285777023366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2272544285777023366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2272544285777023366'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2010/05/x61.html' title='给X61装系统'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8183963183337991271</id><published>2010-04-29T00:03:00.000-07:00</published><updated>2010-04-29T00:15:54.296-07:00</updated><title type='text'>install XP in T20, after using Linux</title><content type='html'>phenomenon --&gt; stop right after the CD is reading, result in a black screen after "Setup is inspecting your computer's hardware configuration"  ==&gt; reason: the linux partition confused the XP  ==&gt; solution: use partition tool to remove the Linux partition. the best tool could be "&lt;br /&gt;&lt;h3&gt;GParted"&lt;/h3&gt;http://gparted.sourceforge.net/download.php&lt;br /&gt;&lt;br /&gt;it is a live CD and can be used to boot. if the graphic failed to start. go to the sbin to start the "parted" exe file directly. I don't know the password for the superuser. however, this one doesn't require this. use the "print" command to see the current hd and use the command of "rm number" to remove the partition. don't need to create one.  reboot and the XP installation run smoothly.&lt;br /&gt;&lt;br /&gt;useful links&lt;br /&gt;&lt;br /&gt;http://forum.thinkpads.com/viewtopic.php?p=366364&amp;amp;sid=afc697094fc5ce74af9279a97e68d1c3&lt;br /&gt;&lt;br /&gt;Windows XP clean installation - ThinkPad General        &lt;br /&gt;http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-40068&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-8183963183337991271?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8183963183337991271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8183963183337991271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8183963183337991271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8183963183337991271'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2010/04/install-xp-in-t20-after-using-linux.html' title='install XP in T20, after using Linux'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8482751177891733010</id><published>2009-08-31T20:33:00.000-07:00</published><updated>2009-08-31T20:37:12.743-07:00</updated><title type='text'>飞机加油问题</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Microsoft YaHei'; font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;p&gt;&lt;strong&gt;已知&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;每个飞机只有一个油箱&lt;/li&gt;&lt;li&gt;飞机之间可以相互加油(注意是相互，没有加油机)&lt;/li&gt;&lt;li&gt;一箱油可供一架飞机绕地球飞半圈&lt;/li&gt;&lt;li&gt;所有飞机从同一机场起飞，而且必须都安全返回机场，不允许中途降落，中间没有飞机场&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;为使至少一架飞机绕地球一圈回到起飞时的飞机场，至少需要出动几架飞机?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5&lt;/p&gt;&lt;p&gt;the 1st one come back at the point the angle is 45, the 2second come back at the point where the angle is 90. one plane keep flying. the third one flies to this one in the opposite direction to the location where the angle is 90. the fourth feuls the plane at the point where the angle is 45&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-8482751177891733010?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8482751177891733010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8482751177891733010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8482751177891733010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8482751177891733010'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2009/08/blog-post.html' title='飞机加油问题'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8162546611404367140</id><published>2009-08-13T15:53:00.000-07:00</published><updated>2009-08-13T16:03:29.232-07:00</updated><title type='text'>toaster</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Geneva; font-size: 14px; line-height: 22px; "&gt;总共有3000只香蕉，有一只骆驼每一次只能带 1000只香蕉，每1公里吃1只香蕉，没有香蕉吃&lt;br /&gt;它是不肯走的，A-B 点距离1000公里，如果这个骆驼要从A点到B点有什么办法可以让更&lt;br /&gt;多的香蕉剩下来？如何做到？如何最有效率的运最多的香蕉到B点？&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;第一次到200Km处放下600橡胶返回&lt;br /&gt;第二次到2OOKm处再装上200橡胶前行，到533KM处放下334橡胶返回，返程中在200Km在装200&lt;br /&gt;第三次在200Km处装上200橡胶前行，在533Km处装上333橡胶前行，此时还是满载1000橡胶&lt;br /&gt;最后剩下533橡胶&lt;br /&gt;问题的焦点在于，如何使最后满载点（1000香蕉）离终点最近？而此时已经消耗了2000=2X(第一次距离）+3Y（第二次距离），所以还得必须使X最短，而5X大于等于1000才不至于浪费（丢在路上）橡胶。&lt;br /&gt;&lt;br /&gt;故第一次200Km&lt;br /&gt;第二次533Km&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;(1) it can be proved that the intermidate points must be the same.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;(2) the first distance can be 100m, 200m, etc. it makes no difference. the key point is to reduce the number of rounds. comsuming the first 1000 bannas. divided by 5, then it is 200m. the second round, divided by 3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Geneva;font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;这个问题是不是可以这么延伸:&lt;br /&gt;&lt;br /&gt;3k 香蕉 路上停两次, 4K香蕉 是不是就变成&lt;br /&gt;&lt;br /&gt;2x + 2y + 3z = 3000&lt;br /&gt;&lt;br /&gt;并且 7x &gt;= 1000, 5 (y-x) &gt;= 1000&lt;br /&gt;&lt;br /&gt;x = 142 y = 342 z = 675&lt;br /&gt;&lt;br /&gt;5k 香蕉 就是&lt;br /&gt;&lt;br /&gt;111, 253, 453, 786&lt;br /&gt;&lt;br /&gt;以此类推, n k 香蕉最佳路径为&lt;br /&gt;&lt;br /&gt;point 1 = 1000/ (2n-1),&lt;br /&gt;point 2 = p1 + 1000 / (2n-3)&lt;br /&gt;point 3 = p2 + 1000 / (2n-5)&lt;br /&gt;...&lt;br /&gt;keep this until (2n-x) &lt;= 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;基本上就是每进一步都消耗1000香蕉, 这样不浪费运力&lt;br /&gt;&lt;br /&gt;到2n-1 &gt; 15的时候, 开始溢出, 保证能运到终点, 也就是需要8k香蕉, 保证必有至少1k香蕉到终点...&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/3070186580249183534-8162546611404367140?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8162546611404367140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8162546611404367140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8162546611404367140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8162546611404367140'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2009/08/toaster.html' title='toaster'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7729957351509913738</id><published>2009-02-03T17:36:00.001-08:00</published><updated>2009-02-03T17:36:35.796-08:00</updated><title type='text'>TCP Sockets vs UNIX Domain Sockets</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: verdana; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;div class="posttitle" style="margin: 0px; padding: 0px;"&gt;&lt;h2 style="margin: 1em 0px 0px; padding: 0px; font-family: Georgia,Verdana,Arial,serif; font-size: 1.5em; font-weight: normal; line-height: 1.4em; letter-spacing: 0px;"&gt;&lt;a href="http://www.rodrickbrown.com/blog/"&gt;http://www.rodrickbrown.com/blog/&lt;/a&gt;&lt;/h2&gt;&lt;h2 style="margin: 1em 0px 0px; padding: 0px; font-family: Georgia,Verdana,Arial,serif; font-size: 1.5em; font-weight: normal; line-height: 1.4em; letter-spacing: 0px;"&gt;&lt;a href="http://rodrickbrown.com/blog/?p=135" rel="bookmark" title="Permanent Link to TCP Sockets vs UNIX Domain Sockets" style="border-bottom: 1px solid rgb(153, 102, 51); margin: 0px; padding: 0px; text-decoration: none; color: rgb(38, 94, 21);"&gt;TCP Sockets vs UNIX Domain Sockets&lt;/a&gt;&lt;/h2&gt;&lt;p class="post-info" style="margin: 0px; padding: 0px 0px 15px; line-height: 1.8em; clear: both; font-size: 0.9em; color: rgb(153, 153, 153); background-image: url(http://rodrickbrown.com/blog/wp-content/themes/mistylook/img/underline1.jpg); background-repeat: no-repeat; background-position: 0% 100%;"&gt;Aug 6th, 2008 by&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://rodrickbrown.com/blog/?author=1" title="Posts by admin" style="margin: 0px; padding: 0px; text-decoration: none; color: rgb(38, 94, 21);"&gt;admin&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry" style="margin: 1em 0px; padding: 0px 1em 0px 0px;"&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;- UNIX domain sockets use the file system as the address name space.  This&lt;br /&gt;means you can use UNIX file permissions to control access to communicate&lt;br /&gt;with them.  I.e., you can limit what other processes can connect to the&lt;br /&gt;daemon — maybe one user can, but the web server can’t, or the like.&lt;br /&gt;With IP sockets, the ability to connect to your daemon is exposed off&lt;br /&gt;the current system, so additional steps may have to be taken for&lt;br /&gt;security.  On the other hand, you get network transparency.  With UNIX&lt;br /&gt;domain sockets, you can actually retrieve the credential of the process&lt;br /&gt;that created the remote socket, and use that for access control also,&lt;br /&gt;which can be quite convenient on multi-user systems.&lt;/p&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;- IP sockets over localhost are basically looped back network on-the-wire&lt;br /&gt;IP.  There is intentionally “no special knowledge” of the fact that the&lt;br /&gt;connection is to the same system, so no effort is made to bypass the&lt;br /&gt;normal IP stack mechanisms for performance reasons.  For example,&lt;br /&gt;transmission over TCP will always involve two context switches to get to&lt;br /&gt;the remote socket, as you have to switch through the netisr, which&lt;br /&gt;occurs following the “loopback” of the packet through the synthetic&lt;br /&gt;loopback interface.  Likewise, you get all the overhead of ACKs, TCP&lt;br /&gt;flow control, encapsulation/decapsulation, etc.  Routing will be&lt;br /&gt;performed in order to decide if the packets go to the localhost.&lt;br /&gt;Large sends will have to be broken down into MTU-size datagrams, which&lt;br /&gt;also adds overhead for large writes.  It’s really TCP, it just goes over&lt;br /&gt;a loopback interface by virtue of a special address, or discovering that&lt;br /&gt;the address requested is served locally rather than over an ethernet&lt;br /&gt;(etc).&lt;/p&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;- UNIX domain sockets have explicit knowledge that they’re executing on&lt;br /&gt;the same system.  They avoid the extra context switch through the&lt;br /&gt;netisr, and a sending thread will write the stream or datagrams directly&lt;br /&gt;into the receiving socket buffer.  No checksums are calculated, no&lt;br /&gt;headers are inserted, no routing is performed, etc.  Because they have&lt;br /&gt;access to the remote socket buffer, they can also directly provide&lt;br /&gt;feedback to the sender when it is filling, or more importantly,&lt;br /&gt;emptying, rather than having the added overhead of explicit&lt;br /&gt;acknowledgement and window changes.  The one piece of functionality that&lt;br /&gt;UNIX domain sockets don’t provide that TCP does is out-of-band data.  In&lt;br /&gt;practice, this is an issue for almost no one.&lt;/p&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;In general, the argument for implementing over TCP is that it gives you&lt;br /&gt;location independence and immediate portability — you can move the client&lt;br /&gt;or the daemon, update an address, and it will “just work”.  The sockets&lt;br /&gt;layer provides a reasonable abstraction of communications services, so&lt;br /&gt;it’s not hard to write an application so that the connection/binding&lt;br /&gt;portion knows about TCP and UNIX domain sockets, and all the rest just&lt;br /&gt;uses the socket it’s given.  So if you’re looking for performance locally,&lt;br /&gt;I think UNIX domain sockets probably best meet your need.  Many people&lt;br /&gt;will code to TCP anyway because performance is often less critical, and&lt;br /&gt;the network portability benefit is substantial.&lt;/p&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;Right now, the UNIX domain socket code is covered by a subsystem lock; I&lt;br /&gt;have a version that used more fine-grain locking, but have not yet&lt;br /&gt;evaluated the performance impact of those changes.  I’ve you’re running in&lt;br /&gt;an SMP environment with four processors, it could be that those changes&lt;br /&gt;might positively impact performance, so if you’d like the patches, let me&lt;br /&gt;know.  Right now they’re on my schedule to start testing, but not on the&lt;br /&gt;path for inclusion in FreeBSD 5.4.  The primary benefit of greater&lt;br /&gt;granularity would be if you had many pairs of threads/processes&lt;br /&gt;communicating across processors using UNIX domain sockets, and as a result&lt;br /&gt;there was substantial contention on the UNIX domain socket subsystem lock.&lt;br /&gt;The patches don’t increase the cost of normal send/receive operations, but&lt;br /&gt;due add extra mutex operations in the listen/accept/connect/bind paths.&lt;/p&gt;&lt;p style="margin: 0.7em 0px; padding: 0px; line-height: 1.8em;"&gt;Robert N M Watson&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-7729957351509913738?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7729957351509913738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7729957351509913738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7729957351509913738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7729957351509913738'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2009/02/tcp-sockets-vs-unix-domain-sockets.html' title='TCP Sockets vs UNIX Domain Sockets'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-517510366765896951</id><published>2009-02-01T16:17:00.000-08:00</published><updated>2009-06-07T14:36:15.216-07:00</updated><title type='text'>English</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: small;"&gt;thank you for banking with xx. we truly appreciate your business. please don't hesitate to contact e with any questions. Sincerely,&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 22px; font-family:simsun;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The Nereus engineering team knew that, to reach these depths, a tethered robot using traditional technologies &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;would be prohibitively expensive &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to build and operate.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;used unique technologies and innovative methods to &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;strike a balance&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; between size, weight, materials cost, and functionality.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Building on previous experience developing tethered robots and autonomous underwater vehicles (AUVs) at WHOI and elsewhere, the team &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;fused the two approaches together&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; to develop a hybrid vehicle that could fly like an aircraft to survey and map broad areas and then be converted at sea into a tethered, remotely operated vehicle (ROV) that can hover like a helicopter near the seafloor to conduct experiments or to collect biological or rock samples under real-time human control.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The tethering system &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;presented &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;one of the greatest &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;challenges&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; in developing a cost-effective ROV capable of reaching these depths.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If such a cable were used to reach the seafloor in the Mariana Trench, it would snap under its own weight.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;To &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;solve&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; this challenge, the Nereus team adapted .. to&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; carry &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;real-time video and other &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;data&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; between the Nereus and the surface crew&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Similar in diameter to &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;a human hair and with a breaking strength of only 4 kilograms (8.8 pounds), the tether &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;is composed of &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;glass fiber core&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Another&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; weight-saving advance&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; of the vehicle is its use of ceramic spheres for flotation, &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;rather than &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;the much heavier traditional syntactic foam used on vehicles like the submersible Alvin or the ROV Jason.  &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to withstand crushing pressures.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;make effective use &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;of the vehicle's limited battery power. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;It allows vast areas to be explored &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;with great effectiveness.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:simsun;color:#FF0000;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:simsun;color:#FF0000;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;but unleashing a capability that now enables deep exploration, &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;unencumbered&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; by a heavy tether and surface ship,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A one-hour documentary produced by Discovery Studios will &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;air on&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Science Channel &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;we’re eager for&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Nereus to &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;become widely used &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;to explore the most inaccessible reaches of the ocean&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style=" line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; its primary mission is to understand the oceans and their interaction with the Earth as a whole, and to &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;communicate &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;a basic understanding of the oceans’ role in the changing global environment. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:simsun;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; "&gt;&lt;span class="Apple-style-span" style="font-family: arial; line-height: normal; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If&lt;br /&gt;any one provide me questions or any other way of&lt;br /&gt;getting the questions or accessing the brainbench then&lt;br /&gt;it will be of great help.&lt;br /&gt;&lt;br /&gt;Thanks in advance.&lt;/span&gt;&lt;/span&gt;&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/3070186580249183534-517510366765896951?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/517510366765896951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=517510366765896951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/517510366765896951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/517510366765896951'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2009/02/english.html' title='English'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-1214060865866939118</id><published>2009-01-23T00:58:00.001-08:00</published><updated>2009-01-23T00:58:52.024-08:00</updated><title type='text'>proxy</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 宋体; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="p2" id="text18293926" style="font-family: 宋体; font-size: 14.8px;"&gt;&lt;br /&gt;1下载安装tor:&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://download.pchome.net/internet/server/router/download-34060.html" target="_blank" class="ilink" style="text-decoration: underline; color: rgb(0, 0, 255);"&gt;http://download.pchome.net/internet/server/router/download-34060.html&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;2 下载安装firefox网络浏览器（以取代微软的ie）&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;3 最后，再下载&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="https://addons.mozilla.org/firefox/2275/" target="_blank" class="ilink" style="text-decoration: underline; color: rgb(0, 0, 255);"&gt;https://addons.mozilla.org/firefox/2275/&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;然后在你FIREFOX右下角就有个TOR按钮，点一下就可以绕过屏蔽，恢复正常再点一下即可.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-1214060865866939118?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/1214060865866939118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=1214060865866939118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1214060865866939118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1214060865866939118'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2009/01/proxy.html' title='proxy'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-6469055367429270026</id><published>2008-12-24T01:29:00.001-08:00</published><updated>2008-12-24T01:29:19.216-08:00</updated><title type='text'>virus information</title><content type='html'>http://web.cecs.pdx.edu/~bjorn/virus/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-6469055367429270026?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/6469055367429270026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=6469055367429270026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6469055367429270026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6469055367429270026'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/virus-information.html' title='virus information'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4735261643245712428</id><published>2008-12-17T16:20:00.001-08:00</published><updated>2008-12-17T16:20:33.745-08:00</updated><title type='text'>JTAG</title><content type='html'>&lt;tt&gt;In this context it refers to a standard interface developed for testing&lt;br /&gt;complex ICs in circuit on a PCB. The interface has been adapted by many&lt;br /&gt;manufacturers for other purposes, in particular the ARM7 core has a debug&lt;br /&gt;module that uses the JTAG interface to communicate with a set of on-board&lt;br /&gt;circuitry that acts as a 'mini-ICE' allowing breakpoints to be set and&lt;br /&gt;memory to be read and written.&lt;br /&gt;&lt;br /&gt;Several manufacturers build JTAG interfaces to communicate over this port&lt;br /&gt;with debugging SW. Since using this you have full access to the memory it&lt;br /&gt;is possible to use this interface to program the flash as well. The&lt;br /&gt;adapters and associated software range over a large range in terms of both&lt;br /&gt;price and sophistication.&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4735261643245712428?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4735261643245712428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4735261643245712428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4735261643245712428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4735261643245712428'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/jtag.html' title='JTAG'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2954489294297469813</id><published>2008-12-17T14:27:00.001-08:00</published><updated>2008-12-17T14:27:38.666-08:00</updated><title type='text'>使用各种ARM的仿真器后,比较总结了以下以下心得</title><content type='html'>&lt;tr&gt;&lt;td align="center"&gt;&lt;span style="color: rgb(102, 102, 102); font-size: 16px; font-weight: bold;"&gt;使用各种ARM的仿真器后,比较总结了以下以下心得:&lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt;     &lt;tr align="middle"&gt;       &lt;td class="listcontent" id="fontzoom" valign="top" align="left" height="293"&gt;       &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;本人使用各种ARM的仿真器后,比较总结了以下以下心得:&lt;br /&gt;本人使用过的仿真器有: MultiICE(当然是xxx的). &lt;a name="baidusnap0"&gt;&lt;/a&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;, JEDI, JEENI, ARMice,trace32&lt;br /&gt;比较1：支持CPU的种类：&lt;br /&gt;应该来讲，trace32最多，MultiICE次之；&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;wiggler&lt;/b&gt;的最少。JEDI次少，JEENI及ARMice差不多&lt;br /&gt;得分： Trace32: 10；MultiICE 9; JEENI: 7; ARMice: 7; JEDI: 5 &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt; 3&lt;br /&gt;&lt;br /&gt;比较2：速度&lt;br /&gt;我下载8Mbyte的Linux到2410的板上；时间各为如下&lt;br /&gt;ARMice: 14s; Trace: 61s; MultiICE 72s; JEDI: 114s; JEENI: 266s. &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 1328s&lt;br /&gt;可以看出， ARMice是领先很大，&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;是无法忍受了&lt;br /&gt;得分： ARMice: 10;Trace32: 8；MultiICE 7; JEDI: 5；JEENI: 3; &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt; 2&lt;br /&gt;&lt;br /&gt;比较3：支持软件以及软件的友善度，可靠性&lt;br /&gt;MultiICE: 能用ADS等支持RDI的软件&lt;br /&gt;JEENI：能用ADS等支持RDI的软件&lt;br /&gt;ARMice: 能用ADS等支持RDI的软件及GDB (Linux及Windows平台下)&lt;br /&gt;JEDI：自己公司的Hitool 软件； 不能接第三放的软件&lt;br /&gt;Trace32: 自己公司的软件；不能接第三放的软件&lt;br /&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 很麻烦使用其他的软件&lt;br /&gt;得分： ARMice: 10; MultiICE 9; JEENI 9；Trace32: 8；JEDI: 4； &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt; 2&lt;br /&gt;&lt;br /&gt;比较4：支持Linux方面&lt;br /&gt;MultiICE: 要通过MultiICE GDB server等软件来连接，比较麻烦使用，而且，速度很慢（windows及Linux下都有）&lt;br /&gt;JEENI: GDB通过配制后，可以直接连（windows及Linux下都有）&lt;br /&gt;ARMice: GDB可以直接连，（windows及Linux下都有）&lt;br /&gt;JEDI: 可以直接调试Linux, （在windows下）&lt;br /&gt;Trace32: 不行&lt;br /&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 不行&lt;br /&gt;得分： JEDI: 9; JEENI: 8; ARMice 7; MultiICE 6；Trace32: 0；JEDI: 0； &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt; 0&lt;br /&gt;&lt;br /&gt;比较5：烧Flash 方面&lt;br /&gt;JEENI，　ＭultiICE, 不能烧Flash&lt;br /&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 支持众多（要另外加500USD,或用盗版的）&lt;br /&gt;JEDI: 支持一个Flash,其他的要客户自己写&lt;br /&gt;Trace32: 支持了众多的Flash,但在操作上有些复杂&lt;br /&gt;ARMice: 支持了众多的Flash，使用方便&lt;br /&gt;得分： ARMice 10;trace32:９；&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt; ８；JEDI: 3; embest １; JEENI: ０; MultiICE ０；&lt;br /&gt;比较6：稳定性方面&lt;br /&gt;Ｔrace32: 10; MultiICE: 9; JEENI: 8  ARMice: 6; JEDI: 4  &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 3; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;比较7：价格&lt;br /&gt;Trace32, 非常贵，= 50000 RMB&lt;br /&gt;MultiICE: 如果正板的很贵，如果是xxxx版的，就不贵了（下面打份是按xxxx版打）&lt;br /&gt;JEENI: 20000RMB&lt;br /&gt;JEDI: 30000RMB&lt;br /&gt;ARMice: 3800-10000RMB&lt;br /&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 如果是xxxx版的，就不贵了（下面打份是按xxxx版打）&lt;br /&gt;以最贵的为0份打的话：&lt;br /&gt;Trace32: 0; JEDI: 2  JEENI: 3; ARMice: 8   MultiICE: 8  &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 10&lt;br /&gt;&lt;br /&gt;总分：&lt;br /&gt;Trace32: 45分&lt;br /&gt;MultiICE:　48分&lt;br /&gt;ARMice: 58分&lt;br /&gt;JEDI: 32分&lt;br /&gt;JEENI: 38分&lt;br /&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;Wiggler&lt;/b&gt;: 28分&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-2954489294297469813?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2954489294297469813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2954489294297469813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2954489294297469813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2954489294297469813'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/arm.html' title='使用各种ARM的仿真器后,比较总结了以下以下心得'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7907721677899412655</id><published>2008-12-15T12:05:00.000-08:00</published><updated>2009-04-21T20:21:34.649-07:00</updated><title type='text'>English studying</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(1) they travel in search of hope&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(2)make migraines act up&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(3) they don't stand a chance&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(4)give up your arms you won't be killed&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(5)&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 255); line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I have already joined myself in marriage to a husband, namely the kingdom of England.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 255); line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(6)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;We portray peer review to the public as a quasi-sacred process that helps to make science our most objective truth teller. But we know that the system of peer review is biased, unjust, unaccountable, incomplete, easily fixed, often insulting, usually ignorant, occasionally foolish, and frequently wrong&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(7)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;None as of yet&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(8)&lt;/span&gt;&lt;span class="Apple-style-span"  style="  line-height: 19px; font-family:Arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The Pentagon views China as the country most likely, at some point down the road, to acquire the capacity to xxx&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; line-height: 19px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(9)The U.S. in recent years &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;has moved to strengthen&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; its forces &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; line-height: 19px;"&gt;(10)&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;some talk up the "xxx" to justify greater spending&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 19px;"&gt;(11)In an interview with xxx&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt; ahead of the navy's 60th anniversary next week&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: Arial; font-size: 13px; line-height: 19px;"&gt;(12)&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;China's armed forces are still &lt;/span&gt;no match for &lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;U.S. firepower &lt;/span&gt;at &lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;sea, &lt;/span&gt;on&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt; land or&lt;/span&gt; in&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt; space. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; line-height: 19px;"&gt;(13)Why don't you &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;take on&lt;/span&gt; sb. your own size?    与人较量&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/3070186580249183534-7907721677899412655?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7907721677899412655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7907721677899412655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7907721677899412655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7907721677899412655'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/english-studying_15.html' title='English studying'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7593331180315358252</id><published>2008-12-07T18:04:00.000-08:00</published><updated>2008-12-12T19:32:47.111-08:00</updated><title type='text'>English studying</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;we are writing to you because we noticed that ... &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;we believe this may indicate that the account no longer &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 255, 51);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;meets&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; your financial need&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;With this in mind,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; the  account has been closed.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;to ensure that&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; you don't inadventently attempt to use this cards on this closed account, please destroy any cards or &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;convenience checks&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; associated with this account.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;we will send an update to the credit bureaus within the next 60 days to &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;ADVISE&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; that this account is closed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;we have appreciated the opportunity to server your credit needs, and we hope to have the opportunity to serve you again &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;AT SOME POINT&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; in the future.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(2)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;we regret that we &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;are unable to process&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; because your request did not meet the following requirements.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(3)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;the mortgage with nothing to hide, a mortgage, isn't filled with surprise&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;, without any haggling, you benefit from, low closing costs.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(4) depositing money is simple ! withdrawal&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; are easy!&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(5) we &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; the security of your account, we would like to verify these actions.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(6) xx &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;will be responsible for&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; the overall management of xx and xx as well as ....&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(7)General manager, xx, announced the appointment of xx to manager of xx, reporting to xx.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(8) he has &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;served as&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; manager of &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(9) this is to&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; express my personal appreciation&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; and the appreciation of xx for your efforts in putting us in the winner's circle with xx for the &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(10) I am &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;of the firm opinion&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; that the program will mean much to our country and the world when the xx becomes operational.  it has been and will continue to be a exciting program.  i thought you might like  a copy of the attached photograph of &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(11) during &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 204, 204);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;a recent visit&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; to xx, i was informed ... &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;at your request&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. this &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 255, 51);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;news interests me greatly&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(12) &lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I had conceived both, personally designed the former, and managed the development, production and flight testing of both, now more than ten years ago.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(13) the &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;rapid progression of&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; technology,  it had made the large scale operational deployment of our xxx practical, It significantly contributed to xxx. The basic principles developed and established at that time &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;are still being followed&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; and used in today's refined models.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(14)  I well remember the &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;excitement, doubt and conviction&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; associated with the postulation and subsequent demonstration of the feasibility of designing a solid state xxx for use in &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;the rugged environment&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; of a xx system;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(15) Seeing through their birth, outliving the challenges, growth and eventual embodiment in proven and reliable equipment was a&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; maturing experience&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(16) I also remember the long days and nights when thousands of my colleagues &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;labored &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 204, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;with devotion and skill&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; to convert the ideas into&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; workable models in the laboratory, producable hardware in the factory, reliable equipment in flight tests and finally the "brains" of this xx. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(17) I am very proud and very please to know that one of these original models will now survive in your institution. I &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;shall be happy&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; to provide any help that may be useful.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);   line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(17) &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;if opportunity presents itself&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(34, 34, 34);  line-height: 26px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(18) score a well-paying job AT an accounting firm, xx&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  line-height: normal; font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; was hired as a senior manager for xx as of last week, handing out his résumé to &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;passers-by (passerby)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(19)&lt;/span&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"This is not the time to let these companies go bankrupt," Domenici told ABC News. "We would just &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;be compounding&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; our economic problems."&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(20)  is in talks with  xx on &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 102);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;crafting&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; yet another compromise.  negotiating table,We are further down the road than I thought we'd be&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(21) &lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;negotiations were under way&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 19px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(22)&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(70, 70, 70);   line-height: 21px; font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;it is still high by most standards&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(70, 70, 70);  line-height: 21px;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(23)staple meat&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(70, 70, 70);  line-height: 21px;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(24) &lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);   line-height: 23px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;lead to a &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="  line-height: 23px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;devastating ripple effect&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);   line-height: 23px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; throughout our economy.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  line-height: 23px;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(25) I &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;raised concerns&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; about the health , I &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;urged&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; them to &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;act quickly&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; to adopt new technologies,that would help them &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;stay competitive&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; in these changing times&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" line-height: 23px; font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;（26）&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); line-height: 26px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;because for years I thought what was good for the country was good for General Motors and vice versa&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); font-family: Verdana; line-height: 26px;"&gt;(27)&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-size: 13px; line-height: 15px; "&gt;governor has "bigger things to worry about"&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/3070186580249183534-7593331180315358252?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7593331180315358252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7593331180315358252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7593331180315358252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7593331180315358252'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/english-studying.html' title='English studying'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-9017602651725077881</id><published>2008-12-07T18:03:00.000-08:00</published><updated>2008-12-07T18:04:25.032-08:00</updated><title type='text'>storage</title><content type='html'>&lt;a href="http://www.filefactory.com/"&gt;http://www.filefactory.com/&lt;/a&gt;&lt;div&gt;&lt;a href="http://www.zshare.net/"&gt;http://www.zshare.net/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://skydrive.live.com/"&gt;http://skydrive.live.com/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.scribd.com/"&gt;http://www.scribd.com/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&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/3070186580249183534-9017602651725077881?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/9017602651725077881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=9017602651725077881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/9017602651725077881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/9017602651725077881'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/storage.html' title='storage'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-3235861722391158259</id><published>2008-12-03T00:58:00.000-08:00</published><updated>2008-12-03T00:59:08.607-08:00</updated><title type='text'>open source PCB suite</title><content type='html'>&lt;a href="http://www.lis.inpg.fr/realise_au_lis/kicad/"&gt;http://www.lis.inpg.fr/realise_au_lis/kicad/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-3235861722391158259?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/3235861722391158259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=3235861722391158259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3235861722391158259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3235861722391158259'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/open-source-pcb-suite.html' title='open source PCB suite'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8918003414203095149</id><published>2008-12-02T17:06:00.001-08:00</published><updated>2008-12-03T00:15:29.141-08:00</updated><title type='text'>linux driver</title><content type='html'>&lt;h1&gt;Porting device drivers to the 2.6 kernel&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;http://lwn.net/Articles/driver-porting/&lt;br /&gt;&lt;br /&gt;skeleton&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.captain.at/howto-linux-device-driver-template-skeleton.php"&gt;http://www.captain.at/howto-linux-device-driver-template-skeleton.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-8918003414203095149?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8918003414203095149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8918003414203095149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8918003414203095149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8918003414203095149'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/12/linux-driver.html' title='linux driver'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4027309566215705686</id><published>2008-10-19T21:57:00.001-07:00</published><updated>2008-10-19T21:57:35.439-07:00</updated><title type='text'>经济热点透视</title><content type='html'>主持人：尊敬的各位领导、各位来宾，欢迎大家来到阳光100财富&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%D6%D0%B9%FA" onclick="tagshow(event)" class="t_tag"&gt;中国&lt;/span&gt;系列活动 财富论坛烟台站的活动现场，非常容幸今天能够和大家一起在这样一个暖暖的午后一起聆听世界顶级的经济学家给我们带来的全新思维盛宴。。。。。。&lt;br /&gt;&lt;br /&gt;　　朗&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%BD%CC%CA%DA" onclick="tagshow(event)" class="t_tag"&gt;教授&lt;/span&gt;：今天很高兴，能够来到烟台谈谈让人沮丧的题目，当前经济&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%C8%C8%B5%E3" onclick="tagshow(event)" class="t_tag"&gt;热点&lt;/span&gt;透 视，你只要谈到当前经济热点，都是坏消息。那么，请各位来宾想想，你面临的最大的危机是什么？我可以这样告诉你，我们中国改革开放30年，基本是成功，尤 其是10余年来，我们经济高度发展的结果孕育出了在座各位一大批企业家。可是你知道吗？由于你所处的环境太顺了，我国经济增长太成功，因此你们这批企业 家，只有个人的艰辛的奋斗历程，全中国的政府官员，全体企业家没有一个人经历过马上要发生的经济危机。昨天晚上到现在，竟然有几个企业家问我一句话，朗教 授你看看现在还有什么有潜力的行业我想&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%CD%B6%D7%CA" onclick="tagshow(event)" class="t_tag"&gt;投资&lt;/span&gt;的，我只想三个字我说你疯了，你什么也不懂。你把人生看得太简单，你过去怎么成功的？你过去是顺着改革的潮流成功的，我告诉你在今天这刻是每位在座的企业家反思的事。我们的未来是什么？请各位来宾看看今天提供的&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%CA%FD%BE%DD" onclick="tagshow(event)" class="t_tag"&gt;数据&lt;/span&gt;，美国&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B9%C9%CA%D0" onclick="tagshow(event)" class="t_tag"&gt;股市&lt;/span&gt;从年初到现在，跌了？蒸发了多少亿&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%D7%CA%BD%F0" onclick="tagshow(event)" class="t_tag"&gt;资金&lt;/span&gt;？8.5万亿美元是什么概念？这就是我们中国05、06、07三年GDP的总和全部白干了，一个国家的股市跌了这么多，它所象征的后续是极其可怕的，那就是一个持续的大萧条即将来临。&lt;br /&gt;&lt;br /&gt;　　而中国的股市，虽然过去有所谓的泡沫现象，但是在这里我得很遗憾地告诉各位中国股市已经跌了超过70%，这和美国1929年股市崩盘差不多，这种股市&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B4%F3%B5%F8" onclick="tagshow(event)" class="t_tag"&gt;大跌&lt;/span&gt;是什么意义？为什么我在去年年底的时候，我敢预言中国股市大跌，就在今年五月份我在凤凰卫视《铿锵三人行》我呼吁全国股民不要对&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B0%C2%D4%CB" onclick="tagshow(event)" class="t_tag"&gt;奥运&lt;/span&gt;有幻想，&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B9%C9%BC%DB" onclick="tagshow(event)" class="t_tag"&gt;股价&lt;/span&gt;一 定会持续下跌，讲这句话不是一个简单的我有没有胆识、敢不敢讲的问题，我为什么这样讲，当然你们知道我这样讲是对的，中国股价一反世界潮流，什么叫做世界 潮流呢？那就是任何奥运主办国的国家都在奥运前大幅攀升，奥运后大幅下跌，我为了讲中国股价会下跌呢，因为我已经看到了经济危机，很多人说朗教授你的争议 性比较大，我说你们是错的，我从来没有，因为我讲的到最后都会实现的。&lt;br /&gt;&lt;br /&gt;　　请各位想想，世界经济的次贷危&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%BB%FA%BB%E1" onclick="tagshow(event)" class="t_tag"&gt;机会&lt;/span&gt;对 你造成什么冲击？在这刻我姑且把这个话题束之高阁，我先不告诉你，我可以告诉你更可怕的是危机没有来之前，我国已经产生了危机，那就是从前年到去年的股市 泡沫和楼市泡沫现象，这种泡沫现象，各位来宾你们以为是我们中国经济发展更成功了吗？你认为是我们中国老百姓更富裕了吗？因此有更多的闲钱炒股吗？不是 吧？我在去年年初又讲了一句话争议性的话，很多学者不高兴，我说股市泡沫跟楼市泡沫的本质不是经济更好了，不是我们更富裕了，而是制造业的回光返照，这是 什么意思？我国制造业企业家所面临的投资环境已经开始急速恶化，因此，很多企业家把应该投资在制造业的钱不投资的，拿出来去干吗呢？炒楼炒股了因此大量的 企业资金进入股市、楼市才是楼市泡沫和股市泡沫的真正原因。&lt;br /&gt;&lt;br /&gt;　　按照我的说法，下一步应该是制造业的大量倒闭，为了把我当时的观点记录在案，我绝对不放马后炮，我写了一篇文章叫做《八大危机》，出来以后，点击率超 过一个亿，虽然很轰动，但是像我的人生一样从来不得到重视，因为大家都喜欢专家、学者谈一万点、八千点，不喜欢听我讲实话，不幸的是今年的经济按照我去年 所说的八大危机一步一步发生。&lt;br /&gt;&lt;br /&gt;　　就在这个时刻，广东的媒体叫《南方人物周刊》对我做了一个专访，尤其是我写了八大危机之后，他们觉得不可思议，到现在我也记得，他说当全中国专家学者 说股市泡沫、楼市泡沫、多膨胀是由于流动性过剩的时候，郎咸平不同意，郎咸平说应该是制造业的回光返照，如果郎咸平是对的，那么全国的专家、学者都是错 的。因此，政府推行的宏观调控，不但不能解决问题，反而是一个落井下石的毒药，那是10年之前。我今天我有点羞答答，不好意思告诉你们，最后证明我是全国 唯一对的学者，其他的都错了。（掌声）&lt;br /&gt;&lt;br /&gt;　　否则你们这么忙，干吗听我在这里演讲呢？那么各位想想，什么叫做流动性过剩？我们的学者竟然认为，楼市泡沫、股市泡沫，还有通货膨胀，就是简单的流动性过剩，什么是流动性过剩？那就是我们手上的钱太多，买&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B9%C9%C6%B1" onclick="tagshow(event)" class="t_tag"&gt;股票&lt;/span&gt;， 股市泡沫；买楼房，楼市泡沫；买产品，通货膨胀，因此用一个所谓的流动性过剩的学术名词都可以简单解释07年发生的一切现象。那么，我们政府所推行的宏观 调控政策，竟然是以收回流动性为目的。其方法是提高利率跟提高银行利率和存款准备金率，到了年底经济工作会议更进一步加大力度，实行宏观调控。那么我请各 位来宾想一想，有没有可能全中国的学者都是错的？有没有可能流动性过剩就是错的？有没有可能因为流动性过剩所推行的宏观调控也是错的？在这里，很不幸的告 诉各位，这都是错的。因此，我们的制造业才如此的被动。中国经济根本就不是流动性过剩，胡说八道。由此产生的政策误导让我们的政府、让我们的企业付出了沉 重的代价。而且我们的学者特别喜欢粉饰太平、取悦领导，这种方法更是让我们的经济雪上加霜。&lt;br /&gt;&lt;br /&gt;　　今天我针对这一切的前提，跟各位从国内一直谈到国外，让各位清清楚楚知道我国经济出了什么问题，为什么会产生泡沫现象，其实泡沫现象只是一个表面现 象，真正的原因是我们整个经济发展出现了重大危机。请各位想想，我们每年10%的经济增长是怎么来的？很多股民这么问我，朗教授你看我们经济增长这么成 功，每年 10%，我们的股票市场没有反映我们的经济增长的乐观现象嘛，我说你是错的，中国的股票市场是真真实实反映着我国经济的本质问题，你每年看到的10%的经 济增长本身都是有问题的。什么问题呢？那就是我们整个经济增长的模式是错的。我们是以什么方式拉动经济增长啊？我们是钢筋、水泥所拉动的，也就是说你们到 各地区看，各地政府搞的绿化也好，桥梁也好，这些东西拉动了中国的经济增长。那么这些部分是多少？这些部门占了经济总量的30%左右，也就是说和地方政府 推动GDP工程有关的部门拉动了经济增长。那么这些部门是中国经济真正过热的部门。&lt;br /&gt;&lt;br /&gt;　　那么其他的民营制造业呢？基本上过冷。这些部门只占了30%左右的部门是哪些部门呢？以去年为例，包括地产、政绩工程、形象工程、大型国企，其他的融资银行和&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%D6%A4%C8%AF" onclick="tagshow(event)" class="t_tag"&gt;证券&lt;/span&gt;公司等等，这些部门你知道去年的增长率是多少呢？就以去年为例，超过30%。30%的总量，它的成本率超过百分之三十几。一平摊下来，中国全国的经济增长应该是10%左右，理解了吗？我们的民营经济对国家的贡献是非常小的。&lt;br /&gt;&lt;br /&gt;　　因为我们这么多年把大量的资源投入在基础建设，基础建设也就是GDP工程建设推动了10几年来的经济发展。那么这个推动表面上看起来我国取得了光荣的 GDP，实际上我们为此付出了沉重的代价。我给你举个例子，什么叫做代价，这种发展模式使得我国GDP的组成非常的畸形、非常扭曲。我们拿我们的GDP和 欧美、日本等国比较，那些国家，他们是以消费需求为主要拉动的，也就是说当我想喝矿泉水的时候你生产矿泉水，当我想弹钢琴的时候你生产钢琴，我想打手机的 时候，你生产手机，很正常。因此他们的70%都是消费。我们刚好相反，我们的消费只有35%，只有别人的一半，我们的GDP是什么东西呢？都是你们在外面 看到的钢筋水泥，占到50%以上，欧美各国20%不到。&lt;br /&gt;&lt;br /&gt;　　各位了不了解这种经济会造成什么样的可怕的结果？那就是，由于我们国内的消费太少，因此，造成了大量的产能过剩，我们制造太多的消费不了，而且我们产 能过剩是怎么造成的呢？我们牺牲了我们的环境，破坏了我们资源，剥削了我们的劳工，因此，产能大幅扩张，而且产能大幅扩张到什么地步？到了我们老百姓消费 不了的地步，大量产品制造出来，我们只有30%的消费，因此能是出口创汇，把过剩产能生产出来的产品卖给外国，美其名曰是出口创汇，其实是埋下了定时炸 弹，就在 08年爆炸了，是什么因的炸弹呢？你想想，我们只消费的30%，而我们这么多的产能，这么多产品不得不出口给别的国家消费，不但破坏了环境剥削了劳工，同 时我们赚了大把的美元&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%CD%E2%BB%E3" onclick="tagshow(event)" class="t_tag"&gt;外汇&lt;/span&gt;，06年破的1万亿，07年破的1.5万亿，08年破了1.8万亿，现在正在破1.9万亿，讲问以后就是1.9万亿了。外汇大量积累的结果使得我们这种被动以出口创汇为主导的畸形经济付上的沉重的代价，&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%C8%CB%C3%F1%B1%D2" onclick="tagshow(event)" class="t_tag"&gt;人民币&lt;/span&gt;不断升值，不断升值的结果，回过头来打击到这些以出口为主导的民营经济。&lt;br /&gt;&lt;br /&gt;　　所以，二元经济成型了，什么是二元经济，那就是真正拉动经济增长的与政府推动GDP工程有关的部门过热，而其他的民营制造业开始受到的严重的打击。汇 率上升首先敲响了70%的民营制造业的警钟，面临的投资环境开始紧缩。因此，过冷的部门更冷，相对而言，过热的部门更热。就在这个时刻，又由于成本的不断 上升，也就是国外的进口通货膨胀使得成本不断上升。进一步又打击到二元经济中过冷的民营制造业，它的投资环境更加恶劣。&lt;br /&gt;&lt;br /&gt;　　同时又在这个时刻，政府推出了劳动合同法，劳动合同法的本身意义是重大的，我身为&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%C8%F5%CA%C6" onclick="tagshow(event)" class="t_tag"&gt;弱势&lt;/span&gt;群 体代言人，我是非常支持这个方案的，但是这个方案的推出不能以双输为代价，必须要以双赢为的代价才有意义。第一缺乏反方向的论证，第二缺乏试点，匆忙推出 之后，中国过冷的民营制造业至少1/3以上造成严重打击。因此，过冷部门的民营企业家面临的投资环境进一步恶化。所以汇率，成本、劳动合同法，我还没有讲 到次贷危机，第四，政府不断加大宏观调控的力度。我不断呼吁这是错的，政府到现在才听进去，可是去年已经是数次提高利率，宏观调控的接连推出大力度的推 出，目的是什么？目的是降温，可是全国学者都搞错了，中国经济没有过热只是30%推动GDP工程的是过热的，而宏观调控推出的结果是彻底打击了过冷的民营 制造业，有的时候想想这个事情觉得很难过，很悲哀的，这么明显的事情，大家看不懂，我看懂了以后说郎咸平是有争议的人物，这就是我们学者对我的态度。&lt;br /&gt;&lt;br /&gt;　　好了，就在这个艰难的时刻，政府加大力度宏观调控是什么结果呢？通过了三个管道进一步打击了民营制造业。第一个管道，是在宏观调控的压力之下，银行从 过冷的制造业部门大量收会流动性资金，去干吗呢？不是放在银行里，放在银行里还好，拿出来以后拿给过热地方政府基础设施建设，这种做法使得社会的流动性由 过冷的制造业透过银行体系转到过热的银行政府中去的，因此过冷的部门更冷，过热部门由于吸收了大量的制造业的资金变得更热，这就是宏观调控的第一个管道。&lt;br /&gt;&lt;br /&gt;　　宏观调控的第二个管道呢，不断提高利率，不断提高银行存款准备金率的做法。再加上前面讲的汇率上升、成本上升、劳动合同法推出，因此使得二元制造业中 更干不下去了，他们怎么做呢？所以民营制造业的企业家就把应该投资在制造业的钱不投资了。拿出来，打到过热的部门去干吗呢？炒楼炒股去了。这就是从06年 到07 年所开始的股市泡沫、楼市泡沫的真正因素，那就是二元经济当中过冷的制造业持续衰退，他所面临的因此各种因素不断恶化，他们更不想干了。更不想干的结果回 去炒楼炒股。&lt;br /&gt;&lt;br /&gt;　　这就是一开始，我告诉各位房价涨得最高的区域，通常是制造业最箫条的区域，这是第二条管道，第三条管道呢？简称海尔现象。什么叫做海尔现象就是处在过 冷制造业的企业像海尔的家电制造业投资经商环境恶化，所以它也不想干的，因此从过冷的部门筹集大量的资金打到过热的部门干什么呢？&lt;br /&gt;&lt;br /&gt;　　这三个管道，造成什么结果呢？我重复一遍第一个管道，你会发现，各地的建设是如火如荼地推行，而且代价是民营制造业的资金更缺乏，资金逆流掉，造成了 过热部门修桥铺路去了，第二个管道使得大量的制造业资金炒楼炒股造成中国GDP现象的表面繁荣，这是可怕的，因为这个表面繁荣配合第三个管道大量资金流入 过热部门造成整个资源的误导。第二个管道和第三个管道的配合结果使得我国表面的繁荣，因此使得大部分，我不敢说是百分之百，差不多的、几乎百分之百的地产 商，在我今天讲话的这刻面临重大的危机。&lt;br /&gt;&lt;br /&gt;　　我前面讲的这一切现象，综合在一起，我相信你们从事企业的来宾，应该都听过，就是这么简单的。那么这种现象和流动性过剩有什么关系呢？胡说八道。讲到 今天我是那种水平的学者的话，我今天五秒钟讲完了，买股市股市泡沫，买楼楼市泡沫讲完了，不知道该讲什么了，我告诉你，我才刚开始，我还没有谈到次贷危 机。&lt;br /&gt;&lt;br /&gt;　　我国二元经济已经将我国的经济发展带入到了一个箫条的经济，就算美国没有次贷危机中国经济依然下滑，危机照跌，楼市照跌，注意没有谈到次贷危机我们就 已经抗不住了，你去年看到的股市泡沫已经给各位敲响了警钟，可能你们问我，朗教授，二元经济都听懂了，听懂了吗？你一开始讲的我们的股市跟楼市反应的基本 面是对的，我就以股市为例，为什么这么问呢，怪他自己，怪他不听我演讲，不学习，如果06年来听都发了，08年听也可以，现在来不及了，那就用我前面讲二 元经济现象，回答我们主持人的问题，为什么你会这样问呢？&lt;br /&gt;&lt;br /&gt;　　06年开始的股价大涨根本就不是尚福林说的股改，他胡说八道，他什么也没有搞懂，这点我都有点同情他，什么也没有搞懂，还搞这么多东西，现在我都不会生气了，还会义愤填膺地说，我无所谓，我也没有办法了。&lt;br /&gt;&lt;br /&gt;　　2005 年的时候我们透过媒体我警告尚福林千万不能推行股改，它是错的。你们也知道朗教授讲话是非常具体的，我过去讲什么情况下是成功的，什么情况是失败的，这个 话我不会讲，那是没有信心的学者搞的话，我很有信心，我说错一定会错，我说股改是错的，而且是百分之百错的，他不知道怎么回答了，箭在弦上，不得不发，什 么回答，我给他一个回答我说箭在弦上也得撤下，他不听我的。他说，那可能怀疑说，哎呦，既然朗教授说股改失败了，为什么06年开始国家大涨呢，我怎么会错 呢？我什么时候错了？我告诉你06年股价大涨的唯一原因就是二元经济已经开始生效，大量的制造业资金大量进入股市跟楼市。&lt;br /&gt;&lt;br /&gt;　　那么，股价大涨的现象到07年5月30号股指跌到3千点这个时候你们就应该来听我的演讲，你们相信别人说的八千点一万点，哪个时候你们买了什么股票 啊？买了二线蓝筹股是不是？所以从五月底到了11月从3千点到6千点你们买二线蓝筹的股民没有赚到钱，为什么没有赚到钱？因为当时拉动股指的都是&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B4%F3%C5%CC" onclick="tagshow(event)" class="t_tag"&gt;大盘&lt;/span&gt;股， 我们称之为2：8现象或者是3：7现象，20%多的股票拉动了股指，从3千点拉到了6千点，这个二八现象和三七现象的二或者是三是什么股票呢？是地产，钢 铁，水泥，政绩工程、形象工程、大型国企，其他融资银行还有证券公司等等，没有错吧？你们是不是觉得耳熟啊？这不就是二元经济当中过热部门吗？&lt;br /&gt;&lt;br /&gt;　　所以说，去年五月底到11月，股票市场已经完全反映了朗教授的二元经济，在这个时刻我是声嘶力竭地呼吁政府一定要解决这个问题。一定要开始救助制造业，因此这是制造业的回光返照。如果政府不出手救制造业到了，第二年制造业会大量的倒闭。&lt;br /&gt;&lt;br /&gt;　　后来证明我讲的是对的，就在这个时刻我写下了中国经济的八大危机的文章。你们如果到这个时刻还不来听我的演讲的时候，11月也该来听了吧，也没有来听，11 月我在&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B1%B1%BE%A9" onclick="tagshow(event)" class="t_tag"&gt;北京&lt;/span&gt;发 言，媒体对我的发言不敢兴趣，他们情愿报导说某某学者说八千点到1万点，我在北京发言，我是股价必跌，因为二元经济。你想向到了11月股指到了6千点是 20%、30%的部门拉动的，可以想想涨幅多快，这样快的涨幅一定要回调，所以二元经济中过热的部门一定要回调，而过冷民营制造业按照我当时掌控的数据是 迅速箫条，而且存在迅速倒闭的危机。二元经济中过热的部门一定要回调，股指一直跌，你根本不要怀疑，我还没有讲到次贷危机，次贷危机还没有来，我只是讲国 内的现状，只是告诉你们，目前全世界闹得金融海啸还没有冲击到你们，你们就已经到了这个地步了，你想想后面还有什么希望，这一切都是我们自己经济体系中孕 育出来的，和国际无关。&lt;br /&gt;&lt;br /&gt;　　为什么我在五月份的时候，我非常严肃地警告过全国股民，不要对奥运&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%D0%D0%C7%E9" onclick="tagshow(event)" class="t_tag"&gt;行情&lt;/span&gt;有 幻想，中国根本没有奥运行情，而且在节目中，当这期节目散布得很广，很多人看到的，我讲的具体到了什么地步，我呼吁全国股民，股价在奥运之前必跌根本没有 奥运行情，为什么？因为，二元经济全面箫条、崩溃的结果会使得股价大幅下跌，就像美国1929年一样，所以今天股价不断大幅下跌的现实意义，就显示着未来 制造业持续箫条。今年三月份我在广州照片记者招待会，我呼吁政府救市我要告诉大家，我们专家学者讲的都是废话，很多学者说政府不应该救市，让市场多元化， 这些都是胡说八道。没有经历过社会主义的的血的资本主义，它们是最市场化的一点，美国政府干什么，美国政府还不理解市场吗？他们是真正的资本主义国家，是 真正的市场化国家，请你看看美国政府在干什么？美国政府在救市，我们呢？市场化，让市场解决吧，胡说八道。这些学者，我一直不想想他们。现在不想他们不行 了。你说作为一个学者，就算你不做研究也理解，你胡说八道讲的话，也应该是一半对一半错的，你猜的，丢一下铜板的方法，像我们的学者每次都讲错那是更难 的。（掌声）&lt;br /&gt;&lt;br /&gt;　　像我每次都讲对，很不容易，每次都讲错更不容易。为什么救市？美国很蠢吗？不懂市场化吗？美国人才济济为什么要救市，为什么三月份开始要救市，我告诉 学者你根本不懂市场，那么在今天这个场合也是我第一次发言，谈到这个话题，我觉得对你们在座的企业家非常重要。因为，今天的中国已经进入了一个前所未有的 工商链条的时代，什么叫做工商链条？也就是说10年前我们从过去5 千年积累的农耕社会走向了工商链条的社会。&lt;br /&gt;&lt;br /&gt;　　工商链条有什么特性？那就是一个部门出现问题之后，一定会产生多米诺骨牌效应的连锁效应的产生。所以我就以我刚才讲的故事，给你们做一个解释就明白 了，为什么我们的消费这么多，只有30%，原因是什么？我们中国社会保障体系缺乏的，包括医疗、教育、住房的问题没有得到彻底解决之前，社会保障体系是不 足的。所以这个社会保障体系不足，你以为不足就不足啊，你以为不足就是看不起病啊，如果只是看不起病就好了，那就不是工商链条。农耕时代看不起病就看不起 病算了，现在工商链条时代一旦看不起病的结果，必定产生农耕时代所没有的多米诺骨牌效应。&lt;br /&gt;&lt;br /&gt;　　请你想在工商链条时代，当你看不起病之后你会怎么做？下一步是什么？你不敢消费了，你要存钱，万一你父母得了病怎么办？你小孩出国怎么办？你住房怎么 办？有了这些问题让你不敢消费。下一步骨牌呢？不敢消费使得我国消费非常低，占了GDP35%，下一张骨牌一定是生产过剩，再下一张骨牌必定是出口创汇， 再下一张是积累大量的美元外汇，再下一张是人民币汇率升值，再下一张打击了出口制造业，再下一张出口制造业倒闭，再下一张更不敢消费，再走一圈，这是无止 境地恶化循环，这就是工商链条时代的特征。&lt;br /&gt;&lt;br /&gt;　　我呼吁政府应该怎样做？应该在股市泡沫楼市泡沫的时候，最大的力度救助制造业什么目的？斩断工商链条，也就是说进入股市和楼市的资金是来自制造业的季 度衰退，政府应该做的是我在制造业部门设立防火墙，斩断工商链条，直接救助制造业，只要把制造业的营销环境搞上取的话，资金自然回流回来，一旦斩断的结果 就不会有股市泡沫，不会有楼市泡沫，就不会有现在一切的问题出来。各位听懂了吗？政府应该做的是由政府出面斩断工商链条而设立防火墙，这就是我前年开始一 直呼吁政府做的事，都听不懂。一直到事情崩溃之后，才说朗教授都说过。&lt;br /&gt;&lt;br /&gt;　　美国政府在干什么各位来宾想想？美国，是一个最资本主义的国家，没错吧？是最强调市场化的国家没错吗？而且共和党更强调，美国政府7千亿美元救市计划 的本质目的就是斩断工商链条，也就是当金融部门出现问题的时候，立刻设立防火墙来斩断工商链条，由政府工资7千亿直接救助那些受到影响的金融&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%BB%FA%B9%B9" onclick="tagshow(event)" class="t_tag"&gt;机构&lt;/span&gt;， 你只有把他们救活的以后，整个社会才会安定，否则按照我们中国这种专家、学者的水平的话，市场化不要干涉，你不要干涉结果，金融机构一旦崩溃产生大量的失 业，使得美国老百姓信心丧失，下一步干什么不敢消费了，下面是什么？制造业产生危机，再下一张骨牌生产力减少，再下一张骨牌失业，再一张骨牌不敢消费。好 了，开始一个恶性循环，所以说金融危机会由于美国政府的不作为，会产生实体经济的危机，各位听懂了吗？所以美国政府在干什么，比任何政府都要首先斩断工商 链条。就是怕金融危机波及到实体部门，而我们中国的危机来源不是金融危机而是来源于制造业的危机，我们没有斩断工商链条的结果，是使得制造业的危机波及到 股市和楼市，从而造成去年的股市和楼市泡沫把各位都套牢了。主持人问的是对的，我一看你的面，我就知道差不多都被套牢了，为什么呢，就是因为我们的政府没 有斩断工商链条。为什么没有斩断呢？专家学者所误导，为什么他们误导呢，他们根本不懂，农耕时代培养出来的学生没办法，都是错的。&lt;br /&gt;&lt;br /&gt;　　我相信我跟你们这样沟通以后，大家马上就懂了是这样一回事，原来美国政府正在斩断工商链条。我最近我看到美国的形势发展，我就告诉各位，我前面跟各位 讲的讲到现在，你注意到了没有，我一再告诉你，美国的次贷危机还没有影响到中国。就算是美国从来没有发生过次贷危机的话中国的股市也是这样跌，中国的楼盘 也是这样跌，因为中国制造业持续衰退结果，必然拉动股市和楼市的下滑。情况会逐日的恶化，不是逐年的恶化，也不是逐月的恶化是逐日的恶化，每天都会恶化。&lt;br /&gt;&lt;br /&gt;　　我记得昨天一个学者说，回应我的话对那种唱赞歌的人你应该警醒，整个国际金融形势比任何一个人想的都要难得多，但是没有冲击到中国，就在没有冲击到中 国的时候我们的楼市也产生了重大危机，我刚讲了股市，现在讲到楼市，哪里的企业倒闭多，哪里的资金快速流入楼市，比如深圳，大量制造业的资金打入深圳的楼 盘，而且，它的切入角度是高价楼盘。为什么？从中国台湾、亚太等地区的楼市历史来看，而长期依然看涨。06年初是1万元/平方米，到了年终是四万元/平方 米，大量资金流入，炒到了高端楼盘，附近的中低档楼盘随之水涨船高，真正有泡沫的是中低档楼盘，他们水涨船高，缺乏资金的支援，一旦今年箫条之后，跌价的 是中低档楼盘，高档楼盘依然坚挺，那就是地产商的资金链即将断裂，好了，即将断裂的结果就是高档楼盘抗住，那就是深圳目前的现状。&lt;br /&gt;&lt;br /&gt;　　在北京跟上海情况是一样的，高端楼盘价格上去以后，中低档楼盘随之水涨船高。所以北京也好，上海也好，中低档楼盘目前跌价最多，高端楼盘则不是。北京为例，三环之内，根据我的数据，还是为早，顺义跌得更多，就跟深圳的关外一样，上海也是一样，内环有行无市。&lt;br /&gt;&lt;br /&gt;　　最近潘石屹同志卖得不错的，我们查了一下他的资料，买潘石屹的资金51%来自山西煤老大，冲击了各级楼盘，冲击到了价格大涨。我要告诉各位，地产，长期而来，相对股票，以亚洲其他国家和地区为例，包括香港和台湾为例，它还是比较能抗通货膨胀的。&lt;br /&gt;&lt;br /&gt;　　那么很多人问，你这样讲我都听懂了什么，楼市泡沫股市泡沫我该怎么办？我应该卖还是怎么办？你千万不要问我我不是股评家也不是卖地产的，我只是告诉你你所看到的现象背后的本质原因是什么？你要怎么做？你自己要去做判断。&lt;br /&gt;&lt;br /&gt;　　那么各位再想想，下面一个问题就是理财的问题，当你了解了我前面所讲的所有的理论以后，说花一点钱怎么办？我请各位来宾注意，在经济大箫条的前期你不 要有幻想，你千万不要想到去赚钱好吗？这是一个很大的思想转变，你在这个时刻能够保本就谢天谢地了，而且中国根本就没有理财的问题，什么媒体的理财专刊， 根本不要看，都是错的。你有什么理财的问题，存银行、通货膨胀、买股票，股价大跌。你有什么理财的问题。好，不要问我了，是不是该买黄金，买外币，我跟你 讲这个问题问的都是错的。你今天不要问我朗教授应不应该买黄金，应不应买欧元，不要这样问，这都是在平时经济稳定的时候问的，在这个时刻你不要这样问，我 建议各位，听清楚，如果你想投资外币的话，你要你买一百块欧元必须买同样的美元，保证什么呢？保证不赚钱，保证不赚钱的结果就是保证不亏欠，买黄金也好， 一定要买黄金计价单位的货币，美元，目的就是不赚钱。你能够在这一两年期间能够不损失。那么从09年开始就会有大量的机会，而且机会无所不在，到处是机 会。&lt;br /&gt;&lt;br /&gt;　　经济箫条不是坏事，经济箫条可以孕育出无数的英雄豪杰来，平时不一定有机会，谁能够抗过这一段，谁就能够拔地而起，再跟各位讲一个很有意思案例，作为我第一短演讲的结束，请各位来宾思考一下，我国&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%C9%CF%CA%D0%B9%AB%CB%BE" onclick="tagshow(event)" class="t_tag"&gt;上市公司&lt;/span&gt;的负债比例多高？而且这种负债比例是由于我们30年改革开放的成功，我们的企业家我们的官员从来没有经历过大箫条的磨难下他们的负债比是多少？他们把世界看得太简单了，我们上市公司的资本负比例是100%到300%，资产负债比例是50%到70%。我以资产负债比例为&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B7%D6%CE%F6" onclick="tagshow(event)" class="t_tag"&gt;分析&lt;/span&gt;，这些没有经历过大磨难的企业，上市以后他们的负债比例高达100%到300%的负债比例的。&lt;br /&gt;&lt;br /&gt;　　我跟各位来宾跟我一起到香港去，香港非常有名四大天王，李嘉诚、李兆基、郭柄向、郑义同，这四个人是搞地产的，叫做四大天王。他最喜欢讲其中的一个天 王，四大天王都比我们很多的企业大一百倍，而且香港有比较完善的司法制度，也有更为良好的金融体系。那么，请来宾想一想。这一些比你大一百倍以上的企业在 一个信用良好的区域，法制建设完善的香港更有能力借钱吧，可是这些人不同的地方在哪里呢？他们是经历过大风大浪的人，起码是经过四个大箫条，这些曾经经历 过数次大萧条的四大天王他们比你大一百倍，他的法制建设完善的香港以及信用良好的香港本来可以比你借更多的钱，你们猜一下他们的资产负债是多少？我们是 100% 到300%，他们四大天王是20%，你可能说有钱不借，傻得吗？你说李嘉诚会借不到钱？你借不到钱是真，而且我告诉你不是四家平均20%，是每一个天王的 资本负债比例都是20%，不可想象的结果。而且，这四大天王，总资产当中以现金形势保有的比例高达5%到15%之间，你们呢？总资产中以现金形式保有的比 例高达5%到15%之间，你们呢？为什么？我曾经问过他们其中一个人，他们说，这一生成功的原因是因为保守。&lt;br /&gt;&lt;br /&gt;　　一个企业家，能够赚多少钱没有什么了不起。而且在我们成功了30年的改革开放孕育出无数赚容易钱的企业家，这些企业家你只要看看我们上市公司负债比 例，我就可以告诉你都是没有经历过大磨难的企业家，把世界看得太简单了，什么才是我心目中最睿智的企业家在这个时刻显得更重要的，那就是风险、管理最好得 才是最好的企业家，风险管理做的好，我怎么看出来呢？财务报表一看就看出来。一个注重风险管理的企业家一定是随时随地保持着最低的负债比例，随时随地保持 着最高的现金流，虽然公司的发展会受到限制，可是无所谓，因为只有保守经营稳健经营才可以帮助你渡过几次危机，你只要渡过两次危机不倒闭的话，你就可以成 为该行业该地区的领头羊。这就是保守经营的实际。&lt;br /&gt;&lt;br /&gt;　　我今天把这个数据念给各位听，更值得我们关切的是什么？当这些人在做投资的时候他们怎么想问题的？他想的问题跟我们想的不一样，他们其中一个人这么说 的，当他要做A同志的时候他首先想的不是A能够赚多少钱，而是A如果做垮的话能够赔多少钱？如果做垮之后原来的企业有没有办法弥补这个损失？如果可以的话 他才可以做，如果不可以的话他就不会做，也就是说他做任何投资的时候首先想到的是原来的企业有没有可以互补的现金流，也就是说新的投资现金流一旦断裂有没 有现金流刚好可以弥补，你看到没有，人家在做这种投资，为什么这么谨慎？风险感觉意识是最重要的。做一笔投资随时想到有没有更好的项目跟它做互补。什么是 互补？就是你坏我好，我坏你好可以互相抵消，按照我自己的数据，我发现四大天王他们的互补使他们的公司风险减低为多少？他们每个项目都有互补的项目，所以 风险平均减少了10倍。&lt;br /&gt;&lt;br /&gt;　　那么你想想，这四大天王所以能够成就这四大天王，第一，最低的负债比例，第二最高的现金流，第三，他们是及其保守而且互补型，投资保证可以对抗风险， 所以他才可以走得这么稳。那么，他们写的报告呢？你们有没有写过可行性报告，你知道什么是可行性报告呢？就是找进各种莫名其妙的理由来做，你应该怎么写， 你应该写不可行性报告，我想奉劝各位来宾，你把我的演讲听懂的话可以救你的命，在这个时刻你应该写不可行性报告，如果找了这么的的理由还是不充分的话你再 做还是来得及。&lt;br /&gt;&lt;br /&gt;　　因此，今天我在上半场给你总结的，你从今天开始要怎么做，第一有可能的话，尽量减低负债的风险，第二尽量收回欠款，积累大量的现金流，第三不要做任何 形式的投资，你把我的三点把握好了，你才有可能度过即将来临的经济危机。那么我们休息15分钟回来之后我就把各位带向国际金融，好不好？&lt;br /&gt;&lt;br /&gt;　　主持人：今天上半场的演讲就到这里，感谢朗教授。首先朗教授以我为例，举个例子非常容幸，而且告诉我说，今天我犯了一个大错误，在这里我也指出朗教授最大的错误就是来烟台来晚了，大家说对不对？让我们一起&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%C6%DA%B4%FD" onclick="tagshow(event)" class="t_tag"&gt;期待&lt;/span&gt;朗教授下半场的演出，休息15分钟。&lt;br /&gt;&lt;br /&gt;　　主持人：对于期盼，朗教授的下半场的演讲而言，这个时间感觉更短，我们确实非常认真在听我们朗教授的演讲，不过我个人觉得还是稍微有一点点的遗憾，哪 呢？整个演讲的过程中我们还是非常遗憾地听到了手机的铃声，所以我真的希望下半场的演讲过程中，亲爱的朋友能够将自己的手机打成静音或者是震动的状态，这 是对朗教授最好的尊重，在朗教授走之后我说了一句话，朗教授可能没有听到，现在朗教授已经坐在了自己的座位上，朗教授说他从来没有犯过错此外，但是我说他 只犯过一个错误，就是你来烟台太晚了，如果你早来烟台一年的话，至少我估计我的两个月辛辛苦苦攒下来的钱，还是两年的钱不会变成两个月，指出来我的错误， 但是朗教授知道各位都套牢，但是各位和我一样，都找到了继续下去的信心，到底朗教授会让我们的信心百倍增强，我们让我们彻底的绝望，让我们一起来聆听。再 次掌声有请朗教授！&lt;br /&gt;&lt;br /&gt;　　朗教授：其实这也不是我的错，是阳光100的错，你们怎不早点叫我过来，我们两个人都没有错，搞了半天，刚才主持人给了我很大的压力，他说下半场的演讲，能不能为各位指出一条解套的方案，我不知道怎么解套，我的水平不够，说不定我越讲越绝望都可能，你们还敢听吗？&lt;br /&gt;&lt;br /&gt;　　我前面讲到现在，还没有谈到次贷危机，也就是说告诉各位，就算没有次贷危机，我们中国经济发展也是这样的结果，所以，我们的问题比欧洲、比英国要严重 得多得多。我们不但有二元经济所导致的民营经济的全面箫条，我们还有不可知的未来金融海啸的冲击。那么当然这个所谓的美国的次贷危机已经造成了很大的影 响，可是我相信很多来宾，对于次贷危机为什么会发生以及它的冲击有多大？如何在我前面演讲的基础上更进一步阐述我的观点。那么最近我看了很多媒体的报道讲 的不太正确，也想透过这个场合告诉大家到底资本主义出了什么问题？&lt;br /&gt;&lt;br /&gt;　　以前在美国做房屋贷款是这样做的，这帮人在做，这些人并不是信用卓著，通过一些中介，负责帮银行收集资料做第一关的审核，那么中介把资料交给银行。银 行在做第二次的审核，通过以后，银行把钱直接放贷给借款人，银行比如说借出一百万，银行就少了一百万，为了让资金充裕，就把一百万的债权卖给你，你们说熟 悉的房地美跟房利美，就把一百万切成一千块，一千块一张的债券卖给全世界包括中国政府，卖的三千七百亿，总共差不多5万亿，这个过程本来是非常好的，信用 卓著的借款人把资料给银行，银行通过把钱借给借款人，再把债券转给房利美，再切给1000块的债券卖给大众，所以银行不缺资金，房利美拿回一百万，最后的 债权全部由社会所承担，这个社会是广义的社会，包括中国政府包括欧洲社会包括美国的大众，这是一条非常完美的链条。&lt;br /&gt;&lt;br /&gt;　　可是，这么多年来，美国华尔街的贪婪，让这条链条彻底的变质，怎么变质？第一发明的次贷，次级贷就是允许财务报表不好的人，收入所得不够的人，信用不 够的人依然可以买房子，如何透过第一道中介呢，就开始很像我们的银行，开始造假，学坏很快，学好不容易，拿一些假资料，我们做的很多了，骗银行我们骗多 了，造一些假的资料，拿去忽悠你，银行所有的分析根据假的资料，所以通过审核把钱借给了借款人，银行拿这些有问题的次级债卖给房利美，他们根据这些一百万 的次级债，切给一千块的债券卖给大众，中介为什么会造价，就是资本主义赖以为生的信托责任，在华尔街的贪婪下荡然无存。信托责任才是资本主义的灵魂，当中 介机构一旦缺乏信托责任的下场就是整个链条被污染，只要借款人还不起债，银行债券就是差了，银行把差的债权卖给房利美，他们又发行债券卖给大众，会使得房 利美还不起债。因此，造成破产现象。&lt;br /&gt;&lt;br /&gt;　　现在美国政府在做什么呢，直接进来救助房利美的银行，他们基本上都是受害者，直接拿钱帮他们付利息，否则后果不堪设想，各位听懂了吗？所以次贷危机的 真正原因来自信托责任的破产。你们千万不要小看这次危机，因为除了次贷危机以外我发现美国还有万亿的次次债，比如说卖热狗的、毒品的，这些人他们也可以买 房子，这些人叫做次次贷也可以透过无聊的中介机构伪造一大堆的财务报表卖给银行，银行卖给房利美，这个是做爆炸呢？两年以后，所以美国政府透过7千亿的目 的就是修补这个次次贷带来的污染，解救房利美。&lt;br /&gt;&lt;br /&gt;　　但是各位请注意，这个影响太大了因为几万亿出去的，包括美国的AIG就是美国的国际&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%B1%A3%CF%D5" onclick="tagshow(event)" class="t_tag"&gt;保险&lt;/span&gt;公 司，这个影响已经是危及全世界，而且更可怕的是这么多年来，为什么中国的经济成长这么健康？为什么中国这么严重的产能过剩，虽然是牺牲了环境、资源、劳动 者的情况下，大量的产能过剩为什么还能存在，为什么经济不崩溃，原因是以美国为首的西方经济他们负债消化这些产品，也就是高度的负债，所有的美国人都在借 钱，美国公司美国政府都在借钱，然后大量印发钞票，购买我们中国出口制造业的产品。只要美国这链条一断裂，美国人不再购买产品以后，中国过剩的产能危机立 刻爆炸，为什么没有爆炸呢？就是美国人不断借款，购买我们的产品。&lt;br /&gt;&lt;br /&gt;　　但是，不断地借款不断借款没有关系，只要你的借款的品质是好的就没有问题，比如像以前信用良好的借款者借款没有问题，问题是今天链条被污染了，所以高 负债的情况下，一个被污染的链条，立刻产生重大危机，你们听我讲到这里，就应该要干什么？如果这个负债的链条，防火墙挡不住的话，下一步结果是什么？你想 想，也就是美国赖以生存的、以负债为主的大量购买中国产品的做法将立刻破产。好了，如果美国人不再购买我们的产品，我们这么多的产能过剩怎么办？请你们在 座的各位来宾你们来回答我一下，我们的消费只有30%，我们根本买不起，我们买不了这么多的产品，只要美国人因为经济危机不买的话，我们生产过剩的现象立 刻爆炸。&lt;br /&gt;&lt;br /&gt;　　我在这个时刻我根本就不想讲粉饰太平，我也不想取悦领导，因为我是真正爱国的，只有把这句话讲清楚。（掌声）只有尽早告诉政府它才能有英明对策，来宾 们，你们都听懂了吗？中国产能过剩的问题，因为全球的高负债得到的缓解，他们买了我们的产品。只要我前面讲的防火墙一旦破裂，老百姓的信心一旦丧失，不再 以负债的方式购买了，那么我们所面临的是企业的大量倒闭，我都不敢想。这一刻我比谁都紧张，我一直观察美国政府能不能成功救市，因为美国政府一旦失败你可 不要做地上官，你可不要嘲笑美国政府部门，我们中国将付出惨重的代价。由于我看得比谁都早，看得比谁都明白，我到两点才睡，不断打电话到美国询问最新的情 况是怎样？我得到的都是最新的讯息。不过告诉各位，我已经有了一些最新的讯息。我今天发现，美国的援助力不够，七千亿可能不够，你知道七千亿是什么概念 吗？美国老百姓每一个人为此付出了接近3千美元。可是我认为，还是不够的。所以上周，美国股市跌了20%多，这是从包括1929年那次股灾，同样大的跌 幅。你知道这意味着什么意义吗？可能大家没有这样的敏感度，我担心的是 1929年之后的经济大风波。&lt;br /&gt;&lt;br /&gt;　　我现在希望，英国政府也开始救市，你知道发生什么事吗？为什么救市不成功？而且上个礼拜全世界几大国家联合行动救市，同时注资，同时降低利率，各位记 得吗，可是最后结果是失败的，你知道为什么失败吗？因为，每一家金融机构拿到救助款之后，而且是利息非常低的救助款之后，他把钱压在手里，都在怕，借给你 不还给我怎么办？我对银行没有什么信心，所以也不借给银行，所以政府给我的流动资金，我压在银行里，既不给企业短期融资也不给银行，我全部压在手上，如果 银行都不拆借的话，我们全世界的短期融资怎么办？你怎么买原材料怎么发工资，你要靠短期融资，银行如果缺短期债的话，是无法生存的，否则资金会陷入周转不 灵。&lt;br /&gt;&lt;br /&gt;　　目前的现状是怎样的？银行系统虽然接收了政府的救助，但是由于根本的问题解决不了，大家不敢从事短期借贷，下一步就是美国的制造业、美国的企业、美国 的服务业拿不到短期融资而全线崩溃。美国银行业会由于银行之间不准拆借、周转不灵，造成更多的现状。为什么这些银行不借？虽然拿到这么多钱的救助为什么不 借？因为信心丧失，什么信心丧失？对于资本主义的信心丧失，我讲这句话有点可笑，你千万不要笑。&lt;br /&gt;&lt;br /&gt;　　最近欧洲政府包括冰岛，已经开始把金融机构国有化，为什么？因为银行信用已经破产，大家都不相信银行，甚至连银行也不相信银行，银行拿到钱也不拆借企 业，免得你们拿钱跑了。所以银行信用本身已经没有办法让系统运作了，因为银行信用不够了到最后逼迫英国政府、欧洲政府以国家力量收购银行变成我们痛恨的国 有企业。你知道为什么这样做吗？因为以国家的信用担保，我保证还你钱，你只要以国家的信用担保，这家金融机构一定还钱，别的银行就会借钱给他，各位听懂了 没有？在我们民营化的时候，你发现全世界国有化，为什么国有化，就是重新利用政府的信用，给这个经济体系打下长期定数，你们放心的去借吧？政府为你们撑 腰，不但为银行撑腰，把银行收归国有，同时由政府印钞票向企业融资，你把你的票据卖给政府，政府拿钱买你的短期融资的票据，让你发行，购买原材料，因此今 天整个信用体系，破产的是各国政府出面实行全球的国有化，什么目的？重新向这个腐败不堪的金融机构注入最后一股政府信用。透过政府信用，透过政府的钱直接 拆借给银行，透过政府的钱直接购买企业的短期票据，让企业拿到短期融资发薪水、买原材料。美国政府还没有这样做。他们看在眼里，心很急。因为如果你不学习 欧洲政府的话，没有政府信用在里面，整个金融体系会因信息不足而全面崩溃。&lt;br /&gt;&lt;br /&gt;　　这是今天上午得到的最新消息，我一直在想这个事怎么讲，我讲的是最前沿的，美国政府也在考虑要不要把美国金融机构变成国营企业呢，这和美国政府的民营 理念有悖不太愿意这样做，但是如果不这样做的，你的七千亿美救市计划很难成功，因为大家的信心丧失，我相信你们想问我一句话，你们问我说，朗教授政府信用 是不是最后一步？你们想不想问这句话？对的，这是最后一步了。如果问我下面一句话，如果政府信用也不行呢，完了。那完了，没有别的办法了。我都不想演讲下 去了。&lt;br /&gt;&lt;br /&gt;　　走到这一步，整个金融体系的问题，会使得各国无力再以负债的方式成长，因此，就不会再以负债的方式购买我们产能过剩所制造的产品，听懂了吗？下一步就 是什么呢？所以说中国不可能幸免于难，我也请各位来宾密切注意这几天的发展，你们要随时随地按照我今天告诉你们的思路注意观察一下，你会发现今天两点开 始，欧洲各国政府甚至我怀疑美国政府要大量实行全面国有化。否则，无法注入最后一道强心剂。因为资本主义的信心完全崩溃，信用体系完全崩溃。&lt;br /&gt;&lt;br /&gt;　　你看我讲到这里，大家鸦雀无声了，你们才知道事态的严重。竟然还有无聊学者胡说八道说明天会更好，大家放心。是看不懂呢，还是怎么回事儿？刚才主持人 问我如何解套，我不知道，我没有这个能力解套，因为我发现美国政府也解不了套，郎咸平什么东西，还问我：朗教授，我们该做什么投资，你疯了，我昨天早上到 今天中午很多企业家问我，我们应该投资什么行业，我一开始告诉你，你疯了，我当时讲你疯了，你可能觉得我在开玩笑，我讲到现在这样说你该理解了吧？&lt;br /&gt;&lt;br /&gt;　　你晓不晓得什么危机在你面前，全世界各国的政府现在已经拟定了三个方针：第一个方针，就是政府出面协助各个金融机构的负债问题渡过难关。第二个问题， 充足各个金融的资本，如果还不行，第三个，充足国有化，如果还不行有没有第四个，到这一天，防火墙会正式爆破，如果国有化解决不了问题，防火墙宣告爆破， 我讲的工商链条多米诺骨牌效应将一发而不可收拾，中国经济发展靠出口创汇，基本是依靠过剩的产能发展。都听懂了吗？&lt;br /&gt;&lt;br /&gt;　　当然了这个事件，未来是怎么&lt;span href="http://www.lcgpw.com/bbs/tag.php?name=%D7%DF%CA%C6" onclick="tagshow(event)" class="t_tag"&gt;走势&lt;/span&gt;我 也无法预测。其实他们也是走一步算一步，以美国为首的西方国家作梦也没有想到连政府注入几千亿资金的结果还是无法救市。因为，源自于企业的信念还是过窄， 逼迫政府出来用政府力量帮助银行完成短期拆借，帮助企业完成短期拆借，帮助他们继续生存下去。现在各国政府正在用政府的力量协助银行进行短期拆借，利用政 府的力量协助企业进行短期融资，以维持一个正常的营运，而不要说发展。&lt;br /&gt;&lt;br /&gt;　　你们听完我的演讲之后，以后再听到学者有任何乐观的呼吁你不要听了，你心里要做准备，没有人希望最坏的情况发生，我告诉各位来宾，我第一个做的演讲是 跟次贷危机完全无关的中国经济问题。如果你们已经觉得日子很难过了，那么我第二个阶段的演讲将带来海啸般的冲击，我现在随时随地密切观察欧美各国能否有效 斩断工商链条，中国的出口制造业就是工商链条的重要环节。&lt;br /&gt;&lt;br /&gt;　　这也是为什么在第一场演讲完成以后，我告诉你们少投资，最少不要投资，减少负债，准备过冬。而且，像美国的财政部长鲍尔森以及美国的中央银行行长波兰 克这些都是赫赫有名的人物，像波兰克这个人是1970年代的博士学者，我是1980年代毕业的经济学家，那个时代毕业的学者跟我们这个时代不一样，哪个时 代的学者对于经济大恐慌本身研究得非常到位，不像我们80年代的学者是非常单纯的一批人，迷信市场的人基本上都是这批人，70年代的学家有非常强的政府道 德责任感，当时波兰克也就是美国中央银行的主席，他的博士论文就是 1929年经济大恐慌，他说当时美国之所以发生经济大恐慌就是因为没有设立防火墙。&lt;br /&gt;&lt;br /&gt;　　中国的企业、中国的制造业，在大海啸没有冲击之前为什么这样的不抗压，各位想想？所以我前面说了，第一，汇率的上升，第二成本的上升，第三劳动合同 法，第四宏观调控，这四件事情和我现在讲的第五件事情相比它们的力量是非常小的，也就是在汇率、成本、劳合同法以及宏观调控的冲击下，我国制造业如此不抗 压，为什么？这四项冲击远远比不上我刚才讲的大海啸。就算这四项小冲击，我们的制造业也抗不住，30%的企业倒闭，甚至到了年底有可能超过50%，我希望 不会，政府应该出来救企业，我诚恳地希望不会到50%，但是请问这四项冲击为什么我们企业抗不住？因为，我们和欧美各国的企业相比，我们有一个天生的缺 陷，那就是我们引以为傲的制造业大国误导了我们的政府部门，你真的以为我们是制造业大国吗？你在媒体上所看到的都是什么样的？都是错的，你真的这样认为 吗？真正的制造业大国是美国，才不是中国呢，我们是自己感觉良好。那么我们中国制造业目前在什么环境之下呢？我给你讲一句最形象的话，中国经济发展到最后 中国取得了 GDP，美国取得了利润，也就是说我们制造业的格局就是创造的GDP，最后的利润全部被美国席卷，这句话什么意思，为什么我们这么不抗压，因为我们的制造 业不但破坏环境、浪费资源，而且是整条产业链中价值最低的过程。&lt;br /&gt;&lt;br /&gt;　　我以芭比娃娃为例，我们广东东莞所生产的芭比娃娃卖到美国是9.9美元一个，接近10美元，请问10美元减掉1美元的9美元是如何创造出来的？那就是 美国企业的灵魂，它透过6大块所创造出来，包括产品设计、原料采购、仓储运输、定单处理、批发经营、终端零售，创造出了9美元的产值，6大块加上中国一块 的制造，叫做六加一的整个流程就是产业链，我们这么多年的经济成长，我们取得了整条产业链的“一”，而欧美各国掌控了整条产业链的“六”，这个价值是怎么 回事儿？我们的制造业者在破坏环境、浪费资源、剥削劳工的基础上，我们每创造出一百万美元的产值，我们同时替美国创造出九百万美元的产值，我们辛辛苦苦创 造出一亿美国的产值，我们同时替美国创造出9亿美元的产值。因此，中国越制造，美国越富裕，美国席卷了90%的价值。&lt;br /&gt;&lt;br /&gt;　　那么这一种生产模式叫做国际分工。而中国被分到了最差的一项，破坏环境、浪费资源、剥削劳工。我们现在常常以1.8万亿感到扬扬得意，你晓不晓得我们 怎样创造出这样的成绩？我们掌控着10%的价值，我们创造出1.8万亿美元的外汇，也就是1.8万亿除以10%等于18万亿，也就是我们出口制造业替全世 界创造出18万亿的产值，我们只分到了1.8，其他的都是欧美的，你知道18万亿是什么概念呢？那就是在座的各位来宾和全中国的工人80年所加起来的工资 的总和，这就是18万亿被国际分工席卷。&lt;br /&gt;&lt;br /&gt;　　所以我常讲，今天西方帝国主义对中国的掠夺和19世纪免费掠夺非洲差不多，当时非洲是0%，现在中国拿10%，在我看来没有什么差别，至少非洲没有环 境污染等的问题，我们的10%伴随着污染环境，浪费的资源以及被剥削的劳工，由于你是处在产业链的最底端。因此你特别抗压，因为真正掌控定价权的是整个产 业链的六，一是不掌控定价权，所以你能不能想象，欧美各国尤其是以美国为首的欧美国家，不但席卷的90%的利益，而且掌控着我们的定价权，我们不掌控。这 就是为什么，创造了汇率，成本、劳动合同法以及宏观调控之后我们的企业必须全力承担这些成本，因为我们不掌控定价权，我们无法提升售价，各位都懂了吗？这 就是为什么我说的投资营销环境急速恶化，因为你不掌控定价权。&lt;br /&gt;&lt;br /&gt;　　到最后的结果，大家不想干了，不想干的结果就像你们一样炒股去了，还被套牢了，想想这都是错的，你看，美国，掌控着定价权，透过6+1的6席卷了 90%的产值，这种情况，他们竟然发生了次贷危机，你能不能想象他们的防火墙一旦破裂以后，洪水将席卷90%的产值，想到了没有？我前面跟大家讲的就是说 防火墙破裂之后会影响到这个行业、这个行业，现在我把这个数字告诉你，美国防火墙破裂的结果冲击到以美国为首的90%的产值。然后再冲击到中国的10%的 产值。&lt;br /&gt;&lt;br /&gt;　　我就是把第二段演讲的前半段全部给你量化。因此，美国、欧洲的做法三步骤：第一保护银行的债权，第二保护银行资本金，第三全部国有化，如果能够斩断工 商链条的话，美国所创造的90%才能保存住。如果抗不住的话，全部席卷90%，只要冲击90%，就同时冲击我们的10%。所以现在已经不是一个金融危机的 问题了。各位来宾都听懂了吗？&lt;br /&gt;&lt;br /&gt;　　那你可能问我了。那样我们这么多年的产业政策没有想到这个吗？我告诉你没有。我们这么多年的产业政策呼吁企业利用我们的廉价劳动力、呼吁企业品牌升 级、呼吁企业产业升级，没错吧？我告诉你，都是错的，因为真正的竞争力来源于6+1的高效整合，我们应该用政府的力量让我们的企业做成6+1的高效整合才 能掌控定价权。只有掌控定价权我们才有生存的机会。&lt;br /&gt;&lt;br /&gt;　　可是目前我们的制造业是大量的倒闭。那么请各位来宾想&lt;br /&gt;&lt;br /&gt;　　一想。像郎咸平这种水平都会看得明白的事，你们认为美国政府看不明白吗？你相不相信，美国政府的要员比我聪明得多得多，我已经够聪明得了，他们比我还 聪明，当然你不一定相信，你说朗教授谦虚了，今天这个年头还能自认为自己不足的人太少了，中国人牛人太多，不知道还不行了，连我这种水平的人我都看得这么 清楚，何况美国。&lt;br /&gt;&lt;br /&gt;　　这位女士说对了大量热钱进入中国，大量收购中国的制造业，为什么？中国的制造业1，美国的产业链是6，6不能没有“1”啊，听懂了没有？如果1崩溃的 话，“6”也一定会崩溃，“6”一定有“1”做基础，才能发展，如果我们不生产芭比娃娃卖给美国，它怎么能创造出6的产值呢？我再一次告诉我们的地方政府 你们必须救自己。“1”最重要了。因为我们的“1”正在被大量的收购，我觉得这位来宾比我聪明，他已经把我结论讲的差不多了。&lt;br /&gt;&lt;br /&gt;　　中国进出口总额的55%都是外资，中国高科技出口的87%是外资，中国的汽车高端零配件90%是外资，中国你们吃的粮油85%是外资，中国山东、河北 的几个粮食局已经被外资收购了，知道吗？中国的养猪的产业链某条产业链被收购了。这就是今天你所面临的格局，你知道这些数据吗？你可能都不知道，为什么不 知道，因为你们从来不介意，我今天演讲的时间特别长，我已经把这些全部讲了，我们就算保有6+1的“1”，而且产值这么低的而且还是大量被收购的情况下， 次贷危机的冲击还没有开始。&lt;br /&gt;&lt;br /&gt;　　可是这些现象的原因就是中国的经济成长是靠着推动GDP所拉动，就是30%的部门透过钢筋水泥拉动的成长，70%都是过冷的制造业，这种特殊的二元经 济 30%过热，70%过冷。经过了汇率、成本、劳动合同法以及宏观调控的冲击之下，过冷的制造业更冷，所面临的投资环境更加恶化。而过热的地方政府过热，我 记得上一次去山西，有的人说你看我们的山西最近发展很好，我说中国的哪个地方发展不好，哪个官员一上任也是搞建设，推动GDP的工程建设，透过30%拉动 GDP这就是各级政府做的事。越这样做，越多的资源流入过热的部门，过冷的制造业为什么这么不抗压？原因就是我们已经进入到了一个前所未有的产业链的暂停 时代。以美国为首的欧美国家控制着整条产业链的“6”的，我们在破坏环境、浪费资源、剥削劳动的基础上我们创造的“1”，更严重的是这样使得我国的制造业 产生严重的生产过剩现象，而这个生产过剩现象透过美国这么多年的负债增长的形势全部被它吸收了，所以我们看起来是表面的繁荣，我们这么多的产品好像是更富 裕了，那个制造，你已经跟次贷危机牢牢挂钩了，因为购买你产品的原因就是负债，我们是靠美国的负债支撑起我们的出口制造业使得我们过剩的产能透过美国消化 掉，&lt;br /&gt;&lt;br /&gt;　　但是美国的次贷危机使得美国高负债的时代即将终结，你可以相信我。未来一定是负债比例大幅降低，因此对于中国产品的需求必定大幅降低，所以中国产能过 剩的现实情况将会曝露无疑，这个时刻就是次贷危机防火墙爆炸的时候，不但冲击了美国所能够掌控的90%的产值，同时冲击到中国只有10%的产值的过剩的出 口制造业，产能过剩的制造业。&lt;br /&gt;&lt;br /&gt;　　下一步是什么呢？我也不想讲了，因为你已经听懂了多米诺骨牌效应，下一步是什么呢？再下一步是什么呢？会形成一个恶性循环。大家怎么都不吭气了，其实 你们今天不应该来听我的演讲，不听的时候，模模糊糊过得挺好的，国家有吃有喝的，过得挺好的，一旦听懂以后再也睡不着了，相不相信我，你们每天晚上今天晚 上都会看凤凰卫视，看美国的次贷危机，国有化会不会成功，一旦失败，朗教授告诉我们的最后一招，一旦国有化失败全盘崩溃，回去不要老是看《汉武大帝》什么 的连续剧了，回去看看美国的国有化会不会成功。&lt;br /&gt;&lt;br /&gt;　　主持人：朗教授的演讲到这里就结束了，接下来的时间就是我们在场的来宾向我们朗教授提问的时间，首先有请我们舞台左侧的朋友提问。&lt;br /&gt;&lt;br /&gt;　　搜房网：朗教授你好，我是搜房网的网友提问一个非常实际的问题，就说在当前的情况下，如何能让自己日子保持得好一点，甚至过得更好一点。&lt;br /&gt;&lt;br /&gt;　　朗教授：过得更好一点不可能的，不要过得更坏就不错了，我建议各位网友各位来宾，注意在这个时刻千万不要想赚多少钱，能够少赔多少钱是真的。这是我告 诉你们的，如果你们想买外币保值的话，一定要买最保守外币，什么目的呢？不赚钱，也就是你买欧元一定要买等量的美元，保证不赚钱，也保证不亏钱，这是我给 网友的建议。&lt;br /&gt;&lt;br /&gt;　　提问：我是烟台日报的传媒记者，我问一下，今天总体感觉世界一片黑暗，我们改革开放30年，次贷危机来了以后，会不会是辛辛苦苦30年，会不会一夜回到改革前。&lt;br /&gt;&lt;br /&gt;　　朗教授：这个问题问得太好了，这个不是我造成的该黑暗就是黑暗，该乐观就是乐观，为什么你们来听我的演讲，为什么大家欢迎听我的演讲，我是讲实话的， 有良知的学者我不想骗你们，如果你认为是悲观就是悲观，但是事实只有一个，我今天给你讲的是事实，只要你要怎么做，千万不要问我，该不该炒股，这个我是不 回答的，你只要了解了我讲的所有故事，该有的事你自己做判断。&lt;br /&gt;&lt;br /&gt;　　提问：我记得第一次听您的课是在北京，当时给我印象最深的是在北京，出了三个，你错了，你错了，你还是错了，今天听得比较多的是你疯了，包括今天的主 题，当时不是说您，我想说的是，因为在座可能更多的是我们的民营企业，包括房地产的一些行业，如果您是生在烟台，在这个企业之中，根据你的大的形势恩，我 觉得还是有机会，你刚才也提到乱世出英豪，我想提两个比较简单的，企业能否自救，下一步问题是如何自救。谢谢。&lt;br /&gt;&lt;br /&gt;　　朗教授：你的问题问得非常好，我想这样回答你，烟台，所受到的冲击远远小于广东、江浙。尤其是你们房地产价格是这个价位之下的话，你们所受到冲击也会 远远小于温州等地，如果冲击不这么大的的话，制造业本身需要烟台市政府的大力救助。那么，我这个时刻，我认为一个比较有效的短期的办法，是我们的制造业目 前千万谨慎小心，不要随意扩张产能，维持现状，继续改进你的效率，降低成本，同时更重要的是烟台的民营企业需要政府大力的救助，因为一切财富的基本来源来 源于企业，一定是企业赚钱了，才会给员工更多的薪水，只有员工拿到更多的薪水，烟台才会更繁荣，大家不要只看GDP，如果烟台只是少数几个城市，首先放弃 GDP 的理念，着重企业的利润的话，你就能排在名列前茅，就能更容易渡过难关，不要只看GDP，GDP不重要，政府能够把资源移到对企业的直接救助方面，这就是 对企业最大的帮助，也就是对烟台市最好的建设，这个需要一个思维的转变，什么转变呢？你不要认为救助制造业是违反市场化行为，你想想我今天的演讲，国有化 是目前全世界的潮流，我们如果能够未雨绸缪，透过政府的力量援助制造业渡过难关，将来烟台市一定能够更快上一个台阶。各位理解我意思吧？&lt;br /&gt;&lt;br /&gt;　　提问：最近我们注意到十七届三中全会正在召开，好象是经过这样一个磨难以后，我们才认识到以前所谓的出口消费三辆马车的次序应该改改，改成拉动内需在前面，我们想听听朗教授对十七届三中全会的精神，怎样可以走出困境。谢谢。&lt;br /&gt;&lt;br /&gt;　　朗教授：大方向我们肯定是赞同的，但是你是提的什么内需？千万不要把国家的有限资源又拉到以GDP为主的资源，我们资源的是有限的，不要为了提升我们 的 GDP又去大量建公路、桥梁又搞这个，最后是什么下场呢？就是把制造业的谨慎的资金投入到过热的部门，使得我们制造业更难，提升内需就是我们政府要学习欧 美各国的做法，将大量资源投入到与民生相关的制造业跟服务业上，这才是我们未来该走的路，我认为最迫切的做法是利用政府的力量协助制造业从过热的部门转入 过冷的部门，帮助制造业渡过难关。因为山东讲的是原则性的问题，我建议一个原则性的方法来回答你，我认为这是解决目前难题的方法，至于次贷危机的危机，我 们没有办法，我们只能是坐以待毙。&lt;br /&gt;&lt;br /&gt;　　提问：目前很多的专家学者都在讲目前的经济状况下中国经济转型的很好的机会。&lt;br /&gt;&lt;br /&gt;　　朗教授：这是胡说八道。这些家伙站着说话不腰疼，不懂中国的经济，中国90%的制造业根本不可能转型，要转型就是破产，做陶瓷做肉干什么的的怎么可能 转型，不在于转型而再在六加一，如果高价收购养猪行业有没有让养猪转型，那么多的外资收购我们粮油有没有改成高科技，他们收购粮油、都在做六加一的产业链 的高效整合，我们传统行业没有错，升级是错的。你忘了养猪往哪里升？你讲，粮油怎么升级？要做什么呢？就在做这些公司收购我们传统制造业之后做的就是六加 一高效整合而不是产业升级，理解我的意思吗？&lt;br /&gt;&lt;br /&gt;　　提问：中央在十七届三中全会提出经济有些扭转，如果将来有失去土地的农民会不会造成严重的社会问题。&lt;br /&gt;&lt;br /&gt;　　朗教授：我知道你要问的是什么，我不想说的，你要想到，一句话，如果我国的制造业产能过剩的制造业一旦受到金融海啸的冲击之后你想到下一步是什么？大量的失业，你只能是吸收农村人口，别的话我不讲了。&lt;br /&gt;&lt;br /&gt;　　提问：你一再强调国有化，我想问一下国有化和私有化的问题。&lt;br /&gt;&lt;br /&gt;　　朗教授：她问的问题是我们这么多年的改革是反潮流的，别人忙着退市我们忙着上市，这是一个学习的过程，并不是说四年来都在国有化，全世界的金融机构都 是私营的多，上市的多，这是为什么我们国家也走上这条路，只是今年的这两个礼拜开始变成国有化，我也相信这次演讲以后我们政府会有深刻的认识，重新做一个 思考私有化不是目的，目的是如何保护金融体系的问题，私有化也好，国有化也好都不是问题，只要保持稳定才是最大的前提，我们过去的私有化是有问题，我们是 以私有化而私有化，我们未来要为了维持金融稳定而实行国有化或者是私有化。欧美国家为什么要国有化并不是变成社会主义，他们注入最后一剂强心剂，就是提升 信心，国有化不是目的，所以大家不要搞错了不要认为欧美在国有化。我们就呼吁政府国有化，我们今天呼吁政府一定要在维持金融稳定的前提下，产生各种有益的 方案，达成金融稳定，维护老百姓的信心，目前欧美是国有化，中国最重要的是维持老百姓的信心，我们中国也要做这样的事，维持老百姓的信心，至于怎样做也是 更要考虑的问题，理解我的问题吗？&lt;br /&gt;&lt;br /&gt;　　提问：在现在的经济环境作为经济学家与我们普通老百姓提一点建议，现在的情况下，投资房产还是比较保值的吗？&lt;br /&gt;&lt;br /&gt;　　朗教授：房地产我这样讲好了，以亚洲各国为例，包括香港台湾韩国为例，房地产在足够长的时间下，包括十年到二十年以上，相对而言比股票市场更能够保 值，这样波动是有的。我们现在会走上低谷也会，只要经济持续增长，情况会有所转换。你这样问的话，我相信回答是比较简单的，以台湾为例，台湾很富裕，原因 和台湾老百姓都喜欢购买房屋有关系。举个例子，我们观察到广东的倒闭的企业会不会到台北，130亿美金，投入到台北干什么？买房子。陈水扁住的特区有一半 是广东的台商买，有这种习惯，为什么这样的习惯呢？是台湾人致富的方法就是靠房地产。&lt;br /&gt;&lt;br /&gt;　　提问：你好，朗教授，我只是一个高二的学生，所以我的问题可能过于浅显，请您多多包涵，我想问的第一个问题，你很有自信，而且你也很高的预见性，你今 天分析的是我们现在所处的环境是多么灰暗，我想你为什么不分析为什么会这样分析，为什么不从美国的整个经济体系的建立过程中，从一战开始整个资本主义的经 济体系是怎样建立的，为什么不从根源上探讨？&lt;br /&gt;&lt;br /&gt;　　朗教授：应该从资本主义的本质开始，但是今天的时间不够。&lt;br /&gt;&lt;br /&gt;　　提问：第二个问题我想问一下，前一段有学者说我们当下是处在人口红利期，我们今天知道这个说法是错误的，当我们大学毕业以后，我们面临的问题将会更 多，我们将面临我们的爸爸妈妈爷爷奶奶将要全部靠我们养活，以及到时候考大学将会更难，研究生会更多，以及就业问题，我们现在应该做怎样的准备，才能在将 来更好解决我们的人生，更好渡过我们的人生坎坷。&lt;br /&gt;&lt;br /&gt;　　朗教授：你请坐，非常好，这位女同学，你高二是不是？你能问这么深刻的问题，我们对我们的下一代感到骄傲，我非常重视年轻人的问题，我才站起来回答 你。因为她问的问题很深刻，我也希望我今天给你的回答能够改变你的一生，改变你的子女的一生，我非常严肃地站在这里，把你的两个问题做一个仔细的回答。我 告诉各位我们的民族，我们这么多的年轻人都在学什么？讲一句难听的话，我们大学教育本身就是在摧残创造力。我们在干什么，我们在培养解题高手，像你有这种 思路的女孩，甚至老师不会喜欢你，我必须以对你的重视表达我对教育的立场。我们中国的教育目的是在干什么，目的就是在训练你成为解题高手，我告诉你A我期 待你讲 B，我告诉你C我期待你讲D，这么多年来，不要说朗教授的答案争议性很大，可是我们的大学教育没有培养学生这种能力，没有学生认为说这一切搞的都是错的， 为什么今天一开始我们告诉你我们的媒体做的都是错的，我告诉你我们要否定A，你问的问题都是错的，我凭什么按照你的意愿回答B，到最后大家认为我可能是一 个低端，偏激，甚至是争议性大，到最后发现原来思考的问题本身就是错误的，也就是说这种错误并不是一个学者专家的错误而是整个教育体系出了严重的错误，你 们的子女只要在读完本科的结果就会是这样的结果，你告诉他A就是A，不会怀疑A是错的或者是C的错的，各位理解我的意思吗？我希望每位父母把我的话带回去 给你的子女，怀疑告诉你的一切都是错的，只有这样才会培养你独立思考的创造力理解我意思吗？你问的我的第一个问题为什么这样重要，为什么按照我的思路讲， 为什么不从y来讲，比如谈谈的原则，起源说不定这些才跟我们讲的有关，我可以讲，我在别的场合也说过，我讲了一句话，这是整个欧美国家对于整个资本主义的 失望，这个话回答了你的问题，我从19世纪开始讲，我开玩笑说没有时间，但是我鼓励你这种说法，你高二学生没有听周杰伦的演唱会，你跑来听朗教授的演讲， 这点我给里最高的崇敬。&lt;br /&gt;&lt;br /&gt;　　看到高中生一追逐明星我就不舒服，我可能是嫉妒吧，这句话我也送给各位家长，为什么中国科技大的少年班是失败的，因为他们选拔的尖子学生根本不是天才 是解题高手，这就是为什么他们培养不出真正的天才，真正的天才要像你这样问问题才能成为天才，永远怀疑A。第二个问题问得非常好，我把她的问题重复一遍等 她长大以后，等她毕业以后，她的曾祖父增父母搞不好没有死，曾祖母、爸爸妈妈，结婚以后对方的一家人他们两口子养这么多的老前辈，哪个时候怎么办？最糟糕 的是什么你辛辛苦苦考完了大学以后，大学一毕业保证失业，养也养不起，如果这样发展的话，中国十年二十年会成为最贫穷的国家，像我们这样的老人很多了，像 他这样的也是，万一她找不到事怎么办？各位来宾有没有想到这个的严重性？她找不到事怎么办？我告诉你，为什么我要站起来回答你的问题，你已经帮我们所有的 大学生问了朗教授一句话，我们为什么找不到事，我们连奉养父母的能力没有，我们为什么找不到事，因为产业政策都是错的，美国大学生比例这么高，我们如何搞 教改，我们搞教改的原因是我们看到的美国的大学生这么多，我们误认为如果我们同样生产这么多的大学生就可以透过人力资本扩张像美国那样富裕，因为我们到处 都是大学，最后发现今年培养出580万大专生，大部分找不到事。为什么？我有孙子了，我很关心这个事，我告诉你原因，那就是因为，真正需要大学生的是整条 产业链中的“六 ”制造业这个“一”是不需要大学生的。理解了吗？那么你们问我了，难道搞教改的人不知道吗？我告诉你他就是不知道。他完全不知道美国多学生比例这么高的原 因，是因为他们掌控着整个产业链的“六”，而我们掌控的是“一”，制造业本身不太需要大学生，因此烟台很多的工厂从董事长到保安没有一个大学生，有些工厂 不是所有的啊，因为制造业不需要大学生，产品设计、零售规划、仓储物流这个需要大学生，可是我们都不掌控。都由谁掌控呢？由欧美各国掌控着。&lt;br /&gt;&lt;br /&gt;　　这样一来的话，你会知道为什么中国长此下去会成为最贫穷的国家，因为我们掌控了价值链中最不重要的一个环节，因为掌控了6+1之后的“1”之后，带来 的必然结果就是给你们一个最差的自然资源，挖光、用光的自然环境以及剥削的劳工给你们了，我们这一代是最对不起下一代了。这是我为什么站起来回答你的问 题。&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/3070186580249183534-4027309566215705686?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4027309566215705686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4027309566215705686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4027309566215705686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4027309566215705686'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/blog-post_19.html' title='经济热点透视'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7590703847978186039</id><published>2008-10-16T15:15:00.001-07:00</published><updated>2008-10-16T15:15:51.405-07:00</updated><title type='text'>c++ study</title><content type='html'>http://www.research.att.com/~bs/bs_faq2.html#no-derivation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-7590703847978186039?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7590703847978186039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7590703847978186039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7590703847978186039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7590703847978186039'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/c-study.html' title='c++ study'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4871753384304632146</id><published>2008-10-16T14:01:00.000-07:00</published><updated>2008-10-16T14:02:02.110-07:00</updated><title type='text'>crack tech</title><content type='html'>@echo off  &lt;br /&gt;sfc /purgecache  &lt;br /&gt;reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\Wgalogon" /f  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\Windows\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\Windows\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\Windows\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\Windows\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\WINNT\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\WINNT\system32\WgaTray.exe /f /q  &lt;br /&gt;taskkill /f /im WgaTray.exe /T  &lt;br /&gt;del c:\WINNT\system32\WgaTray.exe /f /q  &lt;br /&gt;echo. &amp;amp; pause &lt;br /&gt;&lt;br /&gt;把上面的复制到记事本里保存,把记事本的后缀TXT改成BAT,然后运行.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;大家删除注册表中的一个键值，开始-运行-输入REGEDIT回车，在左边栏中找到HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\WindowsNT\CurrentVersion\Winlogon\NotifyWgaLogon项，将整个WgaLogon项 删除即可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4871753384304632146?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4871753384304632146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4871753384304632146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4871753384304632146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4871753384304632146'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/crack-tech.html' title='crack tech'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-518094596231501551</id><published>2008-10-15T22:36:00.001-07:00</published><updated>2008-10-16T14:29:06.203-07:00</updated><title type='text'>美联储</title><content type='html'>　　1， 美国联邦储备委员会简称美联储（Federal Reserve System简称Fed）相当于美国的中央银行，职能是制定和实施货币政策，提供金融服务，维护金融体系，“联邦”多好听的名词，但是他却是一个私人银行 家和大企业集团的组织，也就是说是纯粹的私人组织，不受政府控制。美联储所有的高层都是这些集团的首脑，然后美国政府从这些首脑中“任命”主席。&lt;br /&gt;　　&lt;br /&gt;　　2， 我们所说的美圆，每一张都是出自美联储之手，而不是美国政府，美国政府没有发行货币的权利，只有发行国债的权利。&lt;br /&gt;　　&lt;br /&gt;　　3， 美圆的流通是由于美国政府向美联储“贷款”所有的美圆让他作为货币在美国和世界范围内流通，而以美国国债作为抵押。&lt;br /&gt;　　&lt;br /&gt;　　4， 美国人民每年交纳的数量最多的税是个人所得税，而这些钱没有进政府的腰包作为财政预算，而是直接进入美联储的帐户，作为美国政府“贷款”美圆使用的利息。&lt;br /&gt;　　&lt;br /&gt;　　一，美国的本质&lt;br /&gt;　　&lt;br /&gt;　　“只要我能控制一个国家的货币发行，我不在乎谁制定法律。”&lt;br /&gt;　　——梅耶，罗切斯尔得（银行家）&lt;br /&gt;　　&lt;br /&gt;　　1864年4月14日晚上，一个演员径直走进林肯同志的包厢“他平静地把枪瞄准了林肯的左耳和背脊之间……共开枪8次。”然后在众目睽睽下扬长而去，15日，美国历史上最伟大的总统，终于挂了。&lt;br /&gt;　 　林肯同志的光辉事迹早已不用多说，他废除奴隶制度（虽然他自己家也蓄奴）等等，但是恐怕不为人所知的是他所提倡发行的“绿币”大概是打破美国银行家发行 货币的第一次尝试，为了防止内战让美国人民再次被加上一屁股的债，林肯同志以国家信用为基本发行了“绿币”，企图银行家对美国的经济控制，于是他挂了，而 绿币随即被废除。&lt;br /&gt;　　1963年11月22日，约翰•肯尼迪总统在自己的车上连中3枪，当场毙命，凶手李•哈维&amp;amp; #8226;奥斯瓦尔德，一个在海军陆战队射击成绩评价仅仅为及格的退役士兵，用一支意大利产卡尔卡诺M91/38手动步枪在5点6秒的时间内连续打出3 发子弹，从完全不可能的角度做掉了肯尼迪。接着，他在48小时后被另一个人做了，然后在随后3年之内，18名证人先后以不同的方式挂掉，而相关证据和文件 不是被封存就是被“意外销毁”……&lt;br /&gt;　　&lt;br /&gt;　　对于约翰•肯尼迪同志的贡献，大多数人恐怕并不了解其签署的总统令11110号，发行白银券，以美国的白银储备为基础以白银券来结束银行家们操纵的美圆体系，当然，他显然没有意识到谁才是老大，于是也挂了。而总统令11110号和白银券之后也被废除。&lt;br /&gt;　　&lt;br /&gt;　　翻开美国历史，在美国历史上先后有7位总统在任上挂了，还没计算死掉的参议员，人们不禁要问为什么？于是翻开美国金融史我们就不难发现，这些挂掉的总统有一个共同点，那就是都准备在货币上下点文章。当然，也包括一些没有挂掉的。&lt;br /&gt;　　&lt;br /&gt;　 　1835年1月30日，美国第7任总统安德鲁，杰克迅在国会山参加一位议员的葬礼，一个英国的油漆匠昂首阔步走到总统面前两米的地方，从容的拿出手枪开 火，但是不幸的是子弹炸膛，没能射出，于是他从口袋里拿出第2把手枪，再次开枪，结果却是哑弹，依然没能射出，周围的人“惊呆了”都在等凶手拿出第3把 枪，但是军人出身的安得鲁总统急忙拿起手杖自卫，和凶手打在一起，这时周围的人才上去“制服”凶手，接下来的审判中，该凶手被判明有“精神病”于是逃脱了 法律的严惩，至此以后每当刺杀总统失败，刺客就变成了“精神病”而没有得到任何审判（比如里根被刺），天知道美国怎么那么多疯子，天知道怎么只有美国的疯 子可以完成无数恐怖组织费劲心机都无法完成的任务——刺杀美国总统，只是人们知道一点，安德鲁，杰克迅总统企图建立独立的美国财政体系，彻底摆脱银行家的 经济控制，他死后墓志铭上只有一句话，“我杀死了银行”&lt;br /&gt;　　&lt;br /&gt;　　“如果美国人民最终让私有银行控制了国家的货币发行，那么这些银行先是通过通货膨胀，然后是通货紧缩，来剥夺人民的财产，直到有一天早晨当他们的孩子一觉醒来时，他们已经失去了自己的家园和父辈曾经开拓过的土地。”&lt;br /&gt;　　——托马斯，杰斐逊（《独立宣言》作者）&lt;br /&gt;　　&lt;br /&gt;　 　于是，美国总统英勇的和金融银行巨鄂进行了200年的殊死搏斗，伤亡率超过了诺曼抵一线的美国士兵，但是始终无法把货币发行权夺回来，所谓的自由和民 主，没有了货币的支持也就成了一纸空文，今天，美国人民欠下的国债中在外国购买的国债不足2点5万亿美圆（主要是中国和日本购买的），不要为这个数字惊 讶，因为他并不大，美国人民欠美联储的债务为44万亿美圆，而这笔债务只会越积越多，永远没有还清的那天。&lt;br /&gt;　　&lt;br /&gt;　　当然在美国你可尝不到 欠债当大爷的滋味，在那里，欠债的话就老老实实的当孙子好了，由于经济完全被这些银行家的资本控制，所以他们让谁上台就让谁上台，想让谁担任什么职务就可 以让谁担任什么职务，美国的政治，外交，军事，经济完全被控制，也就是我们所说的“影子政府”，但是他毕竟不是一个政府，他是一个庞大的赢利性组织，所有 的目的都是获得更多的利润。&lt;br /&gt;　　&lt;br /&gt;　　再让我们翻开美国历史上著名的政府高层的人员名单，看看他们的履历：&lt;br /&gt;　　我们首先介绍的是有“美国中情局之父”之称的艾伦•杜勒斯，于1953年担任中情局局长，任职11年，彻底让中央情报局成为世界最大的恐怖组织，不，是情报组织，其丰功伟业让人赞叹，让我们看看他的履历：&lt;br /&gt;　　1916-1926，担任外交工作。&lt;br /&gt;　　1926-1943，进入美国垄断水果公司——联合水果公司&lt;br /&gt;　　1943-1953，担任瑞士情报站负责人。&lt;br /&gt;　　1953年担任中情报局局长。&lt;br /&gt;　 　此人最大的功劳莫过于在上任1年后也就是1954年，危地马拉政府总统阿本斯和联合水果公司在土地和财产上产生纠纷，于是1954年中情局策划了危地马 拉政变，这位民选总统被中情局推翻了，当然这位总统既不是共产主义者也不打算投靠苏联或者对美国不利，这场政变也对打击苏联和维护美国国家利益无关，只是 为了联合水果公司的利益。&lt;br /&gt;　　&lt;br /&gt;　　然后是著名的布什父子，这父子天生跟伊拉克过不去，老子打完了儿子继续打。&lt;br /&gt;　　先说说老布什，我们省略掉那些过场直接看精彩的地方：&lt;br /&gt;　　二战结束后退伍，进入耶鲁大学攻读经济学，1948年获经济学学士学位。毕业后到得克萨斯州经营石油业。&lt;br /&gt;　　1951年与人创办布什－奥弗比石油开发公司。&lt;br /&gt;　　1953年至1959年是扎帕塔石油公司的创办人和董事。1956年至1964年是休斯敦扎帕塔近海石油公司总经理。&lt;br /&gt;　　……&lt;br /&gt;　　1976年至1977年任中央情报局局长。后任赖斯大学副教授，并在得克萨斯州经商。还是达拉斯、伦敦、休斯敦等地第一国际银行和一些公司的董事，也是哈特基金会会长。&lt;br /&gt;　　接着是小布什：&lt;br /&gt;　　1975年获得了MBA学位，（使他成为第一个有MBA学位的总统），毕业后布什开始从事德州的石油产业。&lt;br /&gt;　　1978年竞选议员失败后继续经营石油产业，成为了好几间企业的合伙人或总裁，包括了他自行创立的布什能源公司。&lt;br /&gt;　　&lt;br /&gt;　 　发现了什么没有？在美国无论是是当中央情报局局长还是总统，他们的履历上必然有在经济界浓厚的一笔，当然，他们的政策也大多跟经济上的履历挂钩，只不过 他们最共同的地方就是他们都不过是美国巨大经济集团手中的棋子，为了经济集团的利益不惜不断的颠覆别人的国家，甚至发动战争武装侵略。当然冲锋在第一线， 并且最后吃下这个恶果来承受受害国仇恨的则是那些美国平民——谁叫你欠人家那么多钱呢，充当炮灰也是应该的。为什么美国人在国际上那么遭人恨，谁导致的？ 他们又是在为谁挡子弹？&lt;br /&gt;　　&lt;br /&gt;　　在中国，我们最讨厌的就是官商勾结，而在美国，人们不必担心这点，因为官就是商，商就是官，只是一个头衔 不同而已。这些大财团的总裁合伙人摇身一变就可以掌管CIA甚至整个国家，当然他们在自己公司的股份从来没有动过，是为了那年仅30万美圆的总统年薪为美 国人民效力还是为了从经济集团那里获得取之不尽的金钱为他们效力？&lt;br /&gt;　　&lt;br /&gt;　　曾经有过一篇《死于贫困的美国总统》但是可惜，自从第十八任总统尤利西斯.格兰特之后，后来的美国总统却再也没有贫困的威胁，那么是谁把他们从贫困中拯救出来的呢？&lt;br /&gt;　　&lt;br /&gt;　 　美国的经济集团控制了整个国家，正如马克思所预言的，经济集团的唯一目的就是聚敛财富，而资本主义的手段就是掠夺，掠夺，不断的掠夺。于是，美国这个庞 然大物就成了他们掠夺世界的巨大战车，既可以为他们挡风遮雨挡子弹，又可以打着国家的旗号做那些见不得人的勾当和赤裸裸的武装侵略，而美国的政府不过是他 们的傀儡，人民不过是邪教信徒般可以肆意驱使和牺牲的廉价低值易耗品。只要有利益，他们可以毫不犹豫的牺牲美国和美国人民哪怕世界人民的利益，即使是同胞 也不例外。&lt;br /&gt;　　&lt;br /&gt;　　“金钱没有祖国，金融家不知何为爱国和高尚，他们唯一的目的就是获利”&lt;br /&gt;　　——波拿马，拿破仑&lt;br /&gt;　　&lt;br /&gt;　 　阿道夫，希特勒并不是个反犹主义者，起码在他的前半生是这样的，他是中立主义者，但是当他走上德国政治舞台后，发现在德国经济萧条的时候，每7个德国人 中有6个失业，生活在贫困和饥饿中，而犹太人的银行家和金融家却依然在大发横财，并且控制了整个德国的经济，包括货币发行，他们可以收买议员，让他们为自 己的集团继续敛财，于是他发誓要把这些犹太人的“既得利益集团”铲除，当然后来这种心理的扩大导致他成为一个种族清洗主义者，但是他夺回了德国的经济权利 和国家权利，并且在华尔街的支持下仅6年就完成了战争准备，而支持他的是国际清算银行，美国银行家和大企业共同组建的庞大银行组织，甚至在二战进行到最激 烈的时候，大量来自美国的货款依然通过瑞士的国际清算银行进入德国的帐户，帮助他们继续把战争维持下去（因为美国还没准备好，而德国不能在美国准备好前就 被打败）&lt;br /&gt;　　&lt;br /&gt;　　“纳粹政府有8500万瑞士金法郎存在国际清算银行，该银行大部分董事都是纳粹官员，而美国人的金钱却一直流向那里。”&lt;br /&gt;　　——众议员约瀚，靠斐（1944年1月）&lt;br /&gt;　　&lt;br /&gt;　　二，美国对世界的经济掠夺&lt;br /&gt;　　&lt;br /&gt;　　很多美国人很奇怪，是啊，他们本身心地善良，喜欢帮助别人，同时还“热心援助”其他国家，为什么他们还被全世界人民所憎恨？但是他们并没有意识到，正是他们充当了金融集团的打手的角色才被世界所厌恶。&lt;br /&gt;　　&lt;br /&gt;　 　同建立巨大的殖民地国家不同，美国的幕后是银行金融经济王朝统治，所以他们的手段也有别于一般的老牌殖民帝国，尤其是在21世纪的今天，他们敛财的手段 可谓与时具进，日新月异。尤其是面对寻求发展的第三世界国家，美国人张开了他们的血盆大口。当然不会再是单一的战舰大炮，他们有个好听的名字“国际货币基 金组织”“世界银行”“亚洲发展银行”,接下来就像星球大战3部曲一样完美无缺：&lt;br /&gt;　　&lt;br /&gt;　　1，派遣“经济刺客”，这些经济刺客无论是哪个 街头招募来的，履历上一律都是美国名牌大学经济学的教授专家，这些人打着帮助经济规划的旗号，让这些国家的政府听信他们的花言巧语，相信自己国家需要建设 大量的项目，接着他再游说该国主要决策者从美联储，世界银行等他们控制的组织里大量贷款，去建造那些可能用的上或者根本用不上的大型建筑，并且许诺可以给 这些决策者巨额的贿赂和回扣。（最有意思的例子，当他们计划给印尼政府贷款修建大型水电站的时候，所有的工程师都置疑印尼在未来100年里是否需要用到这 么大功率的水电站，也反对其对环境的破坏，于是为了说服印尼政府他们找来“经济学家”预测印尼未来经济发展的速度，其中预测只有8%的被抄了，预测每年达 到19%的提升了，于是他们得到“结论”——由于印尼发展速度过快，电力需求也会越来越高所以这样的大水电站是必要的）&lt;br /&gt;　　&lt;br /&gt;　　2， 对方一旦同意贷款，则要求他们用贷款的钱聘请“美国公司”（实际是他们旗下的相关公司）来承接这些工程。“实际上只是把自己的钱从左口袋里拿出，经别人的手放回右口袋。”&lt;br /&gt;　　&lt;br /&gt;　　3， 工程完工，皆大欢喜，当然，那个国家需要把几十年国民收入统统用来换债务，包括巨额的利息，如果你还不起，那对不起了，你作为抵押的大型国企，银行，甚至土地都会被他们一点不剩的拿走。&lt;br /&gt;　　&lt;br /&gt;　　完美的空手套白狼，当然，他们最害怕的就是那些“无赖国家”“流氓国家”比如这些国家死心塌地就是不贷款，或者拒绝偿还高额利息，然后就该“美国人民民主专政”了，否则养活那么多美国人做什么用啊？&lt;br /&gt;　　&lt;br /&gt;　　1， 以CIA为主体，散步谣言，支持反对派，发动颜色革命，强行将“无赖”“流氓”的领导人赶下台，接着再由CIA秘密支持的这些洋奴来找他们贷款，出卖国家利益。&lt;br /&gt;　　&lt;br /&gt;　　2， 当行动1失败后， 派杀手直接干掉该国领导人，敲山震虎，给他的继任者提个醒。&lt;br /&gt;　　&lt;br /&gt;　　3， 当行动2失败后，那么所有的媒体突然发现该国领导人犯有“种族屠杀”“压迫民主”等等一系列反人类罪行，然后“正义”的美国大兵会把这个国家先炸平，然后上去活捉该国总统，抓回去关起来或干掉，扶植一个言听计从的傀儡政府。&lt;br /&gt;　　&lt;br /&gt;　 　于是第三世界国家从西方殖民者手中刚刚独立，就接着被“经济殖民”背上了需要偿还几十年甚至百年的巨额债务，为此，他们必须拿出本应用于国内发展，教 育，医疗，经济，军事的钱来偿还这些债务，当他们偿还不上的时候，只有拿自己抵押的东西来送给这些美国银行家，包括当地银行，企业，土地等。为什么战火后 一片瓦砾的中国在封锁中能够迅速崛起，而同样没有经受战火的很多第三世界国家无论怎么发展却始终无法摆脱贫困，你可以看看他们全国上下努力创造的财富都到 了谁的腰包里，他们的经济被谁操纵着，他们可以看见无数大型的工程在建造，但是富了的永远是那少数人，大多数人依然贫困……&lt;br /&gt;　　&lt;br /&gt;　　 2003年，泰国总理他信庄严的站在泰国国旗下，此时，他们已经提前还完了欠下国际货币基金组织的贷款120亿美圆，同时为了偿还这些钱主动让泰株贬值造 成的损失还无法估量。他宣誓绝对不会再向这些国际银行家们要一分“援助”，甚至鼓励泰国企业拒绝偿还他们欠这些银行家的债务，2006年，泰国政变，他信 被推翻……&lt;br /&gt;　　&lt;br /&gt;　　当然这只是手段之一，还有就是众所周知的经济泡沫，最著名的例子就是日本，日本的金融市场被大量外资推到顶点，外汇储 备庞大，然后先操纵日圆升值，导致其外汇缩水，接着发现依然无法撼动日本金融市场的时候，他们要求日本政府在金融市场上开通“任沽”，“做空”“股指期 货”等业务（之前日本根本没此项业务），接着将自己的证券在最高位抛出，全部做空（就是预计指数会大跌，跌的话就大赚）直接把日本金融市场砸到最底端，让 日本经济崩溃后大量从最底端收购股票包括日本支柱产业，从而可以永久的在日本玩这种“剪羊毛”的游戏，当然，他们在韩国遭受了失败，尽管我不喜欢韩国人， 但是当韩国的经济和大企业即将被他们全面收购，而韩国的货币被同时贬得一文不值的时候，每一个韩国人从自己的家里拿出所有的金银首饰，全部上缴政府，用黄 金偿还债务……&lt;br /&gt;　　&lt;br /&gt;　　当然，以上这种方法，最关键的前提就是你要掠夺的对象的制度符合你的要求，假如你的金融制度还不符合，那么他们的 说客又会来推销“美国完美的经济制度”，当然，或许人们忘记了1929年美国经济大萧条的时候，他们实行的也是这种制度，只不过那次受害的是美国人，发财 的依然是银行家们，甚至罗斯福新政，以“蓝鹰”计划，打着重恢复金融信心的口号帮助这些大银行家彻底垄断了美国的银行金融领域，将所有的中小型银行一网打 尽。&lt;br /&gt;　　&lt;br /&gt;　　美国人喜欢独裁者，假如这个独裁者是可以控制住无限的找他们贷款然后拿国民利益去偿还的话，无论他是喜欢种族灭绝还是吃人肉，他都会被美国的媒体称为“民主国家的典范”。&lt;br /&gt;　　&lt;br /&gt;　　当然美国人更喜欢民主制度，因为国家权利的分散，僵化的法律体系，为了上台不择手段甚至私下里可以向任何人摇尾乞怜的政党，以及为了保护本党派的利益不惜牺牲国家利益的特性，都方便美国庞大的金融帝国进行实际上的控制。&lt;br /&gt;　　&lt;br /&gt;　　美国人反对独裁，因为不管独裁者如何，作为国家的统治者，他有可能为了本国国家利益，拒绝美国的“援助”和好意（独裁和爱国是两个概念），于是这位独裁者铁定要死在美国人的手里，无论是刺客还是美国大兵的坦克。&lt;br /&gt;　　&lt;br /&gt;　　美国人也反对民主，因为有的民主选举出来的政府，可以排除一切党派的概念，全心为国家利益而努力，于是也就注定了这样的“民主”是不可能长久的，不是被“更民主”的人推翻就是没山姆大叔的陆战队做掉。&lt;br /&gt;　　&lt;br /&gt;　　为什么会造成这种精神分裂的结果呢？看看美国媒体背后用金钱支持的他们的集团就明白了，即使他们向戈陪尔发誓“我们的新闻是自由的。”&lt;br /&gt;　　&lt;br /&gt;　 　“在美国，究竟还有没有人是清白无辜的？我们国家绝大多数的人，都是靠剥削发展中国家来维持我们美好的生活——当然，获得最多好处的是处于社会经济体制 金字塔最顶端的人……这些国家不得不让美国公司肆意开采他们的自然资源，也不得不忍痛把国内的教育，医疗和其他社会建设计划放在一边，而是首先偿还我们的 债务，但是实际上，我们已经从建设工程中回笼了大部分资金，尽管计算贷款的公式上并没有算上这些钱，难道‘大部分美国人不知道’的借口就意味着我们是无罪 的吗？也许有人会说‘不知情’，也许因为有人故意误导，总之有很多借口，但是你能说你是无辜的吗？”&lt;br /&gt;　　-----约翰，帕金斯（做出印尼发展速度将达到19%的‘经济学家’）&lt;br /&gt;　　&lt;br /&gt;　　三，金融帝国的目的和最大威胁&lt;br /&gt;　　&lt;br /&gt;　 　建立一个世界政府，世界新秩序，这恐怕是国际金融集团，银行集团的最终目的，当然你不要指望这是一个可以团结世界人民的政府，他依然是一个方便银行家可 以随意掠夺任何国家任何地区财富进自己口袋的，他不是政治性的，只是经济性的，因为金融只有一个目的，那就是敛财。而在他们的体系里，实际上只有两种人， 一是他们这些极少数精英的有钱人作为世界的主人，而广大的普通人只能为他们做奴隶，不断的为他们提供财富，他们要打破一切人类固有的道德，信仰，以金钱来 作为世界唯一的标准，当然，他们用自己的“基地”美国给人们展示了好的一面，让人们产生对那个体系的向往，但是正如美国的约翰，帕金斯在《一个经济杀手的 自白中》所说的：&lt;br /&gt;　　&lt;br /&gt;　　“我怀疑，地球上有限的资源能否让世界人民都过上美国人那样富裕的生活，实际上，在美国境内也有千千万万的居民 生活在贫困中。另外，我不十分清楚其他国家的人是否真心想要过上和我们一样的生活。美国国内关于暴力，经济衰退，滥用毒品，离婚和犯罪的数据也说明了：尽 管我们是历史上最富有的国家之一，但是我们也许是最不快乐的国家之一。那么我们为什么要强迫别人模仿自己？”&lt;br /&gt;　　&lt;br /&gt;　　但是他们有一个纯天然的敌人，当卡尔，马克思揭露出这些“资本主义本性”的时候，他已经在历史上写下了浓重的一笔。&lt;br /&gt;　　&lt;br /&gt;　 　没有什么比银行家们和金融家们更加害怕这种理论，国家控制经济，国家控制金融，防止银行业和金融业左右国家，世界金融帝国的梦想在瞬间崩塌。于是我们可 以看到，当共产主义理论出现的时候，世界对他的恐慌远大于君主立宪制的复辟。所有企图尝试这种制度的国家都遭到了一切手段的打击，或许在今天这些理论已经 被大部分普通人所淡忘，即使是生活在社会主义国家的我们，但是在大洋彼岸，有那么一群人却没有忘记，而且决心付出行动。&lt;br /&gt;　　&lt;br /&gt;　　当索罗斯代表金融集团制造亚洲经济危机的时候，我们记住了他，但是或许大家并不知道，他直接参与了解体苏联的行动，因为他早期的头衔是“慈善家”，专门在东欧和前苏联发表关于“极端个人自由主义”“经济自由主义”的演说，得到了美国国会和当地傻X们的赞赏。&lt;br /&gt;　　&lt;br /&gt;　 　“在合法性和人道主义者的面纱背后，人们总可以看到一帮‘亿万富翁’的‘慈善家’，以及他们所资助的各种组织，比如，开放社会协会，福特基金会，美国和 平协会，国家民主捐助基金，人权观察，大赦国际，世界危机组织等……在这些组织的配合下，不仅可以塑造而且可以制造新闻，公共议程和公众观点，以控制世界 和资源，推动美国制造的完美世界统一的理想。”&lt;br /&gt;　　——吉列斯，埃马瑞（美国评论家）&lt;br /&gt;　　&lt;br /&gt;　　也赶上北极熊的运气不好，遇上一个 大脑刚被门夹过的领导人，在野心家叶利钦的辅助下，把这个最大的社会主义国家给拆了。于是银行家们欢呼雀跃的同时，还没忘记去侵吞前苏联庞大的资产，于是 一群“经济专家”蜂拥前往俄罗斯，瞬间让前苏联遗留的庞大资产转移到那些国际银行家买办的手里……&lt;br /&gt;　　&lt;br /&gt;　　当今天前苏联已经解体17年 了，网上甚至有人在鼓吹前苏联自杀后“自由”“民主”了，无限向往，但是可惜，有些数据有人是不敢说的，在那些虚头八脑的看不见，摸不着的“民主自由”后 面，俄罗斯人的收入少了，寿命减短了，而前苏联时期最被人痛恨的*不但没有丝毫减轻，反而成几何级数增长，俄罗斯在 2007年全世界清廉国家排名为127位，而继续走社会主义道路的中国清廉排名已经从78位上升到70位，而俄罗斯的贫富差距不断拉大，富人每年都更加富 有，而穷人更穷。不过不得不说，世界经济集团在前苏联利用对手的低能和白痴打了一个大胜仗，于是他们把目光再次转向中国，中国才是对他们威胁最大的国 家……&lt;br /&gt;&lt;br /&gt;　　四，最后的阵地—中国&lt;br /&gt;　　&lt;br /&gt;　　世界经济集团对中国的掠夺，从清朝时就开始了，网上有人不断的歌功颂德的美国人 退还庚子赔款的“伟大举动”，只可惜大多数中国人对这种先抢劫你，再用抢劫你的一部分钱给你弄个什么东西的举动不感冒，况且这一举动的原因来自八国联军司 令瓦德西给各国首脑写的信，信中明确指出，义和团运动已经证明了中国是一个不会屈服于外来势力的民族，反抗不会停止，无论哪个国家都没有足够的兵力和精力 来控制这个国家，因此他建议采取以中国人代理来统治和掠夺中国的手段，于是美国人投资建造了清华大学，美其名曰——支持中国的教育事业（全国N多文盲的时 候不去弄小学或者扫盲而办大学？）规定该大学每年必须向美国派遣多少多少留学生，美国伊里诺大学校长詹姆士在1906年给罗斯福的一份备忘录中声称：“哪 一个国家能够做到教育这一代中国青年人，哪一个国家就能由于这方面所支付的努力，而在精神和商业上的影响取回最大的收获。”“商业追随精神上的支配，比追 随军旗更为可靠。”当然，这种一相情愿的做法显然是由于不了解中国所致，他们小看了中国人骨子里的东西，往后的日子里，这些留学美国的人虽然学说英语，学 美国的东西，即使在异国他乡却始终没忘记自己是中国人，要为中国而努力……&lt;br /&gt;　　&lt;br /&gt;　　在中国军阀混战的时候，西方经济集团以军火为贷款，让 各派军阀必须以国家利益为抵押换取军火，当北伐战争开始后，他们又毫不犹豫的命令各国军队直接干涉北伐，制造了南京惨案，直到蒋介石背叛革命，向外国承 诺，我的政府可以继承北洋军阀以来所有的外债，这才让西方国家开始放弃他们支持的军阀全力支持蒋介石，而这笔外债有多少呢？折合国币达 744447593.98元，从1927年至1933年，对有确实担保的外债，清偿本息达二亿四千九百余万银元，截止至1934年6月，已承认并归入整理 的达十亿五千六百万银元。遇上这样一个冤大头，西方的银行家们终于眉开眼笑了，当然，债务是永远还不完的，老蒋的四大家族一面借债务，一面用国家利益来 还，直到1949年借债额共达3068000000元，这些债务加上偿还的利息，相信中国人民别想翻身了……&lt;br /&gt;　　&lt;br /&gt;　　当司徒雷登看到人民 解放军的军队从楼下通过的时候，他没有走，留了下来，后来被写进了著名的《别了，司徒雷登》，一些脑残的家伙以为据，说毛主席当年凭借一时的意气断送了中 美建交的契机，但是当年司徒雷登留下的原因则是，“睁起眼睛看着，希望开设新店，捞一把。”其实很简单，假如共产党取代了国民政府，那么债务也应该继承， 这是西方经济集团的算盘，总之，他们不能有坏帐。但是毛主席不是老蒋，不会为了让华尔街的金融家们高兴就让人民共和国刚诞生就平白无故背上十辈子都还不完 的外债，所以司徒雷登必须滚蛋，这是真正意义上的废除不平等条约，中国的经济终于可以重新开始，而不是从一个无底洞中绝望的缓慢往上爬，当然，美国最心疼 的不是蒋介石政府的溃败，而是那些天价的贷款永远无法要回，因为逃到台湾的蒋介石凭借一个小岛永远无法偿还那些债务……&lt;br /&gt;　　&lt;br /&gt;　　于是新中国就在一片敌视的封锁中傲然挺立着，用自己的手去建造自己的国家，无论路途多么困难。&lt;br /&gt;　　&lt;br /&gt;　 　毛主席有句话，“帝国主义亡我之心不死。”这是真理，当然面对一个如此强大的中国，他们不敢把军队派过来送死，在核武器存在的今天，贸然的战争是毁灭性 的，他们在寻找一个战争以外的方法，改革开放给了他们这个机会，有机会让外资进入中国，也有机会合法的雇佣中国的“买办”来帮助他们进行活动，但是他们却 很不高兴，为什么？因为在中国始终有一个中国共产党站在他们上面，注意着他们的一举一动，防止他们对中国进行大规模的经济掠夺，无论你如何钻法律的空子， 无论你如何花言巧语，也无法随心所裕的行动，当然，他们可以用大把的钞票收买一些官员，但是无法收买整个党，更无法用钱来控制住整个国家，即使投入再多的 钱，中国的支柱产业，钢铁，军工，资源等都被牢牢的控制在国家手里，他们更担心，一旦遇上类似日本那种掠夺，共产党是否会用他们手中的权利越过法律来强行 制止对中国的掠夺，这确实让他们坐立不安。更为恼火的是中国的外援，中国对非洲兄弟国家的援助没有丝毫的贷款性质，是纯粹意义上的帮助，这不但让非洲国家 的兄弟和中国走得更近，而且让他们找到了一种新的选择，不用靠找西方国家贷款，然后偿还一百几十年的外债，也可以开发国内资源，然后进行贸易促进经济增 长。&lt;br /&gt;　　&lt;br /&gt;　　天那，这是对非洲人民“民主”的践踏，是对他们“自由”的亵渎，于是西方新殖民者们怒不可愤，长此以往，他们找谁贷款去啊？ 于是他们突然发现了一个还在进行内战的国家苏丹，这个国家有石油资源，但是却缺乏开采的能力，于是中国人去援助建造了石油设施，帮助苏丹政府开采石油，然 后和苏丹进行合法贸易，这是多么大逆不道的事情啊。要是让他们来，先说服政府贷款多少钱修建石油设施，然后以油田作为抵押，让苏丹这个穷国担负起上百年的 巨大债务，他们只要坐在华尔街数钞票就可以了，当然即使你还不上也不要紧，油田跑不了，至于达尔富尔，达尔富尔在哪？但是中国彻底粉碎了他们的梦想，于是 愤怒的他们哭天喊地的大叫 “苏丹人道主义危机”，中国是“幕后帮凶”，当然潜台词是你们怎么能“抢我们未来百年的钱呢？”不过不要紧，反正媒体都掌握在他们手上，他们怎么说美国人 就怎么信，连奴隶主都能成为“自由斗士”还有什么是不能继续编造和篡改的，所以说美国人喜欢当炮灰怨不得别人，谁让他们自己头脑简单呢。&lt;br /&gt;　　&lt;br /&gt;　　　&lt;br /&gt;　 　于是他们会用上一切可能用到的手段来瓦解这个可以威胁他们敛财的国家，那些在前苏联用过的和没用过的手段，那些可能奏效和不太可能奏效的手段全部用上， 他们可以在美国国内扶植那些大脑有病的疯子甚至西藏的奴隶主和新疆的恐怖分子，用所有的媒体不屑余利的打击中国，把中国描写成一个“邪恶帝国”，甚至不惜 用冷战的手段来对全世界进行“社会主义威胁”的反复宣传，以达到丑化孤立中国的目的，当然，他们时刻也不会忘记对中国的“民主”教育，收买一些败类和天真 者，让他们不屑余力的进行宣传，指望这种“愚公移山”的行动或许会在哪天能够取得成效，让他们可以像在前苏联那样解决社会主义问题的同时再大捞一把，只可 惜他们忘记了，中国是喜马拉雅山，高度是每年在增加的……&lt;br /&gt;　　&lt;br /&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/3070186580249183534-518094596231501551?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/518094596231501551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=518094596231501551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/518094596231501551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/518094596231501551'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/blog-post_15.html' title='美联储'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5096651558330494111</id><published>2008-10-15T22:35:00.001-07:00</published><updated>2008-10-15T22:35:28.045-07:00</updated><title type='text'>关闭自动更新分两步！</title><content type='html'>关闭自动更新分两步！&lt;br /&gt;　　第一，“我的电脑”点右键，选“属性”，“自动更新”把有关自动更新的选项去掉。&lt;br /&gt;　　第二，“我的电脑”点右键，选“管理”，点左边“服务和应用程序”旁的加号，展开，点“服务”。&lt;br /&gt;　　或者直接在“运行”中输入“Services.msc”打开服务设置窗口。&lt;br /&gt;　　在“服务”列表中，找到“AutomaticUpdates”这一项，双击，弹出的属性窗口中，“启动类型”设置为“已禁用”，确定即可。&lt;br /&gt;　　“AutomaticUpdates”这个进程的作用是:自动从WindowsUpdate网络更新补丁。利用WindowsUpdate功能进行升级。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5096651558330494111?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5096651558330494111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5096651558330494111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5096651558330494111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5096651558330494111'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/blog-post.html' title='关闭自动更新分两步！'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2183849695537775412</id><published>2008-10-11T00:06:00.000-07:00</published><updated>2008-10-11T10:20:02.132-07:00</updated><title type='text'>Network Performance links</title><content type='html'>&lt;span class="Apple-style-span"  style="  font-weight: bold; font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Network Performance links&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:'times new roman';"&gt;&lt;a href="http://www.csm.ornl.gov/~dunigan/netperf/netlinks.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.csm.ornl.gov/~dunigan/netperf/netlinks.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;TCP auto-tuning zoo&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:'times new roman';"&gt;&lt;a href="http://www.csm.ornl.gov/~dunigan/netperf/auto.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.csm.ornl.gov/~dunigan/netperf/auto.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-family:'times new roman';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  font-weight: bold;font-family:'times new roman';font-size:48px;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://unix.derkeiler.com/Mailing-Lists/FreeBSD/hackers/2005-12/msg00040.html"&gt;http://unix.derkeiler.com/Mailing-Lists/FreeBSD/hackers/2005-12/msg00040.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 13px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 13px; font-weight: bold;"&gt;TCP testing&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 13px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.linuxfoundation.org/en/Net:TCP_testing"&gt;http://www.linuxfoundation.org/en/Net:TCP_testing&lt;/a&gt;&lt;br /&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/3070186580249183534-2183849695537775412?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2183849695537775412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2183849695537775412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2183849695537775412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2183849695537775412'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/network-performance-links.html' title='Network Performance links'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-441650240108373209</id><published>2008-10-06T23:00:00.001-07:00</published><updated>2008-10-06T23:00:53.068-07:00</updated><title type='text'>A mini-tutorial for TCP-Linux in NS-2</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 24px; font-weight: bold; "&gt;A mini-tutorial for &lt;a href="http://netlab.caltech.edu/projects/ns2tcplinux/ns2linux/index.html"&gt;&lt;span style="font-style: italic; "&gt;TCP-Linux&lt;/span&gt;&lt;/a&gt; in &lt;span style="font-style: italic; "&gt;NS-2&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 24px; font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; font-size: 24px; font-style: italic; font-weight: bold;"&gt;&lt;a href="http://netlab.caltech.edu/projects/ns2tcplinux/ns2linux/tutorial/index.html"&gt;http://netlab.caltech.edu/projects/ns2tcplinux/ns2linux/tutorial/index.html&lt;/a&gt;&lt;br /&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/3070186580249183534-441650240108373209?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/441650240108373209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=441650240108373209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/441650240108373209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/441650240108373209'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/mini-tutorial-for-tcp-linux-in-ns-2.html' title='A mini-tutorial for TCP-Linux in NS-2'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7539997777829128261</id><published>2008-10-06T19:06:00.000-07:00</published><updated>2008-10-06T19:09:53.571-07:00</updated><title type='text'>Windows</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; font-size: 13px; "&gt;Field codes can also be displayed by using the keyboard shortcut of ALT+F9 to toggle the field codes on and off.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; font-size: 13px;"&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;Start &lt;a class="iAs" classname="iAs" href="http://www.ehow.com/how_2257458_display-field-codes-microsoft-word.html#" target="_blank" itxtdid="7011943" style="font-weight: normal !important; border-bottom-color: rgb(0, 100, 0) !important; border-bottom-width: 0.075em !important; border-bottom-style: solid !important; background-color: transparent !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: Arial; font-size: 13px; color: rgb(3, 100, 164); text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; cursor: pointer; "&gt;Microsoft&lt;/a&gt; Word 2003, and open a document that contains field codes that you want to display.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Choose the "Tools" menu, and click on "Customize" to open the "Customize" dialog box.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Select the "Commands" tab from the "Customize" dialog box to display the commands that are available for Microsoft Word sorted by category of type of command.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Opt for "View" from the "Categories" section of the dialog box to display the "View" commands in the "Commands" section of the dialog box.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Click and drag the phrase "View Field Codes" from the "Commands" section of the dialog box to your menu bar or any toolbar open in Word. A button will appear that looks like an "a" with red brackets surrounding it.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Use the "Close" button to close the "Customize" dialog box.&lt;/div&gt;&lt;div class="Part1 Step" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; clear: left; "&gt;&lt;div class="label" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Georgia; color: rgb(223, 166, 65); padding-right: 10px; display: block; float: left; text-align: center; width: 25px; "&gt;Step&lt;span class="background" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; height: 25px; width: 25px; background-image: url(http://i.ehow.com/images/sprite-misc1.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: 50% -25px; "&gt;&lt;span class="number" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; top: -4px; color: rgb(255, 255, 255); font-size: 21px; font-weight: normal; "&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Select the "View Field Codes" button that you just added to your menu or tool bars. The field codes in your document will now be displayed.&lt;/div&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/3070186580249183534-7539997777829128261?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7539997777829128261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7539997777829128261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7539997777829128261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7539997777829128261'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/windows.html' title='Windows'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5263703155952663756</id><published>2008-10-06T17:25:00.000-07:00</published><updated>2008-10-06T17:26:45.465-07:00</updated><title type='text'>a simple Gaussian</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 15px; line-height: 22px; "&gt;x=points(1,:)-points(1,i);&lt;br /&gt;y=points(2,:)-points(2,i);&lt;br /&gt;z=points(3,:)-points(3,i);&lt;br /&gt;pdf_x=(erf((x+voxel_size/2)/(sqrt(2)*std_x))-erf((x-voxel_size/2)/(sqrt(2)*std_x)))*0.5;&lt;br /&gt;pdf_y=(erf((y+voxel_size/2)/(sqrt(2)*std_y))-erf((y-voxel_size/2)/(sqrt(2)*std_y)))*0.5;&lt;br /&gt;pdf_z=(erf((z+voxel_size/2)/(sqrt(2)*std_z))-erf((z-voxel_size/2)/(sqrt(2)*std_z)))*0.5;&lt;br /&gt;pdf=pdf_x.*pdf_y.*pdf_z;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5263703155952663756?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5263703155952663756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5263703155952663756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5263703155952663756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5263703155952663756'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/simple-gaussian.html' title='a simple Gaussian'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2501679365640774399</id><published>2008-10-06T16:37:00.000-07:00</published><updated>2008-10-06T17:44:09.681-07:00</updated><title type='text'>The C++ Programming Language</title><content type='html'>&lt;span class="Apple-style-span"  style=";font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The C++ Programming Language&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=";font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=";font-family:'Times New Roman';"&gt;&lt;a href="http://www.research.att.com/~bs/3rd.html"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.research.att.com/~bs/3rd.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.cs.iitm.ernet.in/~rakeshp/The%20C++%20Programming%20Language%20Special%203rd%20Edition.pdf&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;a href="http://dl.njfiw.gov.cn/books/C/"&gt;http://dl.njfiw.gov.cn/books/C/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  font-weight: bold;font-family:'Times New Roman';font-size:48px;"&gt;&lt;br /&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/3070186580249183534-2501679365640774399?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2501679365640774399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2501679365640774399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2501679365640774399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2501679365640774399'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/c-programming-language.html' title='The C++ Programming Language'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4870970692649072284</id><published>2008-10-06T13:15:00.000-07:00</published><updated>2008-10-06T13:17:29.457-07:00</updated><title type='text'>tcptrace</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(13, 13, 13); font-family: Verdana; font-size: 12px; line-height: 18px; "&gt;&lt;pre&gt;&lt;code&gt;tcpdump.c:66:18: error: pcap.h: そのようなファイルやディレクトリはありません tcpdump.c:72: error: expected declaration specifiers or ‘...’ before ‘pcap_handler’ tcpdump.c:75: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token tcpdump.c: In function ‘callback’: tcpdump.c:100: error: 不完全型のポインタへの間接参照 tcpdump.c:104: error: ‘pcap’ undeclared (first use in this function) tcpdump.c:104: error: (Each undeclared identifier is reported only once tcpdump.c:104: error: for each function it appears in.) tcpdump.c: In function ‘pread_tcpdump’: tcpdump.c:251: error: ‘pcap’ undeclared (first use in this function) tcpdump.c:251: error: ‘pcap_handler’ undeclared (first use in this function) tcpdump.c:251: error: expected ‘)’ before ‘callback’ tcpdump.c:256: 警告: assignment makes pointer from integer without a cast tcpdump.c:271: error: 不完全型のポインタへの間接参照 tcpdump.c:278: error: 不完全型のポインタへの間接参照 tcpdump.c:288: error: 不完全型のポインタへの間接参照 tcpdump.c:289: error: 不完全型のポインタへの間接参照 tcpdump.c:290: error: 不完全型のポインタへの間接参照 tcpdump.c:291: error: 不完全型のポインタへの間接参照 tcpdump.c: In function ‘is_tcpdump’: tcpdump.c:315: error: ‘pcap’ undeclared (first use in this function) tcpdump.c: In function ‘PcapSavePacket’: tcpdump.c:423: error: storage size of ‘phdr’ isn’t known tcpdump.c:427: error: storage size of ‘fhdr’ isn’t known tcpdump.c:438: error: ‘PCAP_VERSION_MAJOR’ undeclared (first use in this function) tcpdump.c:439: error: ‘PCAP_VERSION_MINOR’ undeclared (first use in this function) make: *** [tcpdump.o] エラー 1&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;---------------------------------------------&lt;/pre&gt;&lt;pre&gt;/usr/lib/libpcap.so.0&lt;/pre&gt;&lt;pre&gt;xxxxx&lt;/pre&gt;&lt;pre&gt;not means that the source is available&lt;/pre&gt;&lt;pre&gt;=&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; white-space: normal; "&gt;&lt;pre&gt;&lt;code&gt;yum install libpcap*&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;=&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; white-space: normal; "&gt;&lt;pre&gt;&lt;code&gt;$ make clean $ make $ su # make install&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4870970692649072284?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4870970692649072284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4870970692649072284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4870970692649072284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4870970692649072284'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/tcptrace.html' title='tcptrace'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8452930536421357356</id><published>2008-10-05T23:07:00.001-07:00</published><updated>2008-10-07T22:48:15.381-07:00</updated><title type='text'>Measuring TCP Congestion Windows</title><content type='html'>&lt;span class="Apple-style-span"  style="  font-weight: bold; font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Measuring TCP Congestion Windows&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:verdana;"&gt;&lt;a href="http://linuxgazette.net/136/pfeiffer.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://linuxgazette.net/136/pfeiffer.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;TCP and Linux' Pluggable Congestion Control Algorithms&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:verdana;"&gt;&lt;a href="http://linuxgazette.net/135/pfeiffer.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://linuxgazette.net/135/pfeiffer.html&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  font-weight: bold;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sender&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  font-weight: bold;font-family:verdana;font-size:48px;"&gt;&lt;a href="http://linuxgazette.net/137/pfeiffer.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://linuxgazette.net/137/pfeiffer.html&lt;/span&gt;&lt;/a&gt;&lt;br /&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/3070186580249183534-8452930536421357356?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8452930536421357356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8452930536421357356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8452930536421357356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8452930536421357356'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/measuring-tcp-congestion-windows.html' title='Measuring TCP Congestion Windows'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8652277400291078885</id><published>2008-10-05T20:33:00.001-07:00</published><updated>2008-10-05T20:33:45.518-07:00</updated><title type='text'>linux networking</title><content type='html'>&lt;div&gt;linu networking&lt;/div&gt;&lt;a href="http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html"&gt;http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html&lt;/a&gt;&lt;div&gt;&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/3070186580249183534-8652277400291078885?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8652277400291078885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8652277400291078885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8652277400291078885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8652277400291078885'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/linux-networking.html' title='linux networking'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-6575105269882215660</id><published>2008-10-03T19:53:00.000-07:00</published><updated>2008-10-03T19:54:02.682-07:00</updated><title type='text'>TCP and Linux' Pluggable Congestion Control Algorithms</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; "&gt;&lt;h1 style="font-size: 19px; text-align: center; "&gt;TCP and Linux' Pluggable Congestion Control Algorithms&lt;/h1&gt;&lt;p id="by" style="text-align: center; "&gt;&lt;b&gt;By &lt;a href="http://linuxgazette.net/authors/pfeiffer.html" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;René Pfeiffer&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Many months ago I had a few drinks with some fellow hackers. The discussion touched on the inevitable "my-Linux-is-better-than-your-*BSD-and-vice-versa" topic. I tried to argue in favour of Linux because it knows multiple TCP variants. They corrected me and said that there is only one TCP and that *BSD speaks it very well. Days after the side effects of the drinks were gone, I remembered the discussion and felt a sense of &lt;a href="http://wordsmith.org/words/esprit_d_escalier.html" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;&lt;em style="line-height: 1em; "&gt;l'esprit d'escalier&lt;/em&gt;&lt;/a&gt;. Of course, there is a clear definition what the famous Tricky Communication Protocol (TCP) looks like, but there are many ways of dealing with situations in Wide Area Networks (WANs) where congestion, round-trip times, and packet loss play a major role. That's what I wanted to say. Enter Linux's pluggable congestion control algorithms.&lt;/p&gt;&lt;h3 style="font-size: 14px; "&gt;Transmission Control Protocol (TCP)&lt;/h3&gt;&lt;p&gt;Every time you wish to transport data in a reliable way, you probably use TCP (or your car, but let's stick to networks). TCP is able to transport large amounts of data in the correct order over unreliable network links. The protocol keeps track of sent data, detects lost packets, and retransmits them if necessary. This is done by acknowledging every packet to the sender. Basically, this is how TCP works. My article would end here were it not for some parameters of TCP connections that make things very interesting and complicated. (To some, those attributes are the same.) The first perturbation stems from the network itself, and materialises in the form of three parameters that pertain to every TCP connection.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Bandwidth&lt;br /&gt;The bandwidth indicates how many bits per time frame the link can transport. It is usually denoted by &lt;em style="line-height: 1em; "&gt;Mbit/S&lt;/em&gt; or &lt;em style="line-height: 1em; "&gt;kbit/S&lt;/em&gt; and limited by the hardware. Most people think that this indicates solely the performance of the network link. This is not quite true, as I will explain shortly.&lt;/li&gt;&lt;li&gt;Round-Trip Time (RTT)&lt;br /&gt;Consider a network link between points A and B. The time a packet needs to travel from A to B and then back to A is called the Round-Trip Time. The RTT is highly variable, especially when a node on the way experiences congestion. Typically, you have an RTT from milliseconds to seconds (in the worst case).&lt;/li&gt;&lt;li&gt;Packet loss&lt;br /&gt;Packets of a network transmission can get dropped. The ratio of lost packets to transported packets is called packet loss. There are many reasons for packet loss. A router might be under heavy load, a frame might get corrupted by interference (wireless networks like to drop packets this way), or an Ethernet switch may detect a wrong checksum.&lt;/li&gt;&lt;/ol&gt;So, you see that a 1000 Mbit/s link will get you nowhere if it has 25% packet loss and an RTT of several seconds. The overall speed of your transmission depends on all three parameters. Your local Ethernet is (with luck) fine, because it has 100 Mbit/s, 0% packet loss and RTTs below 1 millisecond. As soon as the RTT rises, the management of the packets "in flight", i.e., the ones sent but not yet acknowledged by the receiver, determine the real throughput of the data. RTT and bandwidth are often combined and multiplied into the &lt;em style="line-height: 1em; "&gt;bandwidth-delay product&lt;/em&gt;.&lt;p&gt;&lt;/p&gt;&lt;p&gt;How does TCP manage the parameter settings? Fortunately the protocol has some auto-tuning properties. One important parameter is the &lt;em style="line-height: 1em; "&gt;TCP window&lt;/em&gt;. The window is the amount of data the sender can send before receiving an acknowledgement. This means that, as long as the window is "not full", the sender can blindly keep sending packets. As soon as the window is filled, the sender stops sending, and waits for acknowledgement packets. This is TCP's main mechanism of flow control, that enables it to detect bottlenecks in the network during a transmission. That's why it's also called the &lt;em style="line-height: 1em; "&gt;congestion window&lt;/em&gt;. The default window size varies. Usually Linux starts at 32 kB. The window size is flexible, and can be changed during the transfer. This mechanism is called &lt;em style="line-height: 1em; "&gt;window scaling&lt;/em&gt;. Starting with Linux kernel 2.6.17, the window can be up to 4 MB. The window can grow only as long as there is no packet loss. That's one of the reasons why data throughput is reduced on lossy network links.&lt;/p&gt;&lt;p&gt;TCP has some more interesting features, but I won't go into more details. We now know enough, for the features of the Linux kernel I wish to describe.&lt;/p&gt;&lt;div class="pullquotes"&gt;&lt;a name="pullquote_135_pfeiffer_1"&gt;&lt;/a&gt;&lt;table border="2" style="width: 85%; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left" bgcolor="#B3C7BF" style="padding-top: 10px; padding-right: 20px; padding-bottom: 10px; padding-left: 20px; "&gt;&lt;sup&gt;Category: Protocols&lt;/sup&gt; &lt;br /&gt;&lt;strong style="font-size: 13px; "&gt;TCP is able to transport large amounts of data in the correct order over unreliable network links. The protocol keeps track of sent data, detects lost packets, and retransmits them if necessary.&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3 style="font-size: 14px; "&gt;Always look on the WAN side of life&lt;/h3&gt;&lt;p&gt;The right size of the TCP window is critical to efficient transmission. The tricky part is to find that right size. Either a too-small and a too-big window will degrade throughput. A good guess is the use the bandwidth-delay product. Furthermore, you can base estimates on periodically measured RTT or packet loss, and make it dynamic. This is why several researchers have explored algorithms to help TCP tune itself better, under certain circumstances. Beginning with 2.6.13, the Linux kernel supports plugins for the TCP stack, and enables switching between algorithms depending on what the system is connected to. The first strategy on the Internet was TCP Tahoe, proposed in 1988. A later variant was TCP Reno, now widely implemented in network stacks, and its successor TCP NewReno. Currently, the Linux kernel includes the following algorithms (as of kernel 2.6.19.1):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;High Speed TCP&lt;br /&gt;The algorithm is described in RFC 3649. The main use is for connections with large bandwidth and large RTT (such as Gbit/s and 100 ms RTT).&lt;/li&gt;&lt;li&gt;H-TCP&lt;br /&gt;H-TCP was proposed by the Hamilton Institute for transmissions that recover more quickly after a congestion event. It is also designed for links with high bandwidth and RTT.&lt;/li&gt;&lt;li&gt;Scalable TCP&lt;br /&gt;This is another algorithm for WAN links with high bandwidth and RTT. One of its design goals is a quick recovery of the window size after a congestion event. It achieves this goal by resetting the window to a higher value than standard TCP.&lt;/li&gt;&lt;li&gt;TCP BIC&lt;br /&gt;BIC is the abbreviation for Binary Increase Congestion control. BIC uses a unique window growth function. In case of packet loss, the window is reduced by a multiplicative factor. The window size just before and after the reduction is then used as parameters for a binary search for the new window size. BIC was used as standard algorithm in the Linux kernel.&lt;/li&gt;&lt;li&gt;TCP CUBIC&lt;br /&gt;CUBIC is a less aggressive variant of BIC (meaning, it doesn't steal as much throughput from competing TCP flows as does BIC).&lt;/li&gt;&lt;li&gt;TCP Hybla&lt;br /&gt;TCP Hybla was proposed in order to transmit data efficiently over satellite links and "defend" the transmission against TCP flows from other origins.&lt;/li&gt;&lt;li&gt;TCP Low Priority&lt;br /&gt;This is an approach to develop an algorithm that uses excess bandwidth for TCP flows. It can be used for low priority data transfers without "disturbing" other TCP transmissions (which probably don't use TCP Low Priority).&lt;/li&gt;&lt;li&gt;TCP Tahoe/Reno&lt;br /&gt;These are the classical models used for congestion control. They exhibit the typical slow start of transmissions. The throughput increases gradually until it stays stable. It is decreased as soon as the transfer encounters congestion, then the rate rises again slowly. The window is increased by adding fixed values. TCP Reno uses a multiplicative decrease algorithm for the reduction of window size. TCP Reno is the most widely deployed algorithm.&lt;/li&gt;&lt;li&gt;TCP Vegas&lt;br /&gt;TCP Vegas introduces the measurement of RTT for evaluating the link quality. It uses additive increases and additive decreases for the congestion window.&lt;/li&gt;&lt;li&gt;TCP Veno&lt;br /&gt;This variant is optimised for wireless networks, since it was designed to handle random packet loss better. It tries to keep track of the transfer, and guesses if the quality decreases due to congestion or random packet errors.&lt;/li&gt;&lt;li&gt;TCP Westwood+&lt;br /&gt;Westwood+ addresses both large bandwidth/RTT values and random packet loss together with dynamically changing network loads. It analyses the state of the transfer by looking at the acknowledgement packets. Westwood+ is a modification of the TCP Reno algorithm.&lt;/li&gt;&lt;/ul&gt;This is only a rough outline of the modules. In case you want to understand what the algorithms do, you should read the authors' publications. I have given links to most of them at the end of this article. While investigating the algorithms and hunting for publications, I also came across &lt;a href="http://research.microsoft.com/research/pubs/view.aspx?type=Technical%20Report&amp;amp;id=940" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;CTCP&lt;/a&gt;, created by Microsoft Research Asia. I wonder if this will make its way into the Linux kernel, some day.&lt;p&gt;&lt;/p&gt;&lt;p&gt;Switching between the different algorithms can be easily done, by writing text to a &lt;tt&gt;/proc/&lt;/tt&gt; entry.&lt;/p&gt;&lt;pre&gt;nightfall:~# echo "westwood" &gt; /proc/sys/net/ipv4/tcp_congestion_control  nightfall:~# cat /proc/sys/net/ipv4/tcp_congestion_control  westwood nightfall:~#  &lt;/pre&gt;A list of available modules can be found here:&lt;pre&gt;nightfall:~# ls /lib/modules/`uname -r`/kernel/net/ipv4/ ip_gre.ko  netfilter   tcp_cubic.ko      tcp_htcp.ko   tcp_lp.ko        tcp_vegas.ko ipip.ko    tcp_bic.ko  tcp_highspeed.ko  tcp_hybla.ko  tcp_scalable.ko  tcp_veno.ko nightfall:~#  &lt;/pre&gt;When writing to &lt;tt&gt;/proc/&lt;/tt&gt;, you can skip the &lt;tt&gt;tcp_&lt;/tt&gt; prefix. If you compile your own kernels, you will find the modules in the &lt;em style="line-height: 1em; "&gt;Networking -&gt; Networking options -&gt; TCP: advanced congestion control&lt;/em&gt; section. Since some of the algorithms affect only the sender's side, you may not notice a difference when enabling them. In order to see changed behaviour, you have to create a controlled setup, and measure the parameters of TCP transmissions.&lt;p&gt;&lt;/p&gt;&lt;h3 style="font-size: 14px; "&gt;Testing congestion situations&lt;/h3&gt;&lt;p&gt;Now that we know how to control the congestion algorithms, all we need is a bottleneck. As long as your Linux box(es) are connected to the local Ethernet with 100 Mbit/s or more, all packets will be sent immediately, and your local queues are always empty. The queues end up on your modem or gateway, which may treat them differently from the way Linux does. Even if you use a Linux gateway, there won't be a queue there, because very often this gateway connects via Ethernet to another device that handles the Internet connection. If you want to know what Linux does with queues, you need to set up a controlled bottleneck between two or more Linux boxes. Of course, you can try to saturate your LAN, but your core switch and your colleagues might not be impressed.&lt;/p&gt;&lt;p&gt;&lt;img src="http://linuxgazette.net/135/misc/pfeiffer/bottleneck.png" alt="Artificial bottleneck between networked Linux systems." width="468" height="159" /&gt;&lt;/p&gt;&lt;p&gt;You can use two separate routers and connect them with serial crossover cables. You can set up two Linux boxes as routers, and create the bottleneck link with USB 1.1 crossover cabling, serial links, Bluetooth devices, 802.11b/g WLAN equipment, parallel links, or slower Ethernet cards (10 Mbit/s, for example). You could also do traffic shaping in-between, and reduce the bandwidth or increase the latency. The Linux kernel has a nice tool for doing this. It's called &lt;em style="line-height: 1em; "&gt;netem&lt;/em&gt;, which is short for Network Emulator. Recent distributions have it. In case you compile your own kernels, you'll find it here:&lt;/p&gt;&lt;pre&gt; Networking --&gt;    Networking Options --&gt;      QoS and/or fair queuing --&gt;         Network emulator &lt;/pre&gt;Additionally, you need to enable the &lt;em style="line-height: 1em; "&gt;Advanced Router&lt;/em&gt; config option. netem can be activated by the &lt;tt&gt;tc&lt;/tt&gt; tool from the &lt;em style="line-height: 1em; "&gt;iproute&lt;/em&gt; package. It allows you to&lt;ul&gt;&lt;li&gt;emulate WAN links,&lt;/li&gt;&lt;li&gt;create packet loss,&lt;/li&gt;&lt;li&gt;create packet duplication,&lt;/li&gt;&lt;li&gt;reorder packets as they are routed,&lt;/li&gt;&lt;li&gt;and corrupt packets.&lt;/li&gt;&lt;/ul&gt;So, let's say you have a Linux router, and wish to simulate a WAN environment by increasing the RTT, adding packet reordering and some corruption of bits. You do this by entering the following commands:&lt;pre&gt;tc qdisc add dev eth1 root netem corrupt 2.5% delay 50ms 10ms tc qdisc add dev eth0 root netem delay 100ms reorder 25% 50% &lt;/pre&gt;This means that network device &lt;tt&gt;eth1&lt;/tt&gt; corrupts 2.5% of all packets passing through it. Additionally, all packets get delayed by 50ms 10ms. Device &lt;tt&gt;eth1&lt;/tt&gt; introduces a delay of at least 100 ms for reordered packets. 25% of the packets will be sent immediately. The 50% indicates a correlation between random reordering events. You can combine different &lt;a href="http://linux-net.osdl.org/index.php/Netem" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;netem options&lt;/a&gt;. Make sure that you enter only one &lt;tt&gt;tc&lt;/tt&gt; command for every network device with all options and parameters attached. &lt;tt&gt;netem&lt;/tt&gt; is a network queue, and can only be installed once for every network device. You can remove it any time you want, though.&lt;p&gt;&lt;/p&gt;&lt;h3 style="font-size: 14px; "&gt;Creating traffic and measuring TCP&lt;/h3&gt;&lt;p&gt;After your new and shiny bottleneck works, you can start moving data from one end to the other. Every program that speaks TCP can be used for that. &lt;tt&gt;iperf&lt;/tt&gt;,&lt;tt&gt;netpipe&lt;/tt&gt;, any FTP client, &lt;tt&gt;netcat&lt;/tt&gt;, or &lt;tt&gt;wget&lt;/tt&gt; are good tools. Recording the network flows with &lt;tt&gt;wireshark&lt;/tt&gt; and to postprocess them with &lt;tt&gt;tcptrace&lt;/tt&gt; is also an option.&lt;tt&gt;wireshark&lt;/tt&gt; has some features that allow you to analyse a TCP connection such as creating a graph of RTT values, sequence numbers, and throughput -- though a real evaluation for serious deployment must use a finer resolution and a better statistic than simple progress bars.&lt;/p&gt;&lt;p&gt;You can also do in-kernel measurement by using the module &lt;em style="line-height: 1em; "&gt;tcpprobe&lt;/em&gt;. It is available when the kernel is compiled with kernel probes that provide hooks to kernel functions (called Kprobe support). &lt;em style="line-height: 1em; "&gt;tcpprobe&lt;/em&gt; can be enabled by loading it with &lt;em style="line-height: 1em; "&gt;modprobe&lt;/em&gt; and giving a TCP port as module option. The documentation of&lt;em style="line-height: 1em; "&gt;tcpprobe&lt;/em&gt; features a simple example:&lt;/p&gt;&lt;pre&gt;# modprobe tcpprobe port=5001 # cat /proc/net/tcpprobe &gt;/tmp/data.out &amp;amp; # pid=$! # iperf -c otherhost # kill $pid &lt;/pre&gt;&lt;em style="line-height: 1em; "&gt;tcpprobe&lt;/em&gt; gets loaded and is bound to port 5001/TCP. Reading &lt;tt&gt;/proc/net/tcpprobe&lt;/tt&gt; directly gives access to the congestion window and other parameters of the transmission. It produces one line of date in text format for every packet seen. Using port 0 instead of 5001 allows measuring the window of all TCP connections to the machine. The Linux network people have more tips for &lt;a href="http://linux-net.osdl.org/index.php/TCP_testing" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;testing TCP&lt;/a&gt; in their wiki. Also, be sure to familiarise yourself with the methods and tools, in case you plan to do some serious testing.&lt;p&gt;&lt;/p&gt;&lt;div class="pullquotes"&gt;&lt;a name="pullquote_135_pfeiffer_2"&gt;&lt;/a&gt;&lt;table border="2" style="width: 85%; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left" bgcolor="#B3C7BF" style="padding-top: 10px; padding-right: 20px; padding-bottom: 10px; padding-left: 20px; "&gt;&lt;sup&gt;Category: Protocols&lt;/sup&gt; &lt;br /&gt;&lt;strong style="font-size: 13px; "&gt;Keep in mind that TCP really is a can of worms that get very complex, and that the developers of all Free operating systems deserve a lot of recognition and thanks for dealing with these issues.&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3 style="font-size: 14px; "&gt;I'm on ADSL. Does it really matter?&lt;/h3&gt;&lt;p&gt;Most of the new TCP algorithms incorporated into the Linux kernel were designed for very specific purposes. The modules are no magic bullet. If you are connected to a 56k modem, then no congestion algorithm in the Universe will give you more bandwidth than your modem can handle. However, if multiple TCP flows have to share the same link, then some algorithms give you more throughput than others. The best way to find out is to create a test environment with defined conditions, and make comparisons on what you see. My intention was to give you an overview of what's going on in the kernel, and how flexible Linux is when dealing with variable network environments. Happy testing!&lt;/p&gt;&lt;h3 style="font-size: 14px; "&gt;Useful links&lt;/h3&gt;&lt;p&gt;No packets were harmed while preparing this article. You might wish to take a look at the following tools and articles suitable to save your network link and deepen the understanding of what the Linux kernel does with your packets.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cs.helsinki.fi/research/iwtcp/papers/linuxtcp.pdf" style="color: rgb(85, 26, 139); text-decoration: underline; "&gt;Congestion Control in Linux TCP (PDF)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.hamilton.ie/net/draft-leith-tcp-htcp-00.txt" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;H-TCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.icir.org/floyd/hstcp.html" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;High Speed TCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dast.nlanr.net/Projects/Iperf/" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;iperf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linux-net.osdl.org/index.php/TcpProbe" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;Linux TCP Probe module&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-didc.lbl.gov/TCP-tuning/linux.html" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;Linux TCP Tuning Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scl.ameslab.gov/netpipe/" style="color: rgb(85, 26, 139); text-decoration: underline; "&gt;Netpipe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linux-net.osdl.org/index.php/Netem" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;Network Emulation functionality of the Linux kernel (netem)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sigcomm.org/ccr/archive/1999/oct99/allman2.pdf" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;On the Effective Evaluation of TCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.deneholme.net/tom/scalable/" style="color: rgb(85, 26, 139); text-decoration: underline; "&gt;Scalable TCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.speedguide.net/bdp.php" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;SG Bandwidth*Delay Product Calculator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kb.pert.geant2.net/PERTKB/TransmissionControlProtocol" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP at PERTKB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP BIC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP CUBIC (PDF)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-ece.rice.edu/networks/TCP-LP/" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP Low Priority&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP Veno&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://193.204.59.68/mascolo/tcp%20westwood/tcpwestwood.htm" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP Westwood+&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cs.ucla.edu/NRL/hpi/tcpw/" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;TCP Westwood&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tcptrace.org/" style="color: rgb(0, 0, 204); text-decoration: underline; "&gt;tcptrace&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wireshark.org/" style="color: rgb(85, 26, 139); text-decoration: underline; "&gt;Wireshark traffic analyser&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;You might even wish to study the kernel's source code. All things IPV4 can be found in the &lt;em style="line-height: 1em; "&gt;/lib/modules/`uname -r`/build/net/ipv4/&lt;/em&gt; directory. The C files contain valuable comments on what Linux does and how it handles certain situations and packets. You don't have to be a programmer to understand it.&lt;p&gt;&lt;/p&gt;&lt;h3 style="font-size: 14px; "&gt;Author's footnote&lt;/h3&gt;&lt;p&gt;The only reason that I mentioned the religious Linux/*BSD discussion is the fact of being at a party and talking with friends. I don't wish to imply that one OS is better than the other. You can solve and create all your problems with both systems. Keep in mind that TCP really is a can of worms that get very complex, and that the developers of all Free operating systems deserve a lot of recognition and thanks for dealing with these issues.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://linuxgazette.net/135/pfeiffer.html"&gt;http://linuxgazette.net/135/pfeiffer.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-6575105269882215660?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/6575105269882215660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=6575105269882215660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6575105269882215660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6575105269882215660'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/10/tcp-and-linux-pluggable-congestion.html' title='TCP and Linux&apos; Pluggable Congestion Control Algorithms'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5467660814984878201</id><published>2008-09-27T15:40:00.001-07:00</published><updated>2008-09-27T15:40:27.527-07:00</updated><title type='text'>HTML version Linux device driver</title><content type='html'>&lt;a href="http://linuxdriver.co.il/ldd3/"&gt;http://linuxdriver.co.il/ldd3/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5467660814984878201?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5467660814984878201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5467660814984878201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5467660814984878201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5467660814984878201'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/html-version-linux-device-driver.html' title='HTML version Linux device driver'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-1212165656563042560</id><published>2008-09-23T18:56:00.000-07:00</published><updated>2008-09-23T18:58:19.156-07:00</updated><title type='text'>find the linux installation is 32bit or 64 bit</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;&lt;pre class="bbcodeblock" dir="ltr" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: inset; border-right-style: inset; border-bottom-style: inset; border-left-style: inset; border-color: initial; width: 98%; height: 50px; text-align: left; overflow-x: auto; overflow-y: auto; background-color: rgb(207, 217, 255); "&gt;&gt;$ uname -m x86_64&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; "&gt;&lt;pre class="bbcodeblock" dir="ltr" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: inset; border-right-style: inset; border-bottom-style: inset; border-left-style: inset; border-color: initial; width: 98%; height: 50px; text-align: left; overflow-x: auto; overflow-y: auto; background-color: rgb(207, 217, 255); "&gt;&lt;span&gt;&gt;$ file /usr/bin/file /usr/bin/file: ELF 64-bit &lt;span name="IL_SPAN"&gt;LSB&lt;/span&gt;&lt;span&gt; executable, x86-64, &lt;span name="IL_SPAN"&gt;version 1&lt;/span&gt; (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;don't use cat&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-1212165656563042560?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/1212165656563042560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=1212165656563042560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1212165656563042560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1212165656563042560'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/find-linux-installation-is-32bit-or-64.html' title='find the linux installation is 32bit or 64 bit'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5085294860817253542</id><published>2008-09-23T18:53:00.000-07:00</published><updated>2008-09-23T18:54:00.383-07:00</updated><title type='text'>find out current kernel version</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(48, 48, 48); font-family: Verdana; line-height: 24px; "&gt;&lt;h2 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; font-size: 1.6em; letter-spacing: -1px; "&gt;&lt;span style="color: rgb(255, 0, 0); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;RedHat / CentOS / RHEL / Fedora&lt;/span&gt; Linux user&lt;/h2&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 1.6em; padding-left: 0px; "&gt;You need to use standard rpm command to list installed software. Type the following command at shell prompt:&lt;br /&gt;&lt;code style="display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); text-align: left; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(84, 145, 170); border-right-color: rgb(84, 145, 170); border-bottom-color: rgb(84, 145, 170); border-left-color: rgb(84, 145, 170); margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; overflow-x: auto; overflow-y: auto; "&gt;$ rpm -qa kernel&lt;/code&gt;&lt;br /&gt;Output:&lt;/p&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; text-align: left; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; "&gt;kernel-2.6.18-4.1.15.el5 kernel-2.6.18-8.1.14.el5 kernel-2.6.18-8.1.10.el5&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; text-align: left; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; "&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; text-align: left; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; "&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 48, 48); font-family: Verdana; font-size: 16px; white-space: normal; "&gt;&lt;h3 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; font-size: 1.4em; letter-spacing: -1px; "&gt;To list / display current kernel&lt;/h3&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 1.6em; padding-left: 0px; "&gt;Type the following command:&lt;br /&gt;&lt;code style="display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); text-align: left; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(84, 145, 170); border-right-color: rgb(84, 145, 170); border-bottom-color: rgb(84, 145, 170); border-left-color: rgb(84, 145, 170); margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; overflow-x: auto; overflow-y: auto; "&gt;$ uname -r&lt;br /&gt;$ uname -mrs&lt;/code&gt;&lt;br /&gt;Output:&lt;/p&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; display: block; background-color: rgb(249, 249, 249); font-size: 100%; color: rgb(0, 0, 0); overflow-x: auto; overflow-y: auto; text-align: left; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; width: 500px; font-family: 'andale mono', 'Courier New', Monaco, monospace; "&gt;Linux 2.6.18-8.1.14.el5 x86_64&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5085294860817253542?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5085294860817253542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5085294860817253542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5085294860817253542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5085294860817253542'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/find-out-current-kernel-version.html' title='find out current kernel version'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8171788089146670658</id><published>2008-09-23T12:46:00.000-07:00</published><updated>2008-09-23T13:15:35.261-07:00</updated><title type='text'>-1 Unknown symbol in module, kernel</title><content type='html'>(1) use "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;dmesg&lt;/span&gt;" to check error messages&lt;div&gt;(2) cat /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;proc&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;kallsyms&lt;/span&gt; | grep 'xxx' to check whether the symbols are registered&lt;/div&gt;&lt;div&gt;(3) the writing of licence possibly causes the problem&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  ;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;MODULE_LICENSE("$LICENSE$");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;--&gt; MODULE_LICENSE("&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;GPL&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(4) possibly use "modprobe xxx" ?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style=" line-height: 19px; font-family:-webkit-sans-serif;"&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The program is a &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Wrapper" title="Wrapper" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;wrapper&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; that calls the more basic &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;insmod&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; and &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;rmmod&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; utilities, with the following benefits:&lt;/span&gt;&lt;/p&gt;&lt;ul style="line-height: 1.5em; list-style-type: square; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-image: url(http://en.wikipedia.org/skins-1.5/monobook/bullet.gif); "&gt;&lt;li style="margin-bottom: 0.1em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;An ability to make more intuitive decisions about which modules to load.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;An awareness of module dependencies, so when requested to load a module, it adds the required modules first.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Recursive module dependencies are resolved as required.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;To see if a module is currently in your Linux Kernel (i.e. ppp), use:&lt;/span&gt;&lt;/p&gt;&lt;pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;/sbin/modprobe -v &lt;/span&gt;&lt;module_name&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/module_name&gt;&lt;/pre&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-v or --verbose print messages about what the program is doing. Usually modprobe only prints messages if something goes wrong.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-r or --remove causes modprobe to remove, rather than insert a module.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-l or --list lists all modules matching the given wildcard (or "*" if no wildcard is given)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-c or --showconfig dumps out the &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Configuration_file" title="Configuration file" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;configuration file&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; and exits.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="  ;font-family:'times new roman';"&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(5)if we use a kernel function in a module, this function must be declare with EXPORT_SYMBOL.&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:verdana;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&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/3070186580249183534-8171788089146670658?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8171788089146670658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8171788089146670658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8171788089146670658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8171788089146670658'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/1-unknown-symbol-in-module-kernel.html' title='-1 Unknown symbol in module, kernel'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4544490678415949947</id><published>2008-09-22T17:30:00.000-07:00</published><updated>2008-09-22T17:35:43.112-07:00</updated><title type='text'>cannot restore segment prot after reloc: Permission denied</title><content type='html'>&lt;div&gt;reason: SELinux&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*****************************&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 11px; -webkit-border-horizontal-spacing: 3px; -webkit-border-vertical-spacing: 3px; "&gt;&lt;table width="100%" cellpadding="3" cellspacing="3" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="Left" valign="Top" style="font: normal normal normal 11px/normal Verdana, Arial, Helvetica, sans-serif; font-weight: normal; "&gt;&lt;tt&gt;Installed &lt;span style="color:green;"&gt;&lt;b&gt;Tecplot&lt;/b&gt;&lt;/span&gt; on Fedora Core 4, and saw this error message when I tried to run &lt;span style="color:green;"&gt;&lt;b&gt;Tecplot&lt;/b&gt;&lt;/span&gt;.&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="Left" valign="Top" style="font: normal normal normal 11px/normal Verdana, Arial, Helvetica, sans-serif; font-weight: normal; "&gt;&lt;tt&gt;There are two solutions for this.: 1) Disable SElinux by editing the /etc/selinux/config file and commenting out all lines. Then add this line to the file: SELINUX=disabled After rebooting &lt;span style="color:green;"&gt;&lt;b&gt;Tecplot&lt;/b&gt;&lt;/span&gt; should work. This may not be the best solution though as it turns off the new security model for SELinux. 2) Please try and run the following commands as root user (replacing "/path/to/&lt;span style="color:green;"&gt;&lt;b&gt;tecplot&lt;/b&gt;&lt;/span&gt;/installation/directory" with the appropriate path to your &lt;span style="color:green;"&gt;&lt;b&gt;Tecplot&lt;/b&gt;&lt;/span&gt; installation): cd /path/to/&lt;span style="color:green;"&gt;&lt;b&gt;tecplot&lt;/b&gt;&lt;/span&gt;/installation/directory find . -name '*.so*' -exec chcon -t texrel_shlib_t {} \;&lt;br /&gt;&lt;br /&gt;*********************************&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; line-height: 15px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;The latest releases of Linux distributions incorporate the mandatory access control architecture SELinux of the NSA into the Linux kernels. More information on SELinux can be found at the following link:&lt;/p&gt;&lt;blockquote class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;a href="http://www.nsa.gov/selinux/info/faq.cfm" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: rgb(14, 62, 185); "&gt;http://www.nsa.gov/selinux/info/faq.cfm&lt;/a&gt;&lt;/blockquote&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;If you receive the error message &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;Cannot restore segment prot after reloc: Permission denied&lt;/tt&gt; when launching &lt;i&gt;Mathematica&lt;/i&gt;, this means the SELinux policy is enforced and the security context of &lt;i&gt;Mathematica&lt;/i&gt; libraries is not properly set.&lt;/p&gt;&lt;div class="inlineH4" style="font-family: Helvetica, Verdana, Geneva, Arial, sans-serif; font-size: 12px; font-weight: bold; width: 450px; "&gt;For Fedora Core 5 and Fedora Core 6 systems:&lt;/div&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;In Fedora Core 5, SELinux settings have been strengthened compared to Fedora Core 4. To correct this issue, please first try executing the following commands in a terminal window.&lt;/p&gt;&lt;blockquote style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;pre&gt;$ su root # cd &lt;mathematica&gt; # chcon -c -v -R -u system_u -r object_r -t lib_t $InstallationDirectory/SystemFiles/Libraries/   # chcon -t texrel_shlib_t  $InstallationDirectory/SystemFiles/Libraries/$SystemID/*&lt;/pre&gt;&lt;/blockquote&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;Please note that in the above commands, &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;$SystemID&lt;/tt&gt; is &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;Linux&lt;/tt&gt; or &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;Linux-x86-64&lt;/tt&gt; (depending on whether you have a 32 bit or 64 bit machine). Please also note that &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;$InstallationDirectory&lt;/tt&gt; is the location of &lt;i&gt;Mathematica&lt;/i&gt; 5.2 installation layout. (If you followed the default options when you installed&lt;i&gt;Mathematica&lt;/i&gt; 5.2, this location should be &lt;span class="menu" style="font-family: Verdana, Geneva, Arial, sans-serif; font-size: 90%; "&gt;/usr/local/Wolfram/Mathematica/5.2&lt;/span&gt;.)&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;If the above command does not work, you might have to disable SELinux at a system level. To do this, please do the following:&lt;/p&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;td width="10%" align="right" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;1.&lt;/td&gt;&lt;td width="90%" align="left" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;Execute the following commands in a terminal window.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;td width="10%" align="right" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt; &lt;/td&gt;&lt;td width="90%" align="left" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;$ su root&lt;/tt&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;td width="10%" align="right" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt; &lt;/td&gt;&lt;td width="90%" align="left" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;# system-config-securitylevel&lt;/tt&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;td width="10%" align="right" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;2.&lt;/td&gt;&lt;td width="90%" align="left" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;In the window that appears, select the SELinux tab&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;td width="10%" align="right" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;3.&lt;/td&gt;&lt;td width="90%" align="left" valign="top" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; font-family: Verdana, Geneva, Arial, sans-serif; font-size: 11px; line-height: 15px; "&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;Disable SELinux.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="inlineH4" style="font-family: Helvetica, Verdana, Geneva, Arial, sans-serif; font-size: 12px; font-weight: bold; width: 450px; "&gt;For systems other than Fedora Core 5:&lt;/div&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;To correct this issue, you will need to change the security context by running the following command. You will need to be logged on as root in order to do so.&lt;/p&gt;&lt;blockquote class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;chcon -c -v -R -u system_u -r object_r -t lib_t $InstallationDirectory/SystemFiles/Libraries/&lt;/tt&gt;&lt;/blockquote&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;Here &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;$InstallationDirectory&lt;/tt&gt; is the top level directory in which your &lt;i&gt;Mathematica&lt;/i&gt; installation. The default value of &lt;tt style="font: normal normal normal 12px/normal 'Courier New', Courier, mono; font-family: 'Courier New', Courier, mono; font-size: 100%; font-weight: normal; "&gt;$InstallationDirectory&lt;/tt&gt;is &lt;span class="menu" style="font-family: Verdana, Geneva, Arial, sans-serif; font-size: 90%; "&gt;/usr/local/Wolfram/Mathematica/5.2&lt;/span&gt; for &lt;i&gt;Mathematica&lt;/i&gt; 5.2.&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;********************************&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial; font-weight: bold; line-height: 19px; "&gt;To Temporarily disable enforcement on a running system&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial; "&gt;&lt;pre class="geshifilter-text" style="font: normal normal normal 115%/normal 'Bitstream Vera Sans Mono', 'Courier New', monospace; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(221, 221, 221); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; overflow-x: auto; overflow-y: auto; background-position: initial initial; "&gt;/usr/sbin/setenforce 0&lt;/pre&gt;&lt;pre class="geshifilter-text" style="font: normal normal normal 115%/normal 'Bitstream Vera Sans Mono', 'Courier New', monospace; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(221, 221, 221); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; overflow-x: auto; overflow-y: auto; background-position: initial initial; "&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial; line-height: 19px; "&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;To permanently disable enforcement during a system startup&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial; line-height: 19px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana; font-weight: normal; line-height: normal; "&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: 'courier new', courier, monospace; "&gt; &lt;/span&gt;&lt;span class="CODE" style="font-family: 'courier new', courier, monospace; "&gt;SELINUX=disabled&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;change "enforcing" to "disabled" in ''/etc/selinux/config'' and reboot.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;*************************************&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;System --&gt; Admin .... -&gt; Security level and firewall&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;take effective immediately&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;*************************************&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="maintext" style="font: normal normal normal 11px/15px Verdana, Geneva, Arial, sans-serif; line-height: 15px; font-family: 'Times New Roman', Times, Roman, serif; font-size: 12px; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&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/3070186580249183534-4544490678415949947?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4544490678415949947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4544490678415949947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4544490678415949947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4544490678415949947'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/cannot-restore-segment-prot-after-reloc.html' title='cannot restore segment prot after reloc: Permission denied'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-3631089914668812582</id><published>2008-09-21T22:16:00.000-07:00</published><updated>2008-09-21T23:29:16.112-07:00</updated><title type='text'>elfutils-libelf conflicts with elfutils &gt; 0.123-1.fc6</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:geneva;"&gt;&lt;pre style="display: block; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; background-color: rgb(221, 221, 221); "&gt;&lt;a href="http://www.mjmwired.net/resources/mjm-fedora-fc6.html#yum"&gt;http://www.mjmwired.net/resources/mjm-fedora-fc6.html#yum&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="display: block; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; background-color: rgb(221, 221, 221); "&gt;[mirandam@charon ~]$ &lt;a href="http://www.mjmwired.net/resources/mjm-fedora-fc6.html#sudo"&gt;sudo&lt;/a&gt; yum install yum-utils [mirandam@charon ~]$ cd downloads [mirandam@charon downloads]$ yumdownloader --source kernel --enablerepo updates-source&lt;/pre&gt;&lt;pre style="display: block; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; background-color: rgb(221, 221, 221); "&gt;however, "downloads " doesn't exist&lt;/pre&gt;&lt;pre style="display: block; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; background-color: rgb(221, 221, 221); "&gt;&lt;a href="http://fedoraproject.org/wiki/Docs/Drafts/SoftwareManagementGuide"&gt;http://fedoraproject.org/wiki/Docs/Drafts/SoftwareManagementGuide&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-3631089914668812582?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/3631089914668812582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=3631089914668812582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3631089914668812582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3631089914668812582'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/elfutils-libelf-conflicts-with-elfutils.html' title='elfutils-libelf conflicts with elfutils &gt; 0.123-1.fc6'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-171625698553378123</id><published>2008-09-17T19:29:00.000-07:00</published><updated>2008-09-17T19:31:02.400-07:00</updated><title type='text'>conference</title><content type='html'>http://www.wmc.its.tudelft.nl/~alex/CFP/&lt;br /&gt;http://www.ieee-lanman.org/&lt;br /&gt;MILCOM&lt;br /&gt;IEEE MASS&lt;br /&gt;SECON&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-171625698553378123?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/171625698553378123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=171625698553378123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/171625698553378123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/171625698553378123'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/conference.html' title='conference'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-317055570249958984</id><published>2008-09-17T15:05:00.001-07:00</published><updated>2008-09-17T15:05:35.617-07:00</updated><title type='text'>excel</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: simsun; font-size: 15px; line-height: 22px; "&gt;举个例子，比如说原来的数据是以文本格式导入的excel，假设是在A列，从A1开始往下排一直到A100，一共100个小孩。那么你就在B1输入：&lt;br /&gt;=DATEVALUE(CONCATENATE(LEFT(A1,4),"-",MID(A1,5,2),"-",RIGHT(A1,2)))&lt;br /&gt;然后把B1到B100用鼠标圈起来，按CTRL+D，就得到了B列，这是序数化了的excel的日期格式，&lt;br /&gt;然后在C1输入：&lt;br /&gt;=datevalue("2008-08-31")&lt;br /&gt;得到的是2008年8月31日的日期序数。&lt;br /&gt;然后在D1输入：&lt;br /&gt;=datedif(b1,$c$1,"y")&lt;br /&gt;得到的就是第一个小孩在2008年8月31日的实际年龄数。&lt;br /&gt;然后把D1到D100用鼠标圈起来，按CTRL+D就得到所有小孩的实际年龄数。&lt;br /&gt;然后把这些年龄数做个排序，分类汇总一下就得到各个年龄段的人数了。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-317055570249958984?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/317055570249958984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=317055570249958984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/317055570249958984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/317055570249958984'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/09/excel.html' title='excel'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7699838556524685197</id><published>2008-08-13T18:33:00.000-07:00</published><updated>2008-08-13T18:49:42.147-07:00</updated><title type='text'>用Mkvtoolnix将这个大文件编辑一下</title><content type='html'>http://www.videohelp.com/tools/MKVtoolnix&lt;br /&gt;http://www.bunkus.org/videotools/mkvtoolnix/downloads.html&lt;br /&gt;&lt;br /&gt;要真正发挥MKV强大的功能，最为方便的还是Mkvtoolnix(&lt;a href="http://www.bunkus.org/videotools" target="_blank"&gt;http://www.bunkus.org/videotools&lt;/a&gt; ... 还要将Mkvtoolnix Runtime&lt;br /&gt;Package(&lt;a href="http://www.bunkus.org/videotools" target="_blank"&gt;http://www.bunkus.org/videotools&lt;/a&gt; ... .exe进行操作。&lt;br /&gt;　　　(1)文件导入&lt;br /&gt;　　运行Mmg.exe，会出现软件的图形界面。点击“Input(输入)”选项卡，点击“Input files(输入文件)”选项组中的“add(添加)”按钮，将要合并的视频、音频、字幕文件一一添加到文件列表中。Mkvtoolnix功能的强大主要 体现在能导入的格式上，除了MPEG视频外，几乎所有的主流音、视频格式它都能容纳，包括OGM和MKV格式本身！&lt;br /&gt;　　(2)轨道设置&lt;br /&gt;　　如果视频中已经包括有音频，它还可以选择是否保留该音频！如果要去掉原有的音频，可先在文件列表中选中该视频文件，然后将“Make default track(制作默认轨道)”选项去掉即可。这样的功能要比OGM方便得多！所有的轨道都可以加上语言类型、标题、作者等标示，先选定某个轨道，然后在 “Track Options(轨道选项)”中的“Language(语言)”列表中进行选择。在字幕或声音不同步的情况下，还可设置声轨和字幕播放的延时时间，可将延 时数值填入“Delay(延时)”框中(单位为毫秒)。&lt;br /&gt;　(3)文件分割&lt;br /&gt;　　如果想将合并好的MKV文件刻入光盘，而最终合并好的文件可能超过光盘的容量，你可以对文件进行分割。点击“Global(全局)”选项卡，在其中的 “Split(分割)”选项组中选中“Enable splitting(进行分割)”选项，其中，分割有两种方式，即“by size(按文件尺寸)”和“by time(按时间)”，这里，我们当然应该按尺寸来进行分割，具体的尺寸可从后面的列表中选择。&lt;br /&gt;　　(4)输出&lt;br /&gt;　　界面中的其他选项卡都无关紧要，可以保持默认设置。在“Global”选项卡下面的“Output filename(输出文件名)”框中设置输出文件的路径及名称后，点击“Start Muxing(开始合并)”按钮即可输出MKV文件。另外，Mkvtoolnix也可用于分离MKV文件，只要将MKV文件导入，再将每个码流单独命名输 出就行了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-7699838556524685197?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7699838556524685197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7699838556524685197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7699838556524685197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7699838556524685197'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/08/mkvtoolnix.html' title='用Mkvtoolnix将这个大文件编辑一下'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-3617702513891453926</id><published>2008-07-11T20:04:00.000-07:00</published><updated>2008-07-11T20:17:10.251-07:00</updated><title type='text'>MATLAB</title><content type='html'>(1) x-axis is based on the x-value.  If data is not obtained by even interval,&lt;br /&gt;(2)semilogx(x_vec, y_vec, 'o')&lt;br /&gt;  -&gt; 'o':  no link between data points&lt;br /&gt;  -&gt; '-o': straight line linking between data points&lt;br /&gt;  -&gt; '--o': dash line linking between data points&lt;br /&gt;  -&gt; null: no data point deplayed&lt;br /&gt;  "x_vec" is simply the x-axis value of the data point.  not the x-catogory&lt;br /&gt;(3) plot(x_vec, y_vec)&lt;br /&gt;&lt;br /&gt;By default, MATLAB draws straight lines connecting the data points used to make a plot --&gt; linear interpolation&lt;br /&gt;&lt;br /&gt;(4) for vector, the x-axis is the natural number&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-3617702513891453926?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/3617702513891453926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=3617702513891453926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3617702513891453926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3617702513891453926'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/07/matlab.html' title='MATLAB'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7680112023636069986</id><published>2008-04-28T16:07:00.000-07:00</published><updated>2008-04-28T16:08:25.056-07:00</updated><title type='text'>幻灯片多页打印机巧（两则）</title><content type='html'>&lt;b&gt;幻灯片多页打印机巧（两则）&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;PPT程序中内置了幻灯片多页打印功能，既 打印→打印内容→讲义，然后选择每页的幻灯片数，这样设置后，在一个页面中可以打印多张幻灯片，但幻灯片之间的间距非常大，且无法调整。&lt;br /&gt;&lt;br /&gt;方法1是网上搜到的，转换后间距仍然很大，调整起来也不容易，方法2是自己折腾出来的，总体效果不错，但也比较麻烦且无法在各幻灯片之间添加分隔线。&lt;br /&gt;&lt;br /&gt;方法1&lt;br /&gt;&lt;span style="display: none;"&gt;http://www.cchere.net/thread/1576185&lt;/span&gt;&lt;br /&gt;（1）打开PPT，文件→发送至WORD→确定，&lt;br /&gt;（2）此时发送过来的PPT是按表格排版的，按表格操作，选中第一列和第三列删除。留下有幻灯片的那一列。&lt;br /&gt;（3）在WORD页面设置里面把上下左右页边距都设置成0.5cm（否则一页纸放不下18张）&lt;br /&gt;（4）全部选中剩下的有PPT的表格，进行如下操作：表格→转换→转换成文本&lt;span style="display: none;"&gt;http://www.cchere.net/thread/1576185&lt;/span&gt;&lt;br /&gt;（5）格式→分栏，把页面分成三栏即可（可根据需要选择栏数）&lt;br /&gt;（6）保存时要耐心等待一段时间再关闭WORD，因为这种方法生成的DOC文件非常大，以免数据丢失。&lt;br /&gt;此法适用大量的幻灯片的原样打印，保留有用的图片和表格。&lt;span style="display: none;"&gt;http://www.cchere.net/thread/1576185&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;方法2&lt;br /&gt;自己折腾出来的，需要几个软件配合&lt;span style="display: none;"&gt;http://www.cchere.net/thread/1576185&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;（1）   打开PPT，编辑区域点右键→背景→选白色（为了在转换灰度图时背景为白色，省墨）&lt;br /&gt;（2）   选择全部幻灯片→另存为JPG格式→在弹出的对话框中选择《每张幻灯片》&lt;br /&gt;（3）   手动修改1-9名称的图片名为01-09（方便在ACDSEE中正确排序，有另外一个图片批处理命名软件，要改的名不多就手动解决了）&lt;span style="display: none;"&gt;http://www.cchere.net/thread/1576185&lt;/span&gt;&lt;br /&gt;（4）   打开 ABBYY  FineReader 把前面保存好的JPG图片全部拖到左侧的 批处理文件栏，编辑→全选→文件→保存结果→保存图像→保存类型选 TIFF，灰度 →勾选全部&lt;br /&gt;（5）   用ACDSEE打开所保存的TIFF灰度图，双击进入ACDSEE的资源管理器界面，全选要打印的图片→打印→位置→图像大小选项中选择缩略图→缩略图大小选项中可调整栏数和行数，调整页边距。全部调整好后即可打印。&lt;br /&gt;&lt;br /&gt;说明：若打印彩色幻灯片图片可跳过（1）和（4），（4）中的ABBYY FineReader 本来是一个很好用的多国语言OCR软件，被我用来做批量图片转换，实在有点－_－^。可以用能批量转化灰度图的其它软件代替。打印时可在打印机的属性栏中 选择横排或竖排以获得最佳效果。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-7680112023636069986?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7680112023636069986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7680112023636069986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7680112023636069986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7680112023636069986'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/04/blog-post.html' title='幻灯片多页打印机巧（两则）'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-7433005825575061140</id><published>2008-03-22T21:42:00.000-07:00</published><updated>2008-03-22T21:43:17.221-07:00</updated><title type='text'>linux networking</title><content type='html'>http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html#COMMANDS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-7433005825575061140?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/7433005825575061140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=7433005825575061140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7433005825575061140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/7433005825575061140'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/03/linux-networking.html' title='linux networking'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-3121080351018223702</id><published>2008-02-20T07:30:00.001-08:00</published><updated>2008-02-20T07:30:25.420-08:00</updated><title type='text'>math</title><content type='html'>&lt;span style="font-weight: bold;"&gt;http://www.math.niu.edu/~rusin/known-math/index/60-XX.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-3121080351018223702?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/3121080351018223702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=3121080351018223702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3121080351018223702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3121080351018223702'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/02/math.html' title='math'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2361553459396899231</id><published>2008-02-04T14:13:00.000-08:00</published><updated>2008-02-04T14:23:25.293-08:00</updated><title type='text'>TCP and its variants</title><content type='html'>tcp and changes&lt;br /&gt;http://www.icir.org/floyd/tcp_small.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;some details and list&lt;br /&gt;http://www.networksorcery.com/enp/protocol/tcp.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-2361553459396899231?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2361553459396899231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2361553459396899231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2361553459396899231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2361553459396899231'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/02/tcp-and-its-variants.html' title='TCP and its variants'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4785962648499112188</id><published>2008-02-03T18:17:00.000-08:00</published><updated>2008-02-03T18:18:11.177-08:00</updated><title type='text'>PDF file</title><content type='html'>http://athleticaid.com/yaquinapress/postscript/PostscriptTutorial.html&lt;br /&gt;&lt;br /&gt;check embedded fonts&lt;br /&gt;&lt;br /&gt;File -&gt; Document Properties -&gt; fonts&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4785962648499112188?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4785962648499112188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4785962648499112188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4785962648499112188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4785962648499112188'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2008/02/pdf-file.html' title='PDF file'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-392582329849299886</id><published>2007-11-14T20:25:00.000-08:00</published><updated>2007-11-14T20:27:25.470-08:00</updated><title type='text'>Mini HOWTO Linksys with Broadcom 43xx chipsets Fedora Core 6 FC6</title><content type='html'>works with 14e4:4318&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*************&lt;br /&gt;http://www.linuxquestions.org/questions/linux-hardware-18/linksys-wusb54g-wireless-g-usb-fedora-core-6-ahhhhhhhhh-505073/&lt;br /&gt;&lt;br /&gt;Since I got this going I thought I want to share my experience with you. First of all Fedora 6 comes with a kernel that supports Broadcom 43xx chipset, however the Microcode needed to run the chipset is NOT! Therefore forget about ndiswrapper, native way is better, trust me! So after inserting your &lt;a id="KonaLink1" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.linuxquestions.org/questions/#"&gt;&lt;span style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;color:blue;" &gt;&lt;span class="kLink" style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;"&gt;wireless &lt;/span&gt;&lt;span class="kLink" style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;"&gt;card&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; it will be recognized and appear on your network configuration (restart required). However when you try to enable it "transmit" link will not blink and running&lt;br /&gt;&lt;br /&gt;dmesg&lt;br /&gt;&lt;br /&gt;will show error messages saying&lt;br /&gt;&lt;br /&gt;bcm43xx: Error: Microcode "bcm43xx_microcode5.fw" not available or load failed.&lt;br /&gt;&lt;br /&gt;First thing you need to is to get fwcutter (firm ware cutter) which will extract microcode from the windows .sys driver. On Fedora Core 6 you can get this via yum.&lt;br /&gt;&lt;br /&gt;yum install bcm43xx-fwcutter&lt;br /&gt;&lt;br /&gt;Now extract your windows drivers somewhere and find driver .sys file. CD to that folder and run&lt;br /&gt;&lt;br /&gt;bcm43xx-fwcutter -w /lib/firmware XXXXXX.sys&lt;br /&gt;&lt;br /&gt;This will install firmware into /lib/firmware folder where Kernel knows to pick it up automatically.&lt;br /&gt;&lt;br /&gt;Since &lt;a id="KonaLink2" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.linuxquestions.org/questions/#"&gt;&lt;span style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;color:blue;" &gt;&lt;span class="kLink" style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;"&gt;network&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; config GUI sucks really bad on Fedora Core 6 (when are you guys going to rewrite this, especially for wireless?) there is really no way to set the &lt;a id="KonaLink3" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.linuxquestions.org/questions/#"&gt;&lt;span style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;color:blue;" &gt;&lt;span class="kLink" style="color: blue ! important; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: 400; font-size: 13.3333px; position: static;"&gt;system&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; to use specific accesspoint (ESSID). Therefore we will fix this manually.&lt;br /&gt;&lt;br /&gt;You can either run /sbin/iwconfig eth1 ESSID "AP NAME"&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;Edit /etc/sysconfig/network-scripts/ifcfg-eth1 file assuming your wireless card shows up as eth1. Find line with ESSID and set this to be whatever you have configured your access point to be. Mine happens to be Kuhazor. Here are contents of my ifcfg-eth1:&lt;br /&gt;&lt;br /&gt;TYPE=Wireless&lt;br /&gt;DEVICE=eth1&lt;br /&gt;HWADDR=00:14:bf:46:b5:48&lt;br /&gt;BOOTPROTO=dhcp&lt;br /&gt;NETMASK=&lt;br /&gt;DHCP_HOSTNAME=&lt;br /&gt;IPADDR=&lt;br /&gt;DOMAIN=&lt;br /&gt;ONBOOT=no&lt;br /&gt;USERCTL=no&lt;br /&gt;IPV6INIT=no&lt;br /&gt;PEERDNS=yes&lt;br /&gt;ESSID=Kuhazor&lt;br /&gt;CHANNEL=1&lt;br /&gt;MODE=Managed&lt;br /&gt;RATE=Auto&lt;br /&gt;&lt;br /&gt;Save file with modified ESSID and go back to your Network Config GUI. Select edit card and add any WEP key you might be using. If you are using hexadecimal notation indicate that by using 0x9ABA3ABC77DC (12 digits for 64-bit key) in front of your key. Save changes and enable interface! It shoudl work now!&lt;br /&gt;&lt;br /&gt;Good luck guys,&lt;br /&gt;&lt;br /&gt;Kuhazor&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-392582329849299886?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/392582329849299886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=392582329849299886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/392582329849299886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/392582329849299886'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/11/mini-howto-linksys-with-broadcom-43xx.html' title='Mini HOWTO Linksys with Broadcom 43xx chipsets Fedora Core 6 FC6'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-6783385452457465845</id><published>2007-11-12T17:53:00.001-08:00</published><updated>2007-11-12T17:53:49.640-08:00</updated><title type='text'>ns2 tips</title><content type='html'>&lt;pre&gt;Note: A few answers come from the discussion in Ns2 mail list and are proved&lt;br /&gt;to be effective.&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------&lt;br /&gt;Question 1:&lt;br /&gt;&lt;br /&gt;Scheduler:: Event UID not valid!&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;Each event in NS2 has a unique UID. The scheduler toggles the UID twice,&lt;br /&gt;once during dispatching and once during scheduling. Thus, the event has a&lt;br /&gt;positive UID after being scheduled and a negative one before being scheduled.&lt;br /&gt;If the event has been scheduled but not dispatched, then it will have a&lt;br /&gt;positive UID and cannot be scheduled again.&lt;br /&gt;&lt;br /&gt;In implementing a new protocol, this error can happen in two cases:&lt;br /&gt;&lt;br /&gt;1. You are using timers. When a timer is scheduled again without the&lt;br /&gt;previous schedule expiring - Trace which timer is scheduled and when it&lt;br /&gt;will expire.&lt;br /&gt;&lt;br /&gt;2. You are dealing with packets. A packet is also a kind of event to be&lt;br /&gt;scheduled and a UID is associated with it. When you create a&lt;br /&gt;copy or alloc again before freeing it, due to the same packet with a positive&lt;br /&gt;UID, it cannot be scheduled again.&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 2: &lt;br /&gt;&lt;br /&gt;What is the role of GOD?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;GOD, called general operations director, is an object which is aware of the&lt;br /&gt;whole mobile wireless network topology during the period of simulation.&lt;br /&gt;&lt;br /&gt;GOD is used to store global information about the states of the simulated mobile&lt;br /&gt;wireless network, i. e. , GoD is an omniscient observer, but the global&lt;br /&gt;information GOD owns should not be totally available to any nodes in the&lt;br /&gt;simulation, a node can obtain its partial information when needed.&lt;br /&gt;&lt;br /&gt;Currently, GOD is only used to store an array of the shortest number of hops&lt;br /&gt;required to reach from one node to another. GOD does not calculate them&lt;br /&gt;on the fly during the simulation, since it can be quite time consuming.&lt;br /&gt;The information is loaded into GOD from the movement pattern file where&lt;br /&gt;the lines similar to&lt;br /&gt;&lt;br /&gt;$ns_ at 666.66 "$god_ set-dist 10 20 2"&lt;br /&gt;&lt;br /&gt;are used to load GOD with the information that the shortest path&lt;br /&gt;between node 10 and node 20 is changed to 2 hops at time 666.66.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 3:&lt;br /&gt;&lt;br /&gt;How to debug my extension to ns2?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;There are two levels to debug:&lt;br /&gt;&lt;br /&gt;1. C++ level:&lt;br /&gt;&lt;br /&gt;(1) To enable debug information in ns as follows:&lt;br /&gt;&lt;br /&gt;in your ns-allinone directory, edit the install file.&lt;br /&gt;&lt;br /&gt;In a section which includes "# Build Tcl8.3.2", you need to add the option&lt;br /&gt;&lt;br /&gt;--enable-symbols, such that:&lt;br /&gt;./configure --enable-gcc --disable-shared --prefix=$CUR_PATH || ....&lt;br /&gt;&lt;br /&gt;becomes:&lt;br /&gt;./configure --enable-gcc --enable-symbols --disable-shared --prefix=$CUR_PATH || ....&lt;br /&gt;&lt;br /&gt;In another section which includes "# Build tclcl",  you need to add --enable-debug&lt;br /&gt;to your configure line, such that:&lt;br /&gt;&lt;br /&gt;./configure ||  ...&lt;br /&gt;&lt;br /&gt;becomes&lt;br /&gt;&lt;br /&gt;./configure --enable-debug || ...&lt;br /&gt;&lt;br /&gt;(2) To enter your ns-allinone/ns directory, and open your Makefile.in. You need to&lt;br /&gt;change the line&lt;br /&gt;&lt;br /&gt;CFLAGS  = $(CCOPT) $(DEFINE)&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;CFLAGS  = -g $(CCOPT) $(DEFINE)&lt;br /&gt;&lt;br /&gt;(3) To go back to ns-allinone directory and type ./install&lt;br /&gt;&lt;br /&gt;(4)  the C++ debug with gdb&lt;br /&gt;   . gdb ns&lt;br /&gt;   .(gdb) set args myscript.tcl&lt;br /&gt;   .(gdb) b MyClass::myfunction&lt;br /&gt;     # This line set breakpoint&lt;br /&gt;   .run&lt;br /&gt;&lt;br /&gt;2. Tcl Level&lt;br /&gt;&lt;br /&gt;You need to find a software which is called tcl-debug.&lt;br /&gt;&lt;br /&gt;(1) To place tcl-debug-2.0/ parallel to ns-2.26/&lt;br /&gt;(2) cd ns-2.26&lt;br /&gt;   ./configure --enable-debug --with-tcldebug and examine Makefile to ensure tcl-debug&lt;br /&gt;options enabled.&lt;br /&gt;(3) make clean; make; make install&lt;br /&gt;&lt;br /&gt;(4) Add breakpts for tcl-debug&lt;br /&gt;Add "debug 1" (it's one not 'L') into your script file where you want to&lt;br /&gt;debug.&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 4:&lt;br /&gt;&lt;br /&gt;Difference between Thresholds in wireless-phy.cc&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;(1) RXThreshold: If a packet reaches a node with a power level that is below&lt;br /&gt;RxThrehold, the node will receive the packet with error (i.e. will not be able&lt;br /&gt;to read the packet), but will understand that a packet is being transmitted for&lt;br /&gt;[0,T] sec.&lt;br /&gt;&lt;br /&gt;(2) CSThreshold: If a packet reaches a node with a power level that is below&lt;br /&gt;CSThresh_ , the node will not be able to understand that a packet is being&lt;br /&gt;transmitted for [0,T] sec; i.e. it will perceive the channel to be idle.&lt;br /&gt;&lt;br /&gt;(3) CPThreshold: Let a packet 'A' is being received by a node during [0,T] sec. If&lt;br /&gt;another packet ('B') transmission begins during [0,T] so that 'B' reaches the&lt;br /&gt;node with a power that is CPThreshold below the received power of packet 'A'&lt;br /&gt;(in dB scale), packet 'A' will survive (i.e. the node will be able to read&lt;br /&gt;packet 'A'). Otherwise, packet 'A' will "collide" with packet 'B' (so&lt;br /&gt;that the node will not be able to read either of the packets).&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 5:&lt;br /&gt;&lt;br /&gt;What does it mean when ns gives the message "scheduler going&lt;br /&gt;backwards from 73.9587457845 to -1417846817.3257839 ?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;Most likely, one of the events gave rise to some other event in "past". If you&lt;br /&gt;know how discrete event simulators work, this will be clear to you. However,&lt;br /&gt;it seems that this occurred due to an overflow in calculating the timing for a&lt;br /&gt;future event somewhere.&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 6:&lt;br /&gt;&lt;br /&gt;How to set up the wireless bandwidth (such as 802.11 a,b,g) in NS2?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;In ns2.26 and ns2.27, you can change (basicRate_ and dataRate_ ):&lt;br /&gt;&lt;br /&gt;Mac/802_11 set basicRate_ 1Mb&lt;br /&gt;Mac/802_11 set dataRate_  11Mb&lt;br /&gt;&lt;br /&gt;in your tcl script.&lt;br /&gt;&lt;br /&gt;FHSS (IEEE802.11)&lt;br /&gt;  Mac/802_11 set SlotTime_          0.000050        ;# 50us&lt;br /&gt;  Mac/802_11 set SIFS_              0.000028        ;# 28us&lt;br /&gt;  Mac/802_11 set PreambleLength_    0               ;# no preamble&lt;br /&gt;  Mac/802_11 set PLCPHeaderLength_  128             ;# 128 bits&lt;br /&gt;  Mac/802_11 set PLCPDataRate_      1.0e6           ;# 1Mbps&lt;br /&gt;  Mac/802_11 set dataRate_          1.0e6           ;# 11Mbps&lt;br /&gt;  Mac/802_11 set basicRate_         1.0e6           ;# 1Mbps&lt;br /&gt;&lt;br /&gt;DSSS (IEEE802.11b)&lt;br /&gt;  Mac/802_11 set SlotTime_          0.000020        ;# 20us&lt;br /&gt;  Mac/802_11 set SIFS_              0.000010        ;# 10us&lt;br /&gt;  Mac/802_11 set PreambleLength_    144             ;# 144 bit&lt;br /&gt;  Mac/802_11 set PLCPHeaderLength_  48              ;# 48 bits&lt;br /&gt;  Mac/802_11 set PLCPDataRate_      1.0e6           ;# 1Mbps&lt;br /&gt;  Mac/802_11 set dataRate_          11.0e6          ;# 11Mbps&lt;br /&gt;  Mac/802_11 set basicRate_         1.0e6           ;# 1Mbps&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;-if using the short preamble option: you can change the line as:&lt;br /&gt;Mac/802_11 set PreambleLength_ 72&lt;br /&gt;&lt;br /&gt;-  # frequency is 2.4 GHz&lt;br /&gt;  Phy/WirelessPhy set freq_ 2.4e+9&lt;br /&gt;  # transmit power&lt;br /&gt;  Phy/WirelessPhy set Pt_ 3.3962527e-2&lt;br /&gt;  # Receive sensitivity.&lt;br /&gt;  Phy/WirelessPhy set RXThresh_ 6.309573e-12&lt;br /&gt;  Phy/WirelessPhy set CSThresh_ 6.309573e-12&lt;br /&gt;&lt;br /&gt;Note that the radio range that results from this configuration may or may&lt;br /&gt;not coincide with open field tests. If you want setup a specific range,&lt;br /&gt;use the program ~/indep-utils/propagation/threshold.cc to obtain the&lt;br /&gt;desired RXThresh_ (rx sensitivity) based on the above frequency, transmit&lt;br /&gt;power and your desired range.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;802.11g:&lt;br /&gt;&lt;br /&gt;#define DSSS_CWMin   15&lt;br /&gt;#define DSSS_CWMax   1023&lt;br /&gt;#define DSSS_SlotTime  0.000009 &lt;br /&gt;#define DSSS_CCATime   0.000003 &lt;br /&gt;#define DSSS_RxTxTurnaroundTime 0.000002 &lt;br /&gt;#define DSSS_SIFSTime  0.000016  &lt;br /&gt;#define DSSS_PreambleLength  96&lt;br /&gt;#define DSSS_PLCPHeaderLength 40 &lt;br /&gt;#define DSSS_PLCPDataRate  6.0e6 // 6Mbps&lt;br /&gt;#define DSSS_MaxPropagationDelay     0.0000005 // 0.5us&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: bandwidth is different with achievable throughput.&lt;br /&gt;&lt;br /&gt;- In NS ACK are always sent at 1Mbps&lt;br /&gt;- NS use always the long PLCP preamble format sent at 1Mbps&lt;br /&gt;- by default NS uses RTS/CTS handshake&lt;br /&gt;- Packet's size has also an impact in the % of overhead.&lt;br /&gt;&lt;br /&gt;All this factor can  bound the achievable throughput&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------------------&lt;br /&gt;Question 7:&lt;br /&gt;&lt;br /&gt;When do we need to "make clean; make depend; make" in ns2?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A trick:&lt;br /&gt;&lt;br /&gt;- after making the changes in any tcl file I go into ns-lib.tcl, and&lt;br /&gt;make a small change e.g delete a full stop in a comment or add my on&lt;br /&gt;comment anywhere (note that this change should be in the cmmented area&lt;br /&gt;not the actual code).&lt;br /&gt;- save the ns-lib.tcl file.&lt;br /&gt;- run "make" only.&lt;br /&gt;&lt;br /&gt;In this way I find that all the changes in all other tcl files take&lt;br /&gt;effect.&lt;br /&gt;&lt;br /&gt;the same trick whenever u change a .h  file only  i.e.&lt;br /&gt;make some  trivial change in the corresponding  .cc file&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 8:&lt;br /&gt;&lt;br /&gt;How to deal with Very large trace files?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;(1) Don't trace-all&lt;br /&gt;&lt;br /&gt;(2) To Turn off some unused packet header&lt;br /&gt;&lt;br /&gt;(3) Two simple solutions using "pipe":&lt;br /&gt;   . To use tool (i.e awk) to filter only interesting events&lt;br /&gt;&lt;br /&gt;   set tr [open "| awk -f filter.awk &gt;out.tr" w]&lt;br /&gt;   $ns trace-all $tr&lt;br /&gt;&lt;br /&gt;   .if You are not interested in traces and only results (average,&lt;br /&gt;variation, distribution, count etc.)&lt;br /&gt;&lt;br /&gt;   set tr [open "| awk -f my_measure_tool.awk &gt;my_results.txt" w]&lt;br /&gt;   $ns trace-all $tr&lt;br /&gt;(4) To try other compression skill, such as&lt;br /&gt;You may reduce the size of the trace file by using the&lt;br /&gt;sed command on solaris machines.&lt;br /&gt;For example, if all you need is just the RTR and AGT&lt;br /&gt;trace lines, you may remove the MAC trace using&lt;br /&gt;cat tracefile.tr | sed -e "/MAC/d" &gt;&lt;br /&gt;smallertracefile.tr&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 9:&lt;br /&gt;&lt;br /&gt;How to disable RTS/CTS?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;(1) If you are using ns-2.27, include the line:&lt;br /&gt;&lt;br /&gt;Mac/802_11 set RTSThreshold_ 3000 &lt;br /&gt;&lt;br /&gt;to your Tcl scrip&lt;br /&gt;&lt;br /&gt;(2) If you are using older version, you need to do as below:&lt;br /&gt;&lt;br /&gt;To change the value in mac_802-11.h (a macro), then make depend, make&lt;br /&gt;&lt;br /&gt;In a similar way, you can change cw_, ShortRetryLimit_, LongRetryLimit_  etc.&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 10:&lt;br /&gt;&lt;br /&gt;What is size of voice or data packet size used to simulate in a wireless LAN?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;voip:  150bytes &lt;br /&gt;FTP: vaiable packet size, 150-1500Bytes&lt;br /&gt;HDTV or SDTV: 1500bytes&lt;br /&gt;-----------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 11:&lt;br /&gt;&lt;br /&gt;How to run a set of similar experiments together?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;Method 1: You can specify an input parameter to the simulation script. Then, based on the&lt;br /&gt;value of your input, you can name your tracefiles differently. You could create,&lt;br /&gt;for instance, the .sh script on the top of the NS simulator to launch consequently&lt;br /&gt;all the simulations.&lt;br /&gt;&lt;br /&gt;Method 2: Type your tcl scipts sequentially, do remember to set different trace files&lt;br /&gt;&lt;br /&gt;$&gt;ns code1.tcl&lt;br /&gt;.....Starting Simulation&lt;br /&gt;&lt;br /&gt;ns code2.tcl     #just type in your commands here sequentially&lt;br /&gt;ns code3.tcl&lt;br /&gt;&lt;br /&gt;Method 3: Try doing this in TCL level using for loop. For example, look at parts&lt;br /&gt;of the code below:&lt;br /&gt;&lt;br /&gt;proc runsim { num_cbr i }&lt;br /&gt;  set CBRrate [expr $i*1000000]&lt;br /&gt;  ...&lt;br /&gt;  ...&lt;br /&gt;  set traffic [new Application/Traffic/CBR]&lt;br /&gt;  $traffic set rate_ $CBRrate&lt;br /&gt;  ...  &lt;br /&gt;  ...&lt;br /&gt;&lt;br /&gt;  xxx  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for {set i 1} {$i &lt; 10} {incr i 1} {&lt;br /&gt;  runsim $i&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;You can see that your main code is in the runsim procedure, but the&lt;br /&gt;main control is in the for loop below -- which increases the CBR rate&lt;br /&gt;from 1Mbps to 10Mbps using 1Mbps increment. At the end of the runsim&lt;br /&gt;procedure, you would see I put xxx there. It's where you can make a&lt;br /&gt;calculation and output to your output file (append line by line after&lt;br /&gt;each run); which means you have all the results in the same file ready&lt;br /&gt;to be plotted.&lt;br /&gt;&lt;br /&gt;Method 4:just write another script that passes a command line parameter&lt;br /&gt;to your ns script that is the CBR rate&lt;br /&gt;E.g&lt;br /&gt;&lt;br /&gt;In your ns script put&lt;br /&gt;if { $argc == 1 } {&lt;br /&gt;   set cbr [lindex $argv 0]&lt;br /&gt;   puts "CBR: $cbr"&lt;br /&gt;}&lt;br /&gt;&lt;insert&gt;&lt;br /&gt;&lt;br /&gt;Then in the running script do something like&lt;br /&gt;&lt;br /&gt;set max 20&lt;br /&gt;for { set cbr 1 } { $cbr &lt;= $max } { set cbr [expr $cbr + 1] } {&lt;br /&gt;   puts "Running test CBR=$cbr"&lt;br /&gt;   exec ns myscript.tcl $cbr&lt;br /&gt;}&lt;br /&gt;-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 12:&lt;br /&gt;&lt;br /&gt;Rx Power or carrier sense Threshold setting?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;- enter indep-utils/propagation directory&lt;br /&gt;- g++ -lm -o threshold threshold.cc&lt;br /&gt;- ./threshold&lt;br /&gt;&lt;br /&gt;this tool can help you calculate&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 13:&lt;br /&gt;&lt;br /&gt;How to pass an argument from tcl to c++?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;method 1: bind the variables you want to share&lt;br /&gt;method 2: For example:&lt;br /&gt;&lt;br /&gt;Tcl&amp;amp; tcl = Tcl::instance();&lt;br /&gt;tcl.eval("$cbr set packet_size_");&lt;br /&gt;char* var_temp = tcl.result();&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 14:&lt;br /&gt;&lt;br /&gt;How to post analyze the trace file?&lt;br /&gt;&lt;br /&gt;ANswer:&lt;br /&gt;&lt;br /&gt;The below is a awk script to analyze several parameters (average e-2-e delay,&lt;br /&gt;pdf, normalised routing load and dropped packets,..) for aodv old trace file&lt;br /&gt;format.&lt;br /&gt;&lt;br /&gt;BEGIN {&lt;br /&gt;&lt;br /&gt;droppedAODVPackets=0;&lt;br /&gt;sends=0;&lt;br /&gt;recvs=0;&lt;br /&gt;&lt;br /&gt;# highest packet id can be checked in the trace file for an approximate value&lt;br /&gt;highest_packet_id =500000;&lt;br /&gt;sum=0;&lt;br /&gt;AODV_Adv=0;&lt;br /&gt;}&lt;br /&gt;     &lt;br /&gt;{&lt;br /&gt;  action = $1;&lt;br /&gt;  time = $2;&lt;br /&gt;  node_1 = $3;&lt;br /&gt;  node_2 = $4;&lt;br /&gt;  src = $5;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# For stand alone ad hoc trace files:&lt;br /&gt;#   if ( packet_id &gt; highest_packet_id ) highest_packet_id = packet_id;&lt;br /&gt;&lt;br /&gt;# For wired- and cireless trace files.&lt;br /&gt;&lt;br /&gt;     if ($5 =="cbr") {&lt;br /&gt;     packet_id = $12;&lt;br /&gt;     } else {&lt;br /&gt;     packet_id = $6;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#============= CALCULATE DELAY   =========================================&lt;br /&gt;  # getting start time is not a problem, provided you're not starting&lt;br /&gt;  # traffic at 0.0.&lt;br /&gt;  # could test for sending node_1_address or flow_id here.&lt;br /&gt;&lt;br /&gt;if ( start_time[packet_id] == 0 )  start_time[packet_id] = time;&lt;br /&gt; &lt;br /&gt;  # only useful for small unicast where packet_id doesn't wrap.&lt;br /&gt;  # checking receive means avoiding recording drops&lt;br /&gt;  if ( action != "d" ) {&lt;br /&gt;     if ( action == "r" ) {&lt;br /&gt;      # could test for receiving node_2_address or flow_id here.&lt;br /&gt;        end_time[packet_id] = time;&lt;br /&gt;  }&lt;br /&gt;  } else {&lt;br /&gt;     end_time[packet_id] = -1;&lt;br /&gt;  }&lt;br /&gt;#============= CALCULATE PACKET DELIVERY FRACTION============================&lt;br /&gt;# $3 = source node id , here I have 4 source nodes and start my analysis after&lt;br /&gt;490 seconds of simulation  (when traffic started)&lt;br /&gt;if (( $1 == "s") &amp;amp;&amp;amp;  ( $7 == "cbr" ) &amp;amp;&amp;amp; ( $4&lt;br /&gt;=="AGT" ) &amp;amp;&amp;amp; ( ( $3== "_5_" )   || ( $3==&lt;br /&gt;"_6_" )   ||  ($3=="_7_")  ||  ($3=="_8_") &lt;br /&gt;)&amp;amp;&amp;amp; ($2 &gt; 490.00 )    ) {&lt;br /&gt;     sends++;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# $4 = destination node in wired segment of network. if you simulate ad hoc only&lt;br /&gt;scenario the change $4 to $3 and %5 to $7.&lt;br /&gt;if ( ( $1 == "r") &amp;amp;&amp;amp;  ( $5 == "cbr" ) &amp;amp;&amp;amp; (&lt;br /&gt;$4 == "0" ) &amp;amp;&amp;amp; ($2 &gt;  490.00 ) ) {&lt;br /&gt;     recvs++;}&lt;br /&gt;&lt;br /&gt;pdf = (recvs/sends)*100;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#==================== ADVERTISEMENTS ==================&lt;br /&gt;&lt;br /&gt;if ( (($1=="f")  || ($1=="s") ) &amp;amp;&amp;amp; ($4 ==&lt;br /&gt;"RTR") &amp;amp;&amp;amp; ($7 =="AODV" ) &amp;amp;&amp;amp; ($2 &gt; 490.00&lt;br /&gt;) ) {&lt;br /&gt;AODV_Adv++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#============= DROPPED AODV PACKETS ========================================&lt;br /&gt;if ( ($1 == "D") &amp;amp;&amp;amp; ($7=="cbr")  &amp;amp;&amp;amp; ($2 &gt;&lt;br /&gt;490.00 ) ){&lt;br /&gt;       droppedAODVBytes=droppedAODVBytes+$8 ;&lt;br /&gt;       droppedAODVPackets=droppedAODVPackets+1; &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}                                          &lt;br /&gt;END {&lt;br /&gt;   for ( packet_id = 0; packet_id &lt;= highest_packet_id; packet_id++ ) {&lt;br /&gt;      start = start_time[packet_id];&lt;br /&gt;      end = end_time[packet_id];&lt;br /&gt;      packet_duration = end - start;&lt;br /&gt;  if ( start &lt; end ) sum= packet_duration+sum;&lt;br /&gt;}&lt;br /&gt;delay=sum/recvs;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;printf(" Average e-e delay: \t %f \n", delay);&lt;br /&gt;&lt;br /&gt;printf(" normalised routing load \t %f \n ", AODV_Adv/recvs);&lt;br /&gt;&lt;br /&gt;printf("No. of packets sent = %d \n", sends);&lt;br /&gt;printf(" No. of packets received = %d \n", recvs);&lt;br /&gt;printf(" Pdf (100%) = %f \n \n", pdf);&lt;br /&gt;&lt;br /&gt;printf("No. of dropped data (packets) = %d \n ",droppedAODVPackets);&lt;br /&gt;printf("No. of dropped data (bytes) = %d \n \n ",droppedAODVBytes);&lt;br /&gt;printf("No. of aodv advertisements = %f \n ",AODV_Adv);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 15:&lt;br /&gt;&lt;br /&gt;How to disable the routing when you wanna measure MAC layer performance?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;you can use DumbAgent as below:&lt;br /&gt;&lt;br /&gt;$ns_ node-config  \&lt;br /&gt;   -adhocRouting DumbAgent\&lt;br /&gt;   -llType $val(ll) \&lt;br /&gt;   -macType $val(mac) \&lt;br /&gt;   -ifqType $val(ifq) \&lt;br /&gt;   -ifqLen $val(ifqlen) \&lt;br /&gt;   -antType $val(ant) \&lt;br /&gt;   -propType $val(prop) \&lt;br /&gt;   -phyType $val(netif) \&lt;br /&gt;   -topoInstance $topo \&lt;br /&gt;   -agentTrace ON \&lt;br /&gt;   -routerTrace ON \&lt;br /&gt;   -macTrace ON \&lt;br /&gt;   -movementTrace OFF \&lt;br /&gt;   -channel [new $val(chan)]&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 16:&lt;br /&gt;&lt;br /&gt;How to use parameters in command line?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;For example, if you try to pass the number of nodes as a parameter to&lt;br /&gt;your script such as my_script.tcl 10&lt;br /&gt;&lt;br /&gt;- use the following in your tcl file&lt;br /&gt;&lt;br /&gt;set num_nodes [lindex $argv 0]&lt;br /&gt;&lt;br /&gt;- then use the num_nodes variable wherever you wanna&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Question 17:&lt;br /&gt;&lt;br /&gt;How to debug by printf?&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;method 1: printf("DEBUG TEST TEST\n"); don't use \r&lt;br /&gt;&lt;br /&gt;and you may put a fflush(NULL); statement after prinf, then the result will&lt;br /&gt;get printed immediately.&lt;br /&gt;&lt;br /&gt;method 2:&lt;br /&gt;&lt;br /&gt;char out[100];&lt;br /&gt;Tcl&amp;amp; tcl = Tcl::instance();&lt;br /&gt;sprintf(out, "puts \"DEBUG TEST TEST\"");&lt;br /&gt;tcl.eval(out);&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://web.syr.edu/~dchen02/FAQ.txt  &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-6783385452457465845?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/6783385452457465845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=6783385452457465845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6783385452457465845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6783385452457465845'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/11/ns2-tips.html' title='ns2 tips'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8636605592949691973</id><published>2007-10-20T14:54:00.000-07:00</published><updated>2007-10-20T14:55:54.302-07:00</updated><title type='text'>source audit</title><content type='html'>&lt;p&gt;&lt;span class="content"&gt;http://www.team509.com/modules.php?name=News&amp;amp;file=article&amp;amp;sid=30&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="content"&gt;       source audit 系列（6）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;     sendmail&amp;amp;proftpd&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt; 下面我们讨论一下sendmail和proftpd, 我手头用来讨论的sendmail版本是8.13.7,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;proftpd的版本是1.3.0,不出意外的话，这两个应该是目前的最新版本了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt; proftpd是我看到的安全性检查相当完全的一款软件，试举一例如何安全的打开一个文件，呵呵，非常复杂。&lt;/span&gt;&lt;/p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;br /&gt;                 &lt;!--   @page { size: 21cm 29.7cm; margin: 2cm }   PRE { font-family: "AR PL ShanHeiSun Uni", monospace }   P { margin-bottom: 0.21cm }  --&gt;    &lt;/span&gt;&lt;p&gt;&lt;span class="content"&gt;       source audit 系列（6）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;     sendmail&amp;amp;proftpd&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt; 下面我们讨论一下sendmail和proftpd, 我手头用来讨论的sendmail版本是8.13.7,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;proftpd的版本是1.3.0,不出意外的话，这两个应该是目前的最新版本了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt; proftpd是我看到的安全性检查相当完全的一款软件，试举一例如何安全的打开一个文件，呵呵，非常复杂。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt; 文件src/log.c:  &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;183   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;184   int pr_log_openfile(const char *log_file, int *log_fd, mode_t log_mode) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;185     pool *tmp_pool = NULL;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;186     char *tmp = NULL, *lf;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;187     unsigned char have_stat = FALSE, *allow_log_symlinks = NULL;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;188     struct stat sbuf;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;189   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;190     /* Sanity check */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;191     if (!log_file || !log_fd) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;192       errno = EINVAL;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;193       return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;194     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;195   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;196     /* Make a temporary copy of log_file in case it's a constant */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;197     tmp_pool = make_sub_pool(permanent_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;198     pr_pool_tag(tmp_pool, "log_openfile() tmp pool");&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;199     lf = pstrdup(tmp_pool, log_file);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;200   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;201     tmp = strrchr(lf, '/');&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;202     if (tmp == NULL) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;203       pr_log_debug(DEBUG0, "inappropriate log file: %s", lf);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;204       destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;205       return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;206     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;207   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;208     /* Set the path separator to zero, in order to obtain the directory&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;209      * name, so that checks of the directory may be made.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;210      */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;211     *tmp = '�';&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;212   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;213     if (stat(lf, &amp;amp;sbuf) == -1) { //这里先检查一下&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;214       pr_log_debug(DEBUG0, "error: unable to stat() %s: %s", lf,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;215         strerror(errno));&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;216       destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;217       return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;218     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;219   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;220     /* The path must be in a valid directory */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;221     if (!S_ISDIR(sbuf.st_mode)) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;222       pr_log_debug(DEBUG0, "error: %s is not a directory", lf);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;223       destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;224       return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;225     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;226   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;227     /* Do not log to world-writeable directories */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;228     if (sbuf.st_mode &amp;amp; S_IWOTH) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;229       pr_log_pri(PR_LOG_NOTICE, "error: %s is a world writeable directory", lf);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;230       destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;231       return PR_LOG_WRITABLE_DIR;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;232     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;233   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;234     /* Restore the path separator so that checks on the file itself may be&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;235      * done.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;236      */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;237     *tmp = '/';&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;238   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;239     allow_log_symlinks = get_param_ptr(main_server-&gt;conf, "AllowLogSymlinks",&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;240       FALSE);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;241   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;242     if (!allow_log_symlinks || *allow_log_symlinks == FALSE) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;243       int flags = O_APPEND|O_CREAT|O_WRONLY;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;244   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;245   #ifdef O_NOFOLLOW&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;246       /* On systems that support the O_NOFOLLOW flag (e.g. Linux and FreeBSD),&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;247        * use it so that the path being opened, if it is a symlink, is not&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;248        * followed.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;249        */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;250       flags |= O_NOFOLLOW; // 呵呵，这个技巧不错的，加上这个，那种利用符号连接的方法就完蛋了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;251   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;252   #elif defined(SOLARIS2)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;253       /* Solaris doesn't support the O_NOFOLLOW flag.  Instead, in their&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;254        * wisdom (hah!), Solaris decided that if the given path is a symlink&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;255        * and the flags O_CREAT and O_EXCL are set, the link is not followed.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;256        * Right.  The problem here is the case where the path is not a symlink;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;257        * using O_CREAT|O_EXCL will then cause the open() to fail if the&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;258        * file already exists.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;259        */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;260       flags |= O_EXCL;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;261   #endif /* O_NOFOLLOW or SOLARIS2 */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;262   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;263       *log_fd = open(lf, flags, log_mode);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;264       if (*log_fd == -1) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;265   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;266         if (errno != EEXIST) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;267           destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;268   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;269           /* More portability fun: Linux likes to report ELOOP if O_NOFOLLOW&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;270            * is used to open a symlink file; FreeBSD likes to return EMLINK.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;271            * Both would lead to rather misleading error messages being&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;272            * logged.  Catch these errnos, and return the value that properly&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;273            * informs the caller that the given path was an illegal symlink.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;274            */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;275   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;276           switch (errno) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;277   #ifdef ELOOP&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;278             case ELOOP:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;279               return PR_LOG_SYMLINK;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;280   #endif /* ELOOP */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;281   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;282   #ifdef EMLINK&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;283             case EMLINK:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;284               return PR_LOG_SYMLINK;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;285   #endif /* EMLINK */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;286           }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;287   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;288           return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;289   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;290         } else {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;291   #if defined(SOLARIS2)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;292           /* On Solaris, because of the stupid multiplexing of O_CREAT and&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;293            * O_EXCL to get open() not to follow a symlink, it's possible that&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;294            * the path already exists.  Now, we'll try to open() without&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;295            * O_EXCL, then lstat() the path to see if this pre-existing file is&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;296            * a symlink or a regular file.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;297            *&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;298            * Note that because this check cannot be done atomically on Solaris,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;299            * the possibility of a race condition/symlink attack still exists.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;300            * Solaris doesn't provide a good way around this situation.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;301            */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;302           flags &amp;amp;= ~O_EXCL;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;303   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;304           *log_fd = open(lf, flags, log_mode);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;305           if (*log_fd == -1) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;306             destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;307             return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;308           }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;309   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;310           /* The race condition on Solaris is here, between the open() call&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;311            * above and the lstat() call below...&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;312            */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;313   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;314           if (lstat(lf, &amp;amp;sbuf) != -1)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;315             have_stat = TRUE;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;316   #else&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;317           destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;318           return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;319   #endif /* SOLARIS2 */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;320         }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;321       }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;322   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;323       /* Stat the file using the descriptor, not the path */&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;324       if (!have_stat &amp;amp;&amp;amp; fstat(*log_fd, &amp;amp;sbuf) != -1)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;325         have_stat = TRUE;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;326   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;327       if (!have_stat || S_ISLNK(sbuf.st_mode)) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;328         pr_log_debug(DEBUG0, !have_stat ? "error: unable to stat %s" :&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;329           "error: %s is a symbolic link", lf);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;330   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;331         close(*log_fd);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;332         *log_fd = -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;333         destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;334         return PR_LOG_SYMLINK;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;335       }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;336   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;337     } else {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;338       *log_fd = open(lf, O_CREAT|O_APPEND|O_WRONLY, log_mode);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;339       if (*log_fd == -1) {&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;340         destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;341         return -1;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;342       }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;343     }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;344   &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;345     destroy_pool(tmp_pool);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;346     return 0;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;347   }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;怎么样，够复杂吧，呵呵，写一个安全的程序真是不容易。我们再来看看sendmail中的相应处理方法，先来看个最复杂的，在&lt;strong&gt;sendmail-8.13.7/obj.Linux.2.6.15-25-386.i686/mail.local/mail.local.c &lt;/strong&gt;中 ：&lt;/span&gt;&lt;/p&gt; &lt;pre&gt;&lt;span class="content"&gt;&lt;a name="line1064"&gt;&lt;/a&gt;&lt;strong&gt;1064            /*&lt;/strong&gt; &lt;a name="line1065"&gt;&lt;/a&gt;&lt;strong&gt;1065 &lt;/strong&gt;           **  If the mailbox is linked or a symlink, fail.  There's an obvious&lt;br /&gt;&lt;a name="line1066"&gt;&lt;/a&gt;&lt;strong&gt;1066 &lt;/strong&gt;           **  race here, that the file was replaced with a symbolic link after&lt;br /&gt;&lt;a name="line1067"&gt;&lt;/a&gt;&lt;strong&gt;1067 &lt;/strong&gt;           **  the lstat returned, but before the open.  We attempt to detect&lt;br /&gt;&lt;a name="line1068"&gt;&lt;/a&gt;&lt;strong&gt;1068 &lt;/strong&gt;           **  this by comparing the original stat information and information&lt;br /&gt;&lt;a name="line1069"&gt;&lt;/a&gt;&lt;strong&gt;1069 &lt;/strong&gt;           **  returned by an fstat of the file descriptor returned by the open.&lt;br /&gt;&lt;a name="line1070"&gt;&lt;/a&gt;&lt;strong&gt;1070 &lt;/strong&gt;           **&lt;br /&gt;&lt;a name="line1071"&gt;&lt;/a&gt;&lt;strong&gt;1071 &lt;/strong&gt;           **  NB: this is a symptom of a larger problem, that the mail spooling&lt;br /&gt;&lt;a name="line1072"&gt;&lt;/a&gt;&lt;strong&gt;1072 &lt;/strong&gt;           **  directory is writeable by the wrong users.  If that directory is&lt;br /&gt;&lt;a name="line1073"&gt;&lt;/a&gt;&lt;strong&gt;1073 &lt;/strong&gt;           **  writeable, system security is compromised for other reasons, and&lt;br /&gt;&lt;a name="line1074"&gt;&lt;/a&gt;&lt;strong&gt;1074 &lt;/strong&gt;           **  it cannot be fixed here.&lt;br /&gt;&lt;a name="line1075"&gt;&lt;/a&gt;&lt;strong&gt;1075 &lt;/strong&gt;           **&lt;br /&gt;&lt;a name="line1076"&gt;&lt;/a&gt;&lt;strong&gt;1076 &lt;/strong&gt;           **  If we created the mailbox, set the owner/group.  If that fails,&lt;br /&gt;&lt;a name="line1077"&gt;&lt;/a&gt;&lt;strong&gt;1077 &lt;/strong&gt;           **  just return.  Another process may have already opened it, so we&lt;br /&gt;&lt;a name="line1078"&gt;&lt;/a&gt;&lt;strong&gt;1078 &lt;/strong&gt;           **  can't unlink it.  Historically, binmail set the owner/group at&lt;br /&gt;&lt;a name="line1079"&gt;&lt;/a&gt;&lt;strong&gt;1079 &lt;/strong&gt;           **  each mail delivery.  We no longer do this, assuming that if the&lt;br /&gt;&lt;a name="line1080"&gt;&lt;/a&gt;&lt;strong&gt;1080 &lt;/strong&gt;           **  ownership or permissions were changed there was a reason.&lt;br /&gt;&lt;a name="line1081"&gt;&lt;/a&gt;&lt;strong&gt;1081 &lt;/strong&gt;           **&lt;br /&gt;&lt;a name="line1082"&gt;&lt;/a&gt;&lt;strong&gt;1082 &lt;/strong&gt;           **  XXX&lt;br /&gt;&lt;a name="line1083"&gt;&lt;/a&gt;&lt;strong&gt;1083 &lt;/strong&gt;           **  open(2) should support flock'ing the file.&lt;br /&gt;&lt;a name="line1084"&gt;&lt;/a&gt;&lt;strong&gt;1084 &lt;/strong&gt;           */&lt;br /&gt;&lt;a name="line1085"&gt;&lt;/a&gt;&lt;strong&gt;1085 &lt;/strong&gt;   &lt;/span&gt;&lt;/pre&gt;&lt;p&gt; &lt;span class="content"&gt;就是说，他的检查方法是比较打开前和打开后的文件属性，如有不同，就认为发生了点什么，这种方法虽说不太正规，好像也没什么大错，但是可以看出，他们至少对这种安全的问题重视就是不如&lt;strong&gt;proftpd&lt;/strong&gt;的人，再找找，应该能找出一点这类问题来。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;sendmail-8.13.7/obj.Linux.2.6.15-25-386.i686/sendmail/queue.c&lt;/strong&gt;文件中&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2316  #if SM_HEAP_CHECK&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2317    if (sm_debug_active(&amp;amp;SmHeapCheck, 2)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2318        &amp;amp;&amp;amp; access("memdump", F_OK) == 0&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2319       )&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2320    {&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2321     SM_FILE_T *out;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2322  &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;2323     remove("memdump");&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;这个是有问题的，但好像没啥用。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;在&lt;strong&gt;sendmail-8.13.7/obj.Linux.2.6.15-25-386.i686/sendmail/deliver.c&lt;/strong&gt;文件中的&lt;strong&gt;mailfile&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;函数，可能有点意思，反正，呵呵，他的检测&lt;strong&gt;race condition&lt;/strong&gt;的方法是不对的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;在&lt;strong&gt;proftpd&lt;/strong&gt;的&lt;strong&gt;proftpd-1.3.0/lib/libcap/cap_extint.c&lt;/strong&gt;文件中，存在一个错误：&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;cap_t cap_copy_int(const void *cap_ext)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;const struct cap_ext_struct *export =&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; (const struct cap_ext_struct *) cap_ext;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;cap_t cap_d = NULL;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;int set, blen;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;__u32 * to = (__u32 *) &amp;amp;cap_d-&gt;set;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;/* Does the external representation make sense? */&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;if (export == NULL || !memcmp(export-&gt;magic, external_magic&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;      , CAP_EXT_MAGIC_SIZE)) {&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; errno = EINVAL;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; return NULL;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;/* Obtain a new internal capability set */&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;if (!(cap_d = cap_init()))&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;       &lt;strong&gt;return NULL;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;blen = export-&gt;length_of_capset;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;    &lt;strong&gt;for (set=0; set&lt;=NUMBER_OF_CAP_SETS; ++set) { //++set &lt;/strong&gt;和&lt;strong&gt;set++ &lt;/strong&gt;对这个循环的影响是一样的。&lt;strong&gt;set&lt;/strong&gt;的最大值可到&lt;strong&gt;NUMBER_OF_CAP_SETS.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; int blk;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; int bno = 0;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt; for (blk=0; blk&lt;(CAP_SET_SIZE/4); ++blk) {&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;     __u32 val = 0;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;     if (bno != blen)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;  val  = export-&gt;bytes[bno++][set]; //bytes&lt;/strong&gt;的定义是&lt;strong&gt;__u8 bytes[CAP_SET_SIZE][NUMBER_OF_CAP_SETS]&lt;/strong&gt;， 看看&lt;strong&gt;set&lt;/strong&gt;的最大值，这个数组&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;明显越界了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;     if (bno != blen)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;  val |= export-&gt;bytes[bno++][set] &lt;&lt;&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;     if (bno != blen)&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;  val |= export-&gt;bytes[bno++][set] &lt;&lt;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;     if (bno != blen)&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  val |= export-&gt;bytes[bno++][set] &lt;&lt;&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;     *to++ = val;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; }&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;    &lt;strong&gt;}&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;    &lt;strong&gt;/* all done */&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;    &lt;strong&gt;return cap_d;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;关于&lt;strong&gt;race condition&lt;/strong&gt;的问题，在&lt;strong&gt;Bind&lt;/strong&gt;的最新版本&lt;strong&gt;9.3.2&lt;/strong&gt;中也有&lt;strong&gt;,&lt;/strong&gt;在文件&lt;strong&gt;bind-9.3.2/bin/rndc/unix/os.c &lt;/strong&gt;中 ，&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; FILE *&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;45    safe_create(const char *filename) {&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;46     int fd;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;47     FILE *f;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;48            struct stat sb;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;49     int flags = O_WRONLY;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;50    &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;51            if (stat(filename, &amp;amp;sb) == -1) {&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;52                    if (errno != ENOENT)&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;53       return (NULL);&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;54      flags = O_WRONLY | O_CREAT | O_EXCL;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;55            } else if ((sb.st_mode &amp;amp; S_IFREG) == 0) {&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;56      errno = EOPNOTSUPP;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;57      return (NULL);&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;58     } else&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;59      flags = O_WRONLY | O_TRUNC;//&lt;/strong&gt;这里检查&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;60    &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;61     fd = open(filename, flags, S_IRUSR | S_IWUSR);//&lt;/strong&gt;这里打开，这段时间内可以把文件换掉了。&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;62     if (fd == -1)&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;63      return (NULL);&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;64     f = fdopen(fd, "w");&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;65     if (f == NULL)&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;66      close(fd);&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;67     return (f);&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;68    }&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;这个函数居然叫&lt;strong&gt;safe_create,&lt;/strong&gt;我无语了，呵呵。&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="content"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;http://www.cchere.net/thread/1265392&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-8636605592949691973?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8636605592949691973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8636605592949691973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8636605592949691973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8636605592949691973'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/10/source-audit.html' title='source audit'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5572465778942649233</id><published>2007-10-11T12:34:00.000-07:00</published><updated>2007-10-11T12:35:25.821-07:00</updated><title type='text'>Traffic Generators</title><content type='html'>&lt;h1&gt;Traffic Generators&lt;/h1&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ixiacom.com/"&gt;IxChariot&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://rude.sourceforge.net/"&gt;RUDE&lt;/a&gt;:  "RUDE is a small and flexible program that generates traffic to the network, which can be received and logged on the other side of the network with the CRUDE."  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.grid.unina.it/software/ITG/"&gt;Distributed Internet Traffic Generator&lt;/a&gt; (D-ITG)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.item.ntnu.no/%7Epoulh/GenSyn/gensyn.html"&gt;Gensyn&lt;/a&gt; can generate many TCP streams in parallel in a statistically controlled manner  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cs.ucr.edu/%7Emsamidi/projects.htm"&gt;Real-Time Voice Traffic Generator&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://caia.swin.edu.au/genius/tools/kute/index.html"&gt;KUTE&lt;/a&gt;:  kernel-based traffic engine, a UDP sender and receiver for 2.6 Linux kernels  &lt;/li&gt;&lt;li&gt;&lt;a href="http://cs.itd.nrl.navy.mil/work/mgen"&gt;MGEN&lt;/a&gt;:  "MGEN provides the ability to perform IP network performance tests and measurements using UDP/IP traffic"  &lt;/li&gt;&lt;li&gt;&lt;a href="http://dast.nlanr.net/Projects/Iperf/"&gt;Iperf&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.postel.org/tg/tg.html"&gt;TG&lt;/a&gt; (SRI and ISI)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.netcomsystems.com/"&gt;Netcom&lt;/a&gt; SmartBits  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.omnicor.com/netest.htm"&gt;Omnicor&lt;/a&gt; test traffic generator  &lt;/li&gt;&lt;li&gt;&lt;a href="http://cs-www.bu.edu/faculty/crovella/paper-archive/sigm98-surge.ps"&gt;Surge&lt;/a&gt;&lt;a&gt;, for generating HTTP traffic  &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.skaion.com/"&gt;TGS&lt;/a&gt; by Skaion "generates real network traffic by simulating users and services on real and emulated hosts."  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.qosnetics.com/"&gt;Qosnetics&lt;/a&gt; traffic generator with BGP and OSPF testing &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5572465778942649233?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5572465778942649233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5572465778942649233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5572465778942649233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5572465778942649233'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/10/traffic-generators.html' title='Traffic Generators'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-8336050012550822476</id><published>2007-10-09T08:18:00.000-07:00</published><updated>2007-10-09T08:25:52.903-07:00</updated><title type='text'>inline virtual function</title><content type='html'>&lt;div class="" style="font-family: Arial,Helvetica,Sans-Serif; font-size: 18px; font-weight: bold; color: rgb(255, 102, 0); margin-left: 10px; margin-top: 10px;"&gt;Inlining Virtual Member Functions&lt;/div&gt;  &lt;div class="" style="padding: 10px;"&gt;Generally, compilers can't inline a virtual function call if the it's resolved dynamically. Therefore, declaring a virtual member function inline might seem pointless. However, not every call of a virtual function is resolved dynamically; in some cases, the compiler can resolve the call statically, as if the function weren't virtual. In situations like these, the compiler can also inline the call. For example: &lt;pre&gt;&lt;code&gt;&lt;br /&gt; class Base&lt;br /&gt; {&lt;br /&gt; public:&lt;br /&gt;   inline virtual int f() { return 0; }&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt; int main()&lt;br /&gt; {&lt;br /&gt;   Base b;&lt;br /&gt;   b.f(); // resolved statically; call can be inlined&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;The invocation of f() is resolved statically because b is not a pointer or a reference. The compiler can also expand the call inline, thereby optimizing the code even further.&lt;/p&gt;&lt;p&gt;http://www.devx.com/tips/Tip/13815&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;a name="SECTION00012000000000000000"&gt; Inline virtual functions and vtables&lt;/a&gt; &lt;/h2&gt;   It's tempting to put the full definitions of virtual functions inside the class   declaration, especially for class templates where all definitions are put in the header   anyway. Don't do this because    &lt;ol&gt;&lt;li&gt;Compiled code needs to be able to take the address of a virtual function       so inlining one does little good save in rare cases. &lt;/li&gt;&lt;li&gt;Many compilers don't generate the vtable until they see a non-inline       definition of the first virtual function named in the class declaration. If there is none       then you'll get weird-looking error messages at link time involving       undefined symbols with ``vtbl'' somewhere in them.    &lt;/li&gt;&lt;/ol&gt;   http://mit.fnal.gov/~tether/pitfalls/node3.html&lt;p&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/3070186580249183534-8336050012550822476?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/8336050012550822476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=8336050012550822476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8336050012550822476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/8336050012550822476'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/10/inline-virtual-function.html' title='inline virtual function'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-300644899370904873</id><published>2007-09-16T10:22:00.001-07:00</published><updated>2007-09-16T10:22:27.389-07:00</updated><title type='text'>Linux PCMCIA Programmer's Guide</title><content type='html'>http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-300644899370904873?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/300644899370904873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=300644899370904873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/300644899370904873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/300644899370904873'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/09/linux-pcmcia-programmers-guide.html' title='Linux PCMCIA Programmer&apos;s Guide'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-491076303574993768</id><published>2007-09-12T19:07:00.000-07:00</published><updated>2007-09-12T19:08:15.504-07:00</updated><title type='text'>Fedora - Network configuration</title><content type='html'>&lt;p&gt;Netowrk confgiruation on Fedora 2 is quite similar to the one for other versions of RedHat Linux, besides the standard files, the main configuration is done on &lt;code&gt;/etc/sysconfig/network&lt;/code&gt; where is defined the hostname and can be placed the default gateway and in the files of the &lt;code&gt;/etc/sysconfig/network-scripts/&lt;/code&gt; directory.&lt;/p&gt;   &lt;p&gt;The TCP/IP network setup is done with the script &lt;code&gt;/etc/init.d/network&lt;/code&gt;, with obviously must be started before other network services on a connected machine.&lt;br /&gt;The official graphical configuration tool is &lt;code&gt;system-config-network&lt;/code&gt; (Menu &lt;b&gt;System Settings - Network&lt;/b&gt;), from here is possible to define the IP parameters for all the interfaces found on the system (tab &lt;b&gt;Devices&lt;/b&gt;, modifies the &lt;code&gt;/etc/sysconfig/network-scripts/ifcfg-&lt;var&gt;interface&lt;/var&gt;&lt;/code&gt; and &lt;code&gt;/etc/sysconfig/networking/devices/ifcfg-&lt;var&gt;interface&lt;/var&gt;&lt;/code&gt; files), the IP of the DNS servers (tab &lt;b&gt;DNS&lt;/b&gt;, modifies &lt;code&gt;/etc/resolv.conf&lt;/code&gt;), the static host IP assignement (tab &lt;b&gt;Hosts&lt;/b&gt;, modifies &lt;code&gt;/etc/hosts&lt;/code&gt;).&lt;br /&gt;Fedora supports also user's profiles, with differnet network settings. The Network Configuration tools easily let the user define a profile and its parameters, the relevant system files are placed in the directory &lt;code&gt;/etc/sysconfig/networking/profiles/&lt;var&gt;profilename/&lt;/var&gt;&lt;/code&gt;. Currently Fedora doesn not allow the definition of a profile at boot time, when the machine is started the default "Common" profile is used, to switch to a custom one either launch &lt;code&gt;system-config-network&lt;/code&gt; graphical tool and select your profile or type &lt;code&gt;system-config-network-cmd -p &lt;var&gt;profilename&lt;/var&gt; --activate&lt;/code&gt;.&lt;br /&gt;RedHat provides other network configuration tools:&lt;br /&gt;&lt;code&gt;netconfig&lt;/code&gt; is an old text configuration tool, which is obsolete and may be used to a fast configuration;&lt;br /&gt;&lt;code&gt;system-config-network-tui&lt;/code&gt; is the text version of the graphical Network Configuration Tool.&lt;br /&gt;&lt;code&gt;system-config-network-druid&lt;/code&gt; (Menu &lt;b&gt;System tools - Internet configuration wizard&lt;/b&gt;) is a guided wizard which helps an easy configuration of Ethernet, modem, ISDN, DSL, wireless configuration.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Firewall configuration&lt;/b&gt;&lt;br /&gt;Red Hat stores the firewall configuration in the &lt;code&gt;/etc/sysconfig/iptables&lt;/code&gt; file which is formatted in order to be used by the &lt;code&gt;iptables-restore&lt;/code&gt; command. Firewalling is managed with the &lt;code&gt;/etc/init.d/iptables&lt;/code&gt; script which can be followed by arguments like &lt;code&gt;start&lt;/code&gt; to activate firewalling, &lt;code&gt;stop&lt;/code&gt; to disable it, &lt;code&gt;panic&lt;/code&gt; to shutdown any Internet access, &lt;code&gt;status&lt;/code&gt; to view the current iptables rules.&lt;br /&gt;A simple and not extremely flexible configuration tool is &lt;code&gt;system-config-firewall&lt;/code&gt;, which is adeguate for a desktop machine but surely not for a router/firewall.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;http://openskills.info/infobox.php?ID=247&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&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/3070186580249183534-491076303574993768?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/491076303574993768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=491076303574993768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/491076303574993768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/491076303574993768'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/09/fedora-network-configuration.html' title='Fedora - Network configuration'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-3285667735390753471</id><published>2007-08-18T23:33:00.001-07:00</published><updated>2007-08-18T23:33:27.296-07:00</updated><title type='text'>c/c++ extension etc.</title><content type='html'>http://docs.freebsd.org/info/gcc/gcc.info.Type_Attributes.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-3285667735390753471?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/3285667735390753471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=3285667735390753471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3285667735390753471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/3285667735390753471'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/08/cc-extension-etc.html' title='c/c++ extension etc.'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4773019119380154185</id><published>2007-07-09T18:02:00.000-07:00</published><updated>2007-07-09T18:03:14.862-07:00</updated><title type='text'>netlink</title><content type='html'>&lt;h1 class="title"&gt;&lt;a href="http://www.linuxjournal.com/article/8498"&gt;&lt;span style="font-size:85%;"&gt;Manipulating the Networking Environment Using RTNETLINK&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4773019119380154185?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4773019119380154185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4773019119380154185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4773019119380154185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4773019119380154185'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/07/netlink.html' title='netlink'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-6649543961739059774</id><published>2007-07-05T08:50:00.001-07:00</published><updated>2007-07-05T08:50:31.696-07:00</updated><title type='text'>network papers</title><content type='html'>&lt;h1&gt;Papers&lt;/h1&gt; &lt;div class="level1"&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060302&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W01_The%20Design%20Philosophy%20of%20the%20DARPA%20Internet%20Protocols.pdf"&gt;D. D. Clark., "&lt;i&gt;The Design Philosophy of the DARPA Internet Protocols&lt;/i&gt;," Proceedings of ACM SIGCOMM 1988, pages 106-114. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W01_End-to-end%20Arguments%20in%20System%20Design.pdf"&gt;J. Saltzer, D. Reed, and D. Clark., "&lt;i&gt;End-to-end Arguments in System Design&lt;/i&gt;," ACM Transactions on Computer Systems (TOCS), Vol. 2, No. 4, pages 195-206, 1984.  &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W01_Watching%20the%20waist%20of%20the%20protocol%20hourglass.pdf"&gt;&lt;span style="color:#888888;"&gt;S. Deering., "&lt;i&gt;Watching the waist of the protocol hourglass&lt;/i&gt;," Keynote address at ICNP '98, October 1998.&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W01_%28RFC%29%20On%20the%20Naming%20and%20Binding%20of%20Network%20Destinations.txt"&gt;&lt;span style="color:#888888;"&gt;J. Saltzer., "&lt;i&gt;On the Naming and Binding of Network Destinations&lt;/i&gt;," RFC 1498, Internet Request For Comments, August 1993.&lt;/span&gt;&lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060309&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W02_Scalable%20Support%20for%20Transparent%20Mobile%20Host%20Internetworking.pdf"&gt;D. B. Johnson. "&lt;i&gt;Scalable Support for Transparent Mobile Host Internetworking&lt;/i&gt;," Mobile Computing, chapter 3, pages 103-128. Kluwer Academic Publishers, 1996, in Mobile Computing, edited by Tomasz Imielinski and Hank Korth. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W02_A%20media%20access%20protocol%20for%20wireless%20LAN%27s.pdf"&gt;V. Bharghavan, A. Demers, S. Shenker, and L. Zhang. "&lt;i&gt;MACAW: A media access protocol for wireless LAN's&lt;/i&gt;," Proceedings of the ACM SIGCOMM Conference, pages 212-225, London, UK, September 1994.Walter F. Tichy. Should Computer Scientists Experiment More? IEEE Computer, 1998. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W02_Dynamic%20Source%20Routing%20in%20Ad%20Hoc%20Wireless%20Networks.pdf"&gt;D. B. Johnson and D. A. Maltz. "&lt;i&gt;Dynamic Source Routing in Ad Hoc Wireless Networks&lt;/i&gt;," Chapter 5, pages 153-181. Kluwer Academic Publishers, 1996, in Mobile Computing, edited by Tomasz Imielinski and Hank Korth. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W02_Improving%20reliable%20transport%20and%20handoff%20performance%20over%20wireless%20networks.pdf"&gt;H. Balakrishnan, S. Seshan, and R. Katz. "&lt;i&gt;Improving reliable transport and handoff performance over wireless networks&lt;/i&gt;," Wireless Networks, 1(4):469-481, December 1995. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W02_Directed%20Diffusion-A%20Scalable%20and%20Robust%20Communication%20Paradigm%20for%20Sensor%20Networks.pdf"&gt;C. Intanagonwiwat, R. Govindan, and D. Estrin, "&lt;i&gt;Directed Diffusion: A Scalable and Robust Communication Paradigm for Sensor Networks&lt;/i&gt;," Proceedings of the Sixth International Conference on Mobile Computing and Networking (MobiCom'00), 2000. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060316&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W04_Congestion%20Avoidance%20and%20Control.pdf"&gt;V. Jacobson, "&lt;i&gt;Congestion Avoidance and Control&lt;/i&gt;," Proceedings of ACM SIGCOMM 1988, pages 273-288. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W04_Simulation-based%20Comparisons%20of%20Tahoe,%20Reno,%20and%20SACK%20TCP.pdf"&gt;K. Fall and S. Floyd, "&lt;i&gt;Simulation based Comparisons of Tahoe, Reno, and SACK TCP&lt;/i&gt;," &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060406&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W04_Modeling%20TCP%20Throughput-%20A%20Simple%20Model%20and%20its%20Empirical%20Validation.pdf"&gt;J. Padhye, V. Firoiu, D. Towsley and J. Kurose, "&lt;i&gt;Modeling TCP throughput: a simple model and its empirical validation&lt;/i&gt;," Proceedings of ACM SIGCOMM 1998. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W04_Promoting%20the%20Use%20of%20End-to-End%20Congestion%20Control%20in%20the%20Internet.pdf"&gt;S. Floyd and K. Fall, "&lt;i&gt;Promoting the use of End-to-End Congestion Control in the Internet&lt;/i&gt;," IEEE/ACM Transactions on Networking, August 1998. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W04_End-to-end%20internet%20packet%20dynamics.pdf"&gt;Vern Paxson, "&lt;i&gt;End-to-end Internet Packet Dynamics&lt;/i&gt;," ACM/IEEE Transactions on Networking, 7(3):277-292, June 1999. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060413&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/W05_The%20Landmark%20Hierarchy-A%20New%20Hierarchy%20for%20Routing%20in%20Very%20Large%20Networks.pdf"&gt;Paul F. Tsuchiya, "&lt;i&gt;The Landmark Hierarchy: A New Hierarchy for Routing in Very Large Networks&lt;/i&gt;," Proceedings of ACM SIGCOMM 1988, pages 128-134. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060427&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/Demers89a.pdf"&gt;A. Demers, S. Keshav, and S. Shenker, "&lt;i&gt;Analysis and Simulation of a Fair Queueing Algorithm&lt;/i&gt;," Internetworking Research and Experience, September 1990. Also appeared in Proceedings of the ACM SIGCOMM Conference, September 1989. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/Ramakrishnan90.pdf"&gt;K. K. Ramakrishnan and R. Jain, "&lt;i&gt;A Binary Feedback Scheme for Congestion Control in Computer Networks&lt;/i&gt;," ACM Transactions on Computer Systems, Feb 1990. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/Floyd93a.pdf"&gt;S. Floyd and V. Jacobson, "&lt;i&gt;Random Early Detection Gateways for Congestion Avoidance&lt;/i&gt;," IEEE/ACM Transactions on Networking, Vol.1, No.4, August 1993.  &lt;/a&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; 20060504&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/Clarke02b.pdf"&gt;I. Clarke, S. G. Miller, T. W. Hong, O. Sandberg, and B. Wiley, "&lt;i&gt;Protecting free expression online with Freenet&lt;/i&gt;," IEEE Internet Computing, Vol. 6, No. 1, pages 40-49, 2002.  &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.cmlab.csie.ntu.edu.tw/%7Eshauk/acn2k6/file/Stoica01a.pdf"&gt;I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan, "&lt;i&gt;Chord: A scalable peer-to-peer lookup service for Internet applications&lt;/i&gt;," Proceedings of ACM SIGCOMM 2001, pages 149--160, 2001. &lt;/a&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt; &lt;br /&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Wireless Mesh Networks&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2005] ExOR: Opportunistic Multi-Hop Routing for Wireless Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Link-level Measurements from an 802.11b Mesh Network&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Comparison of Routing Metrics for Static Multi-Hop Wireless Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Interference-Aware Channel Assignment in Multi-Radio Wireless Mesh Networks&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt;   &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Wireless Sensor Networks&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Landmark-Based Information Storage and Retrieval in Sensor Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Distributed Navigation Algorithms for Sensor Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] On the Potential of Structure-free Data Aggregation in Sensor Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Fault-Tolerance in Sensor Networks: A New Evaluation Metric&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Available BW, Capacity Measurement&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Locating Internet Bottlenecks: Algorithms, Measurements and Implications&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] CapProbe: A Simple and Accurate Capacity Estimation Technique&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt;   &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;acronym title="Peer to Peer"&gt;P2P&lt;/acronym&gt;&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2005] A Case Study in Building Layered DHT Applications &lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2005] Meridian: A Lightweight Network Location Service without Virtual Coordinates&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] The Feasibility of Supporting Large-Scale Live Streaming Applications with Dynamic Application End-Points&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Mercury: Supporting Scalable Multi-Attribute Range Queries&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Proportional Replication in Peer-to-Peer Networks&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Dynamic Topology Configuration in Service Overlay Networks: A Study of Reconfiguration Policies&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Placing Relay Nodes for Intra-Domain Path Diversity&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] How to Select a Good Alternate Path in Large Peer-to-Peer Systems?&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] A Fast Content-based Data Distribution Infrastructure&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; DTN (delay tolerance network)&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2003] A delay-tolerant network architecture for challenged internets. &lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2005] Using redundancy to cope with failures in a Delay Tolerant Network&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Routing in a Delay Tolerant Network&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Inter-domain routing: BGP (routing issues in inter-AS or inter-domain)&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2005] HLP: A Next-generation Interdomain Routing Protocol&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] A Comparison of Overlay Routing and Multihoming Route Control&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Sigcomm 2004] Locating Internet Routing Instabilities&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Voice networking&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Characterizing and detecting Skype-Relayed Traffic&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Others&lt;/div&gt; &lt;ul&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] A Client-driven Approach for Channel Management in Wireless LANs&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Infocom 2006] Zero-Configuration, Robust Indoor Localization: Theory and Experimentation&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Mobicom 2005] MoB: A Mobile Bazaar for Wide-area Wireless Services&lt;/div&gt; &lt;/li&gt;&lt;li class="level2"&gt;&lt;div class="li"&gt; [Mobicom 2005] PeopleNet: Engineering A Wireless Virtual Social Network&lt;/div&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-6649543961739059774?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/6649543961739059774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=6649543961739059774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6649543961739059774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6649543961739059774'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/07/network-papers.html' title='network papers'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4916752175496613950</id><published>2007-06-24T12:42:00.000-07:00</published><updated>2007-06-24T17:27:44.599-07:00</updated><title type='text'>socket</title><content type='html'>http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/progcomc/skt_examps.htm&lt;br /&gt;&lt;br /&gt;&lt;a href="http://http://retran.com/beej/gethostbynameman.html"&gt;gethostbyname&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4916752175496613950?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4916752175496613950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4916752175496613950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4916752175496613950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4916752175496613950'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/06/socket.html' title='socket'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2134743981191762177</id><published>2007-06-18T16:49:00.000-07:00</published><updated>2007-06-18T16:53:57.093-07:00</updated><title type='text'>ping</title><content type='html'>&lt;h1 align="center"&gt;&lt;a href="http://http://www.ping127001.com/pingpage.htm"&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;&lt;u&gt;The Ping Page&lt;/u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;a href="http://www.ping127001.com/pingpage/ping.html" rel="nofollow" target="_blank"&gt;http://www.ping127001.com/pingpage/ping.html&lt;/a&gt;&lt;br /&gt;http://www.thescripts.com/forum/thread652594.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-2134743981191762177?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2134743981191762177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2134743981191762177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2134743981191762177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2134743981191762177'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/06/ping.html' title='ping'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5435950700540838378</id><published>2007-06-17T16:11:00.000-07:00</published><updated>2007-06-17T16:12:01.402-07:00</updated><title type='text'>skb_orphan</title><content type='html'>先从loopback.c入手的。&lt;br /&gt;loopback.c中的loopback_xmit函数中有这么一段：&lt;br /&gt;static int loopback_xmit(struct sk_buff * skb,struct net_device * dev)&lt;br /&gt;{       &lt;br /&gt;        struct net_device_stats * stats = (struct net_device_stats *)dev_priv;&lt;br /&gt;        &lt;br /&gt;        if (atomic_read(&amp;skb-&gt;users)!=1){/*问题1：这个条件判断什么意思？&lt;br /&gt;                                      skb-&gt;users表示user count,是指该&lt;br /&gt;                                      sk_buff由几个用户拥有么？为什么要&lt;br /&gt;                                      检查这个条件？*/  &lt;br /&gt;                                      &lt;br /&gt;                struct sk_buff * skb2 = skb;&lt;br /&gt;                skb=skb_clone(skb,GFP_ATOMIC);&lt;br /&gt;                if(skb==NULL){&lt;br /&gt;                        kfree_skb(skb2);&lt;br /&gt;                        return 0;/*问题2：这里系统内存不足，为什么不报错？&lt;br /&gt;                                因为后面好像整个函数执行&lt;span&gt;&lt;a id="vad_0" title="慢城主义 @Vogate.com" class="vLink1" style="font-size: 1em;" href="http://action.vogate.com/click/click.php?ads_id=695&amp;site_id=6235007045036016&amp;amp;click=1&amp;url=http%3A//www.newlandsh.com&amp;amp;v=0&amp;k=%u6210%u529F&amp;amp;s=http%3A//edu.stuccess.com/knowcenter/KernelTech/device_driver/00000017.htm&amp;rn=264592" target="_blank" onmouseover="if(typeof(showTitle)!='undefined'){this.title='';window.clearTimeout(hideTO);showTitle(event, this, 0,'');}" onmouseout="if(typeof(showTitle)!='undefined'){mouseIsOverLayer = false; mouseOverWhileLoad = false; hideTO = window.setTimeout('checkIfMouseOverLayer()',500);}" onclick=""&gt;成功&lt;/a&gt;&lt;/span&gt;也是return 0*/&lt;br /&gt;                }&lt;br /&gt;                kfree_skb(skb2);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;                skb_orphan(skb);/*查&lt;linux/skbuff.h&gt;中定义：&lt;br /&gt;                                skb_orphan ---- orphan a buffer&lt;br /&gt;                                @skb: buffer to orphan&lt;br /&gt;                                If a buffer currently has an owner then we&lt;br /&gt;                                call the owner's destructor function and&lt;br /&gt;                                make the @skb unowned.The buffer continues&lt;br /&gt;                                to exist but is no longer charged to its&lt;br /&gt;                                former owner&lt;br /&gt;                                那么skb_orphan以后，原来skb所指向的sk_buff&lt;br /&gt;                                结构如何使用呢？skb是否成了一个空指针？&lt;br /&gt;                                skb_orphan和kfree_skb有什么本质的区别？*/&lt;br /&gt;        .&lt;br /&gt;        .&lt;br /&gt;        .&lt;br /&gt;}&lt;br /&gt;望高手不吝赐教&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;发信人: mephisto (梦菲斯特:饼干), 信区: KernelTech       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【 在 theFuehrer (亦正亦邪) 的大作中提到: 】&lt;br /&gt;∶&lt;i&gt; 各位大侠，最近我看Linux源码中的网络驱动部分。 &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; 先从loopback.c入手的。 &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; loopback.c中的loopback_xmit函数中有这么一段： &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; static int loopback_xmit(struct sk_buff * skb,struct net_device * dev) &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; {        &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         struct net_device_stats * stats = (struct net_device_stats *)dev_priv; &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         if (atomic_read(&amp;skb-&gt;users)!=1){/*问题1：这个条件判断什么意思？ &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                       skb-&gt;users表示user count,是指该 &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                       sk_buff由几个用户拥有么？为什么要 &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                       检查这个条件？*/   &lt;/i&gt;&lt;br /&gt;就是判断有几个人用skb. 是会有多出用skb,例如一边运行一边sniff.有些时候&lt;br /&gt;会修改skb, 这就要clone,如果这个skb也被其他人用了..&lt;br /&gt;&lt;br /&gt;∶&lt;i&gt;                 struct sk_buff * skb2 = skb; &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                 skb=skb_clone(skb,GFP_ATOMIC); &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                 if(skb==NULL){ &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                         kfree_skb(skb2); &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                         return 0;/*问题2：这里系统内存不足，为什么不报错？ &lt;/i&gt;&lt;br /&gt;因为对kernel来说,mem 不够不是错,是会出现的实际情况,.&lt;br /&gt;在这里的处理方式就是把这个包drop调.不loopback了.&lt;br /&gt;&lt;br /&gt;∶&lt;i&gt;                                 因为后面好像整个函数执行成功也是return 0*/ &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                 } &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                 kfree_skb(skb2); &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         } &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         else &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                 skb_orphan(skb);/*查&lt;linux/skbuff.h&gt;中定义： &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 skb_orphan ---- orphan a buffer &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 @skb: buffer to orphan &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 If a buffer currently has an owner then we &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 call the owner's destructor function and &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 make the @skb unowned.The buffer continues &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 to exist but is no longer charged to its &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 former owner &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 那么skb_orphan以后，原来skb所指向的sk_buff &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 结构如何使用呢？skb是否成了一个空指针？ &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;                                 skb_orphan和kfree_skb有什么本质的区别？*/ &lt;/i&gt;&lt;br /&gt;应该不是free调的.还是可以用的.但是取消原来的owner的引用而已.&lt;br /&gt;&lt;br /&gt;∶&lt;i&gt;         . &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         . &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt;         . &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; } &lt;/i&gt;&lt;br /&gt;∶&lt;i&gt; 望高手不吝赐教&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5435950700540838378?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5435950700540838378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5435950700540838378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5435950700540838378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5435950700540838378'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/06/skborphan.html' title='skb_orphan'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5885303929820992174</id><published>2007-06-17T15:21:00.001-07:00</published><updated>2007-06-17T15:48:20.041-07:00</updated><title type='text'>virtual interface</title><content type='html'>&lt;a href="http://www.linuxquestions.org/questions/showthread.php?t=440556"&gt;&lt;strong&gt;Forwarding from physical to virtual interface?&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 class="title"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://kerneltrap.org/node/6523"&gt;Virtual Network Device and ARP&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h1&gt;&lt;a href="http://lists.netfilter.org/pipermail/netfilter/2006-December/067470.html"&gt;&lt;span style="font-size:85%;"&gt;How make virtual interfaces ( subinterfaces ) on linux machine&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;&lt;h2 style="font-weight: normal;" class="r"&gt;&lt;a href="http://www.google.com/url?sa=t&amp;ct=res&amp;amp;cd=60&amp;url=http%3A%2F%2Fwww.netfilter.org%2Fdocumentation%2FHOWTO%2F%2Fnetfilter-hacking-HOWTO.a4.ps&amp;amp;ei=uLh1RqHAHJHmeuu0iP0D&amp;usg=AFQjCNEzALnDTaGWwrkVhPj8Y7JXD-rt5w&amp;amp;sig2=Y7qUMwYr_ntp8YiOGFYAyA"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;a class="l" onmousedown="return rwt(this,'','','res','60','AFQjCNEzALnDTaGWwrkVhPj8Y7JXD-rt5w','&amp;sig2=Y7qUMwYr_ntp8YiOGFYAyA')"&gt;Linux netlter Hacking HOWTO&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5885303929820992174?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5885303929820992174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5885303929820992174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5885303929820992174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5885303929820992174'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/06/virtual-interface.html' title='virtual interface'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4039154422332865167</id><published>2007-05-15T16:53:00.001-07:00</published><updated>2007-05-15T16:54:10.245-07:00</updated><title type='text'>webpage</title><content type='html'>&lt;span class="p2" id="text10422041"&gt;&lt;span style="color:red;"&gt;javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A()&lt;/span&gt;&lt;/span&gt;&lt;span class="p2" id="text10422041"&gt;&lt;span style="color:red;"&gt;{for(i=0; i&lt;dil; dis="DI[" position="'absolute';" left="Math.sin(R*x1+i*x2+x3)*x4+x5;" top="Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5);"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4039154422332865167?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4039154422332865167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4039154422332865167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4039154422332865167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4039154422332865167'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/05/webpage.html' title='webpage'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-727989414243054107</id><published>2007-05-09T11:18:00.000-07:00</published><updated>2007-05-09T11:19:11.801-07:00</updated><title type='text'>usb wifi 54g</title><content type='html'>http://passivemode.net/updates/2006/5/29/linksys-wusb54gc-linux.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-727989414243054107?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/727989414243054107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=727989414243054107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/727989414243054107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/727989414243054107'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/05/usb-wifi-54g.html' title='usb wifi 54g'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-2614300797035977923</id><published>2007-05-02T17:09:00.001-07:00</published><updated>2007-05-02T17:09:23.235-07:00</updated><title type='text'>virtual interface</title><content type='html'>http://www.linux.it/~rubini/docs/vinter/vinter.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-2614300797035977923?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/2614300797035977923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=2614300797035977923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2614300797035977923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/2614300797035977923'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/05/virtual-interface.html' title='virtual interface'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-4106612960888867545</id><published>2007-04-19T13:54:00.000-07:00</published><updated>2007-04-19T13:55:53.285-07:00</updated><title type='text'>yum</title><content type='html'>root&lt;br /&gt;export ftp_proxy=http://xxx:8000&lt;br /&gt;export http_proxy=http://xxx:8000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e.g. yum install wireless-tools-devel.i386&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-4106612960888867545?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/4106612960888867545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=4106612960888867545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4106612960888867545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/4106612960888867545'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/yum.html' title='yum'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-729552447093896446</id><published>2007-04-19T12:25:00.000-07:00</published><updated>2007-04-19T12:26:14.456-07:00</updated><title type='text'>linux</title><content type='html'>&lt;a href="http://www.linux-on-laptops.com/components.html"&gt;&lt;span style="font-size:6;"&gt;&lt;strong&gt;Linux on Laptops&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-729552447093896446?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/729552447093896446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=729552447093896446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/729552447093896446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/729552447093896446'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/linux_19.html' title='linux'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-1064662640768676413</id><published>2007-04-19T07:02:00.001-07:00</published><updated>2007-04-19T12:42:47.739-07:00</updated><title type='text'>mobile and linux</title><content type='html'>http://www.hpl.hp.com/personal/Jean_Tourrilhes/MobileIP/mip.html&lt;br /&gt;&lt;br /&gt;_________&lt;br /&gt;http://www.ishiboo.com/~nirva/Projects/mobileip/&lt;br /&gt;&lt;br /&gt;dynamics Linux&lt;br /&gt;http://dynamics.sourceforge.net/?page=software&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-1064662640768676413?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/1064662640768676413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=1064662640768676413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1064662640768676413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1064662640768676413'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/mobile-and-linux.html' title='mobile and linux'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-6496796359466680380</id><published>2007-04-17T20:56:00.001-07:00</published><updated>2007-04-17T20:56:50.061-07:00</updated><title type='text'>Printing with CUPS</title><content type='html'>&lt;h2&gt;Printing with CUPS&lt;/h2&gt;        Monday, March 15th, 2004&lt;span class="postmeta"&gt;By &lt;a href="http://www.linux-mag.com/author/54"&gt;Roderick Smith&lt;/a&gt;&lt;/span&gt;  &lt;p class="LEADPARA"&gt;Printing via Linux has always been a bit tricky, but the situation is improving in many ways. At the forefront of this change is the shift from the old Line Printer Daemon (LPD) printing system, as implemented in the BSD LPD or LPRng servers, to the newer Common Unix Printing System (CUPS). CUPS is now the default printing system of most Linux distributions, as well as with some non-Linux systems, such as Mac OS X.&lt;/p&gt;   &lt;p&gt;Like most changes, though, the shift from BSD-style printing systems to CUPS isn't always painless. If you're used to BSD-style printing, CUPS may seem bizarre. In truth, though, CUPS need not be any trickier to configure than a BSD-style printing system, and it offers several advantages as well.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;What's the Big Deal About CUPS, Anyway?&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;The traditional LPD printing system used on Linux works by passing a file received from an application or remote client computer through a series of filters and queues, ultimately passing the file to be printed via a printer port. However, this process operates blindly: the application can't query the printing system about the capabilities of the printer. Thus, applications must either make assumptions about the printer or must be explicitly and individually configured to handle each printer's unique features, such as color capabilities and duplex options.&lt;/p&gt;   &lt;p&gt;One of the big advantages of CUPS, at least in theory, is that it provides a protocol for communicating printer-specific information to applications. A CUPS-aware application can learn about a printer's features and adjust its output and options appropriately. CUPS handles this task by associating a PostScript Printer Description (PPD) file with each printer queue. Most PostScript printers ship with PPD files, and PPD files for various non-PostScript printers (as driven via Ghostscript) are available from various sources. &lt;/p&gt;   &lt;p&gt;So, in theory, you can tell CUPS about your printers and all your printing applications will be automatically configured to use the printers, including their unique features. &lt;/p&gt;   &lt;p&gt;In practice, however, applications must be rewritten to take advantage of CUPS, and many programs remain unchanged -- instead, they treat CUPS much as they treat older printing systems. In time, though, this feature is likely to greatly simplify printer configuration, particularly in environments in which printers sport unusual features.&lt;/p&gt;   &lt;p&gt;Both LPD and CUPS operate as network-enabled daemons, meaning that a Linux printing system can both send print jobs to a remote printer and accept print jobs from remote clients for a local printer. CUPS, though, abandons the venerable LPD protocols, at least natively. In their place, CUPS uses a new and more feature-rich network printing system known as the &lt;i&gt;Internet Printing Protocol &lt;/i&gt;(IPP). &lt;/p&gt;   &lt;p&gt;One of the most interesting features of IPP and CUPS, at least in the short term and for network-enabled printing, is their support for &lt;i&gt;browsing&lt;/i&gt;, a feature that enables print clients to automatically locate IPP print servers. On a large network, this feature can save a great deal of effort. Rather than manually reconfigure dozens or hundreds of clients whenever you add or change a printer, you need only modify the configuration on the print server computer. Those changes then propagate to all of the CUPS print clients.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Telling CUPS About Local Printers&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;As with BSD-style printing systems, the general assumption when using CUPS is that printers are PostScript devices. Programs generate PostScript output, and in the simplest case, CUPS passes that PostScript output directly to the printer. &lt;/p&gt;   &lt;p&gt;If your printer isn't a PostScript model, though, CUPS can pass the PostScript file through Ghostscript to generate an appropriate printer-specific format. To do that, though, CUPS must know what Ghostscript driver to use, and that driver must be installed on your system. A stock CUPS installation provides drivers and information for just a handful of printers -- PostScript and a few models from Dymo, Epson, Hewlett-Packard, and Okidata. To print to a wider array of printers, you must install a printer driver package, or at least a PPD file for the printer in question.&lt;/p&gt;   &lt;p&gt;To obtain the widest array of driver options, you should first install two packages: &lt;i&gt;GIMP-Print&lt;/i&gt; (&lt;a href="http://gimp-print.sourceforge.net/"&gt;http://gimp-print.sourceforge.net&lt;/a&gt;) and &lt;i&gt;Foomatic&lt;/i&gt; (&lt;a href="http://www.linuxprinting.org/foomatic.html"&gt;http://www.linuxprinting.org/foomatic.html&lt;/a&gt;). Both packages ship with most major distributions, and chances are that both are already installed on your system. Foomatic is a set of interfaces to standard Ghostscript drivers. Many PPD files rely on Foomatic. GIMP-Print is a set of extra drivers originally developed for the GIMP, but adapted for use by Ghostscript. GIMP-Print is most useful if your printer isn't well supported by Ghostscript's stock drivers.&lt;/p&gt;   &lt;p&gt;The next step is to install a PPD file for your printer. Some Linux distributions ship with many PPD files, often in a package called &lt;tt&gt;cups-drivers&lt;/tt&gt; or something similar. Check the &lt;i&gt;/usr/share/cups/model&lt;/i&gt; directory. If it's filled with files and subdirectories, chances are you've got such a package installed. If not, or if you can't find a PPD named for your printer, you'll need to locate a PPD. If you're using a PostScript printer, check the CD-ROM that shipped with the printer or visit the manufacturer's web site to locate a PPD. (PPD files typically have a &lt;i&gt;.PPD&lt;/i&gt; or &lt;i&gt;.ppd&lt;/i&gt; suffix). &lt;/p&gt;   &lt;p&gt;You can also locate PPD files for both PostScript and non-PostScript printers on the Linux Printing web site, &lt;a href="http://www.linuxprinting.org/"&gt;http://www.linuxprinting.org&lt;/a&gt;. &lt;/p&gt;   &lt;p&gt;Click the "Printer Listings" link, enter the manufacturer and model of your printer, and click the "Show" button. You should see information on the Linux compatibility of the printer, including a link that reads "Download PPD." &lt;/p&gt;   &lt;p&gt;Click this link and save the PPD file in some convenient location. (You may need to right-click the link and select an option to save to a file.) Copy the PPD file to the &lt;i&gt;/usr/share/ cups/model&lt;/i&gt; directory. CUPS looks here during printer configuration for PPDs, and if it can't find a PPD for your printer in this location, you may not be able to print.&lt;/p&gt;   &lt;p&gt;You may need to restart CUPS at this point. On most distributions, typing &lt;tt&gt;/etc/rc.d/init.d cups restart&lt;/tt&gt; or something similar does the job. Before you do this, though, you should ensure that your printer is powered on and plugged into the computer. This is particularly important for USB printers, because CUPS expects to be able to find any USB printers when it starts up.&lt;/p&gt;   &lt;p class="SUBHEAD"&gt;&lt;b&gt;Using CUPS's Browser Interface&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;The simplest way to add a local or non-CUPS network printer to CUPS is to use its web-based interface, as follows: &lt;/p&gt;   &lt;p&gt;&lt;b&gt;1.&lt;/b&gt; Type &lt;tt&gt;&lt;a href="http://localhost:631/"&gt;http://localhost:631&lt;/a&gt;&lt;/tt&gt; into a web browser running on your computer. (You can also try the computer's hostname in place of &lt;tt&gt;localhost&lt;/tt&gt;.) The result should be the main CUPS configuration screen, which consists mainly of a series of options.&lt;/p&gt;   &lt;p&gt;&lt;b&gt;2.&lt;/b&gt; Click "Manage Printers" to see a list of printers, as shown in &lt;i&gt;Figure One.&lt;/i&gt; (On a system connected to a network with no other CUPS servers, the list will be empty.)&lt;/p&gt;  &lt;table class="FIGURE" align="right" border="1" cellpadding="4" cellspacing="2" width="150"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td class="IMAGE"&gt;&lt;a href="http://www.linux-mag.com/images/2004-03/img2/guru_01.gif"&gt;&lt;img alt="guru_01" src="http://www.linux-mag.com/images/2004-03/img/guru_01.gif" width="150" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="IMAGE-TITLE"&gt;&lt;i&gt;Figure One: CUPS provides a web-based graphical tool to administer printers &lt;/i&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;&lt;b&gt;3. &lt;/b&gt;Click "Add Printer" at the bottom of the page (not shown in &lt;i&gt;Figure One&lt;/i&gt;). The system asks for a username and password. Type &lt;tt&gt;root&lt;/tt&gt; as the username and type the root password.&lt;/p&gt;   &lt;p&gt;&lt;b&gt;4. &lt;/b&gt;You should see a prompt for the name, location, and description of the printer. This information is for your and other users' benefit, not for the printing system. (The name you enter will be the name you pass to &lt;i&gt;lpr&lt;/i&gt; or select from an application's print dialog box, though.)&lt;/p&gt;   &lt;p&gt;&lt;b&gt;5.&lt;/b&gt; The system asks for a printer device, which you select from a drop-down menu. Precisely how many devices appear depends on your system. Chances are you'll pick "Parallel Printer #1," "USB Printer #1," or something similar. (You can pick options for LPD or Samba/Windows network printers, too.) When you're done, click "Continue."&lt;/p&gt;   &lt;p&gt;&lt;b&gt;6.&lt;/b&gt; If you picked a network printer, you'll need to enter additional information in a subsequent page. Enter the machine and printer name in the format specified. For Samba/ Windows shares, you may need to include a username and password, as in &lt;tt&gt;smb://user:pass@ server/share/&lt;/tt&gt;.&lt;/p&gt;   &lt;p&gt;&lt;b&gt;7.&lt;/b&gt; Select the make of the printer from the list on the next page. If you don't see the make for the printer whose PPD file you installed, either something is wrong or the PPD file doesn't use the printer make you expect. Load the PPD file into a text editor and look for a line that starts &lt;tt&gt;*Manufacturer&lt;/tt&gt;. That entry should list the make of the printer. &lt;/p&gt;   &lt;p&gt;&lt;b&gt;8. &lt;/b&gt;Select the printer model from the list on the next page. If you installed a single PPD for a manufacturer that wasn't listed originally, chances are you'll see just one model. But if you installed a set of PPDs or if some were present for your printer before you began, you may need to pick your model from a list.&lt;/p&gt;    &lt;p&gt;After you click "Continue" after the final step, the system should respond that the printer's been installed correctly. &lt;/p&gt;   &lt;p&gt;You can then click the printer name to go to a printer control page. Click the "Print Test Page" button to verify that the printer is working correctly. You should see a test page emerge from the printer, summarizing the printer's capabilities and showing a couple of geometric shapes, including one in color for color-capable printers. You should also click the "Configure Printer" link, which shows a series of printer-specific options you can adjust. These options may include the resolution, color vs. black-and-white printing, paper size, and so on. Precisely what options you see will vary from one printer to another.&lt;/p&gt;   &lt;p&gt;At this point, you should be able to print from typical applications, such as the GIMP, OpenOffice.org, and Mozilla. The traditional Linux/Unix printing commands, such as &lt;i&gt;lpr&lt;/i&gt;, should work too, although a few details differ between CUPS and other printing systems.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Configuring a CUPS IPP Client and Server&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;Ideally, if you're setting up a CUPS client on a network that uses CUPS servers, the CUPS client should require no additional configuration to locate and use the network's printers. If you go into the CUPS web-based configuration tool, as just described, you should see a list of available printers from the start of the process, and these printers should be available to any application that can print. &lt;/p&gt;   &lt;p&gt;If this doesn't work, though, chances are something is interfering with the system's CUPS browsing traffic. This could be a firewall running on the client, a firewall running on a router between the client and the server, a firewall running on the server, or server options that are restricting access from the client.&lt;/p&gt;   &lt;p&gt;If you've set up printers on a computer and want to share them with other systems that run CUPS, you must edit your CUPS configuration file, &lt;i&gt;/etc/cups/cupsd.conf&lt;/i&gt;. Most lines in this file are parameter names followed by their values. Toward the end of the file are several blocks of associated lines, though.&lt;/p&gt;   &lt;p&gt;The first option you should check when sharing printers is the &lt;tt&gt;Browsing&lt;/tt&gt; line, which should look like &lt;tt&gt;Browsing On.&lt;/tt&gt;&lt;/p&gt;   &lt;p&gt;This line tells the system to accept browse requests from other computers. The default value is &lt;tt&gt;On&lt;/tt&gt;, so many implementations comment out this option. To be sure a system functions correctly, though, uncomment this line and be sure it's set correctly.&lt;/p&gt;    &lt;p&gt;A few lines down, you'll find a series of lines that are commented out and that show examples of using the &lt;tt&gt;BrowseAddress&lt;/tt&gt; option. On a small network, you should set this address to the broadcast address for your network, as in: &lt;tt&gt;BrowseAddress 192.168.1.255&lt;/tt&gt;.&lt;/p&gt;   &lt;p&gt;Once set, the system accepts browsing requests from any computer on the specified network. The default value doesn't send or accept browsing information, and enabling this option is often all that's necessary to share your printers with others.&lt;/p&gt;   &lt;p&gt;The &lt;tt&gt;BrowseAllow&lt;/tt&gt; and &lt;tt&gt;BrowseDeny&lt;/tt&gt; options accept domain names or various IP address-based specifications and serve as access control tools. They can be set globally to enable system-wide controls, or used inside a &lt;tt&gt;&lt;location&gt;&lt;/tt&gt; directive. &lt;/p&gt;   &lt;p&gt;These directives set access controls for particular CUPS subsystems, such as &lt;tt&gt;/printers&lt;/tt&gt; or &lt;tt&gt;/admin&lt;/tt&gt;, which control access to the printers themselves or administrative functions, respectively. &lt;/p&gt;   &lt;p&gt;To share printers, you must ensure that the &lt;tt&gt;printers&lt;/tt&gt; location is accessible to others, using lines like the following:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;&lt;location&gt;&lt;br /&gt; Order Deny,Allow&lt;br /&gt; Deny from All&lt;br /&gt; BrowseAllow from 127.0.0.1&lt;br /&gt; BrowseAllow from 192.168.1.0/24&lt;br /&gt; Allow from 127.0.0.1&lt;br /&gt; Allow from 192.168.1.0/24&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;This set of options tells CUPS to first deny access as specified and then to open holes in the denial policy (&lt;tt&gt;Order Deny, Allow&lt;/tt&gt;). It then denies access to all comers, but creates exceptions for both browsing (&lt;tt&gt;BrowseAllow&lt;/tt&gt;) and other (&lt;tt&gt;Allow&lt;/tt&gt;) accesses. These exceptions cover &lt;i&gt;127.0.0.1&lt;/i&gt; (the &lt;tt&gt;localhost &lt;/tt&gt;system itself) and the &lt;i&gt;192.168.1.0/24&lt;/i&gt; subnet. The effect is that the system accepts print jobs from and exports its list of available printers to all computers on the &lt;i&gt;192.168.1.0/24&lt;/i&gt; network.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Configuring a CUPS Server to Work with LPD Clients&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;What if your CUPS server must accept print jobs from older LPD clients, though? In this case, you can run a special CUPS helper server, known as &lt;i&gt;cups-ldp&lt;/i&gt;, that listens on the LPD port for print jobs submitted using the LPD protocol. The &lt;i&gt;cups-lpd&lt;/i&gt; server ships with most CUPS packages, but it may be installed in an odd location, such as &lt;i&gt;/usr/lib/cups/daemon/&lt;/i&gt;. To run it, you must create an appropriate super server configuration. If you're using &lt;i&gt;inetd&lt;/i&gt;, the appropriate entry looks like this:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;printer stream tcp nowait lp&lt;br /&gt; /usr/lib/cups/daemon/cups-lpd&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;If you're using &lt;i&gt;xinetd&lt;/i&gt;, chances are your CUPS package installed an appropriate &lt;i&gt;/etc/xinetd.d/cups-ldp&lt;/i&gt; file on your system, but you may need to edit it. Specifically, look for a line that reads &lt;tt&gt;disable = yes&lt;/tt&gt;. If it's present, either comment it out or change it to read &lt;tt&gt;disable = no&lt;/tt&gt;. This enables the server. &lt;/p&gt;   &lt;p&gt;With either &lt;i&gt;inetd&lt;/i&gt; or &lt;i&gt;xinetd&lt;/i&gt;, you must restart or reload the super server. On most distributions, you can do this with the SysV startup scripts by typing &lt;tt&gt;/etc/rc.d/init.d/inetd restart&lt;/tt&gt; or something similar. Once you do this, the system should begin responding to LPD printing requests. Clients can be configured as if the server were running BSD LPD or LPRng. Use the CUPS printer name as the LPD printer name.&lt;/p&gt;   &lt;p&gt;One important caveat concerning the &lt;i&gt;cups-lpd&lt;/i&gt; server is that it provides &lt;i&gt;no&lt;/i&gt; access control features! Once you run this server, anybody who can send data to the LPD port (515) can print to your printers. For best security, you should use a firewall and either TCP Wrappers or &lt;i&gt;xinetd&lt;/i&gt;'s access controls to limit access to this port.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-6496796359466680380?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/6496796359466680380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=6496796359466680380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6496796359466680380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/6496796359466680380'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/printing-with-cups.html' title='Printing with CUPS'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-1953835161214054783</id><published>2007-04-17T20:43:00.001-07:00</published><updated>2007-04-17T20:43:44.126-07:00</updated><title type='text'>power manage in linux</title><content type='html'>&lt;h2&gt;Linux on the Laptop&lt;/h2&gt;       Thursday, July 15th, 2004&lt;span class="postmeta"&gt;By &lt;a href="http://www.linux-mag.com/author/201"&gt;Jonathan A. Zdziarski&lt;/a&gt;&lt;/span&gt;  &lt;p class="LEADPARA"&gt;Over the past few years, Linux has migrated out of the machine room and onto the desktop, even the laptop. Like Linux on servers, Linux on personal computers offers speed, reliability, and a host of varied, powerful, and sophisticated applications. But where the desktop is quite commonplace, laptops are still a niche, and most Linux distributions aren't tailored to users on-the-go with a finite power supply and wireless connections.&lt;/p&gt;  &lt;p&gt;This article provides ten useful "power tools" for using Linux in a mobile environment. It includes mobile how-to's and tricks and configuration tips for creating a mobile Linux you can rely on. So, break out your cell phone, wireless card, suitcase, and briefcase. It's time to get unplugged. &lt;/p&gt;   &lt;p&gt;If you run Linux on your desktop, you know that it's fast, reliable, and gets jobs done quickly. However, that performance comes with a price: electrical power. &lt;/p&gt;   &lt;p&gt;On the desktop, electrical power is hardly ever an issue: your desktop or disk-side computer -- with its fast processor, feature-rich motherboard, and peripherals -- is plugged into the wall, and your flat screen display and other devices are plugged in separately. There's no shortage of power. &lt;/p&gt;   &lt;p&gt;However, on your laptop, power is a precious, limited resource that must be shared between all components. Indeed, if you've ever tried to do anything complex on your laptop while running on battery, you've no doubt run into real longevity limitations. &lt;/p&gt;   &lt;p&gt;Out of the box, most Linux distributions are configured to operate on machines with an unlimited supply of power. So, to use Linux in a mobile environment, you've got to make a few tweaks and take advantage of the many tools available to manage and conserve power.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Saving Power: &lt;i&gt;apmd&lt;/i&gt; Services Management&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;Linux's Advanced Power Management daemon, &lt;i&gt;apmd&lt;/i&gt;, manages basic power savings functions from within the operating system. For example, &lt;i&gt;apmd&lt;/i&gt; can detect changes in power status, turn services on or off as available power dictates, and call other applications to react appropriately. To configure &lt;i&gt;apmd&lt;/i&gt;, you configure both the &lt;i&gt;apmd&lt;/i&gt; daemon itself and the &lt;i&gt;apm&lt;/i&gt; configuration script. &lt;/p&gt;   &lt;p&gt;The &lt;i&gt;apmd&lt;/i&gt; configuration, (typically) located in &lt;i&gt;/etc/sysconfig/apmd&lt;/i&gt;, contains basic configuration information for the &lt;i&gt;apm&lt;/i&gt; daemon. This configuration is reasonable out-of-the-box, so you typically only need to tweak a few pieces of it to start. The most important directives are &lt;tt&gt;POWER_SERVICES&lt;/tt&gt;, &lt;tt&gt;LOWPOWER _SERVICES&lt;/tt&gt;, and &lt;tt&gt;CPUFREQ&lt;/tt&gt;.&lt;/p&gt;    &lt;p&gt;* &lt;tt&gt;POWER_SERVICES&lt;/tt&gt; lists all of the services you'd like to temporarily shut down when switching to battery power. (These services are restarted when the laptop is reconnected to AC.) The list is initially somewhat short, so you should add a few things to the list, including &lt;i&gt;crond, autofs, cups, pcmcia&lt;/i&gt;, and &lt;i&gt;syslog&lt;/i&gt;. You can read why in the sidebar "Keeping a Low-Power Profile."&lt;/p&gt;  &lt;table bg border="1" cellpadding="8" width="80%" style="color:#ffffff;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Keeping a Low-Power Profile&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p&gt;A number of services are probably not needed when your laptop is running off battery power. Using &lt;i&gt;apmd&lt;/i&gt;, you can shut those services off when using a battery and restart them when you reconnect to AC. &lt;/p&gt;  &lt;p&gt;* &lt;b&gt;&lt;i&gt;crond&lt;/i&gt;.&lt;/b&gt; Unless you plan on running &lt;i&gt;cron&lt;/i&gt; jobs while you're on battery power, it's a good idea to shut the &lt;i&gt;cron&lt;/i&gt; daemon off. This prevents any configured &lt;i&gt;cron&lt;/i&gt; jobs from firing, which may wake up your hard drive and increase processor use. You'll especially want to turn off this service at battery time if you have &lt;i&gt;cron&lt;/i&gt; jobs that run every minute, as the hard disk won't ever go to sleep.&lt;/p&gt;  &lt;p&gt;* &lt;b&gt;&lt;i&gt;autofs.&lt;/i&gt;&lt;/b&gt; This service is usually shut down when running on battery by default, as it prevents the frequent polling of your CD-ROM and other removable peripherals. Leaving &lt;i&gt;autofs&lt;/i&gt; on may result in higher bus utilization and consume additional power.&lt;/p&gt;  &lt;p&gt;* &lt;b&gt;&lt;i&gt;cups.&lt;/i&gt;&lt;/b&gt; Unless you plan on printing while on battery power, shutting down &lt;i&gt;cups&lt;/i&gt; removes another scheduler from running in resident memory, and may prevent occasional polling.&lt;/p&gt;  &lt;p&gt;* &lt;b&gt;&lt;i&gt;pcmcia.&lt;/i&gt;&lt;/b&gt; If you don't use any PCMCIA peripherals while on battery power, shutting down the &lt;i&gt;pcmcia&lt;/i&gt; service helps your bus rest and conserve power.&lt;/p&gt;  &lt;p&gt;* &lt;b&gt;&lt;i&gt;syslog.&lt;/i&gt;&lt;/b&gt; It's essential to shutdown &lt;i&gt;syslog&lt;/i&gt; while on battery power, because as long as &lt;i&gt;syslog&lt;/i&gt; is running, system messages will be written to disk, causing the disk to wake up to write them and eat battery power. Shutting down &lt;i&gt;syslog&lt;/i&gt; at "battery time" is one of the best ways to quiet your system enough to spin down the hard disks.&lt;/p&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;* &lt;tt&gt;LOWPOWER_SERVICES&lt;/tt&gt; lists services to shut down whenever the battery reaches a specific threshold. &lt;/p&gt;   &lt;p&gt;* &lt;tt&gt;CPUFREQ&lt;/tt&gt; enables &lt;i&gt;processor frequency scaling&lt;/i&gt;. Frequency scaling is described in more detail later, and once you've got frequency scaling configured, you'll want to set this option to &lt;tt&gt;yes&lt;/tt&gt;.&lt;/p&gt;   &lt;p&gt;After you tweaked these values accordingly, use the command &lt;tt&gt;service apmd restart&lt;/tt&gt; to load the new settings. &lt;/p&gt;    &lt;p&gt;The next batch of tweaks gets applied to the &lt;i&gt;apm&lt;/i&gt; script, located at &lt;i&gt;/etc/sysconfig/apm-scripts/apmscript&lt;/i&gt;. It's a good idea to call &lt;i&gt;apmscript&lt;/i&gt; directly from your &lt;i&gt;/etc/rc.local&lt;/i&gt; file to adjust the system to match the battery state it's booted up with. The script has several sections, and each section is tailored to specific power management messages. Of particular interest are the &lt;i&gt;resume&lt;/i&gt; and &lt;i&gt;change&lt;/i&gt; functions. &lt;/p&gt;   &lt;p&gt;But don't edit &lt;i&gt;apmscript&lt;/i&gt; just yet -- let's look at several power-related utilities first. &lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Saving Power Redux: CPU Frequency Scaling&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;The CPU is the single most power hungry component of your laptop. To increase battery life, most modern processors support CPU frequency scaling or &lt;i&gt;clock modulation&lt;/i&gt;, which allows the processor to slow itself down when running on battery power. How much the processor slows down depends on the processor. &lt;/p&gt;   &lt;p&gt;&lt;i&gt;CPUFreq&lt;/i&gt; is a Linux kernel patch (available at &lt;a href="http://www.brodo.de/cpufreq"&gt;http://www.brodo.de/cpufreq&lt;/a&gt;) that adds clock modulation to Linux. Some Linux distributions include CPU frequency scaling out-of-the-box, while others require the patch. &lt;/p&gt;   &lt;p&gt;To check whether CPUFreq is already loaded in your kernel, just type &lt;tt&gt;cat /proc/cpufreq&lt;/tt&gt;. You should see output similar to this:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;minimum CPU frequency  -  maximum CPU frequency  -  policy&lt;br /&gt;CPU  0      1998345 kHz (100 %)  - 1998345 kHz (100 %)  -  performance&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;If you see both lines, CPUFreq is loaded in your kernel. If you see the first line, but don't see a CPU, then CPUFreq is available, but a driver isn't loaded. &lt;/p&gt;   &lt;p&gt;Depending on the type of processor you have, you should be able to &lt;i&gt;modprobe&lt;/i&gt; the appropriate driver from the list in &lt;i&gt;Table One&lt;/i&gt;. The easiest way to load the appropriate driver is to add a &lt;i&gt;modprobe&lt;/i&gt; to &lt;i&gt;/etc/rc.local&lt;/i&gt;. If your kernel doesn't support CPUFreq at all, you'll need to download a copy and patch it into your kernel. &lt;/p&gt;  &lt;table bg border="1" cellpadding="8" width="80%" style="color:#ffffff;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Table One: Modules for clock modulation in Linux&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;  &lt;table border="0" cellpadding="5"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;MODULE&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;PROCESSOR&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;speedstep&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Generic speedstep, present in older versions of CPUFreq&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;speedstep-ich&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Most pre-&lt;i&gt;Centrino Pentium&lt;/i&gt;processors&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;speedstep-centrino&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Pentium processors with Centrino technology&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;p4-clockmod&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;Pentium 4&lt;/i&gt; clock modulation; common in &lt;i&gt;Pentium 4M&lt;/i&gt; processors&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;longrun&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;Transmeta Crusoe&lt;/i&gt; with &lt;i&gt;LongRun&lt;/i&gt; powernow-k6,k7,k8 AMD processors with &lt;i&gt;PowerNow&lt;/i&gt; technology&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;i&gt;longhaul&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Processors with &lt;i&gt;LongHaul&lt;/i&gt; support&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;Once you have CPUFreq up and running, you can read from and write to &lt;i&gt;/proc/cpufreq&lt;/i&gt;. To set a value, you can execute a command like one of these:&lt;/p&gt;   &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# echo -n "0%100%100%performance" &gt; /proc/cpufreq&lt;br /&gt;# echo -n "0%60%60%powersave" &gt; /proc/cpufreq&lt;br /&gt;# echo -n "0%12%80%userspace" &gt; /proc/cpufreq&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;The first value is the processor id -- this will almost always be zero on a single-processor laptop. The second and third values represent the minimum and maximum percentage of processor power the operating system may scale to. The final parameter represents the name of the &lt;i&gt;governor&lt;/i&gt;. The three choices are &lt;tt&gt;performance&lt;/tt&gt;, &lt;tt&gt;powersave&lt;/tt&gt;, and &lt;tt&gt;userspace&lt;/tt&gt;. &lt;tt&gt;performance&lt;/tt&gt; attempts to provide maximum performance while on battery power; &lt;tt&gt;powersave&lt;/tt&gt; attempts to keep the processor utilization at a minimum; and &lt;tt&gt;userspace&lt;/tt&gt; is a good middle-ground, which adjusts the frequency based on demand.&lt;/p&gt;   &lt;p&gt;Chances are, you want to be running at 100% capacity when on AC power, and at a lower value when on battery power. Once you've decided on these values, you can add them to &lt;i&gt;/etc/sysconfig/apm-scripts/apmscript&lt;/i&gt;. By the way, CPUFreq will automatically tweak your settings to the closest acceptable values, if necessary. So, depending on the type of processor you have, the values that you request may not be the actual values set. &lt;/p&gt;   &lt;p&gt;&lt;i&gt;Listing One&lt;/i&gt; shows an example of CPUFreq in &lt;i&gt;apmscript&lt;/i&gt;, tweaked from the &lt;i&gt;Fedora Core 1&lt;/i&gt; distribution.&lt;/p&gt;  &lt;table class="PREMLISTING" bg border="1" cellpadding="4" cellspacing="2" width="80%" style="color:#ffffff;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Listing One: Setting the CPU frequency in apmscript&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;if test &lt;b&gt;"&lt;/b&gt;x$CPUFREQ&lt;b&gt;"&lt;/b&gt; = &lt;b&gt;"&lt;/b&gt;xyes&lt;b&gt;"&lt;/b&gt;; then&lt;br /&gt; if apm | LC_ALL=C grep -q on-line &amp;&gt;/dev/null; then&lt;br /&gt;   echo -n &lt;b&gt;"&lt;/b&gt;0%100%100%performance&lt;b&gt;"&lt;/b&gt; &gt; /proc/cpufreq&lt;br /&gt; else&lt;br /&gt;   echo -n &lt;b&gt;"&lt;/b&gt;0%12%60%userspace&lt;b&gt;"&lt;/b&gt; &gt; /proc/cpufreq&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;Don't forget to enable CPUFreq in the &lt;i&gt;apmd&lt;/i&gt; configuration, if it hasn't been turned on already.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Saving More Power: Hard Disk Spin-down&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;After the CPU, your hard disk is your laptop's most power-hungry component. As long as it spins, it consumes power. &lt;/p&gt;   &lt;p&gt;Linux's out-of-the-box configuration makes it nearly impossible to spin down the hard disk, as the operating system performs flushes every few moments. So, to successfully spin down the hard disk, you'll need two different tools: a script to set &lt;tt&gt;laptop_mode&lt;/tt&gt; in the kernel and the &lt;i&gt;hdparm&lt;/i&gt; utility. &lt;/p&gt;   &lt;p&gt;The &lt;tt&gt;laptop_mode&lt;/tt&gt; switch used to be all you needed to spin down the hard disk, but over time other settings have cropped up that must be changed as well. There are numerous laptop mode scripts available on the Internet, but you can download a handy one from &lt;a href="http://www.linux-mag.com/downloads/2004-07/laptop/laptop_mode.sh"&gt;http://www.linux-mag.com/downloads/2004-07/laptop/laptop_mode.sh&lt;/a&gt;. This particular script is handy because it works with both 2.4 and 2.6 kernels. Run the script using the options &lt;tt&gt;start&lt;/tt&gt; or &lt;tt&gt;stop&lt;/tt&gt;, and run it either at startup, say from &lt;i&gt;/etc/rc.local,&lt;/i&gt; or only when going into battery mode. &lt;/p&gt;    &lt;p&gt;Once you've enabled &lt;tt&gt;laptop_mode&lt;/tt&gt;, set the hard disk spin-down threshold using the &lt;i&gt;hdparm&lt;/i&gt; command. &lt;i&gt;hdparm&lt;/i&gt; lets you set the spin-down timeout with &lt;tt&gt;-S&lt;/tt&gt;, and allows you to check the status of the drive using &lt;tt&gt;-C&lt;/tt&gt;. See the &lt;i&gt;hdparm man&lt;/i&gt; page for specific information about the timeout values. &lt;/p&gt;   &lt;p&gt;The &lt;i&gt;hdparm&lt;/i&gt; command can be added to &lt;i&gt;apmscript&lt;/i&gt; to automatically adjust the timeout when on AC and on battery. When plugged in, the command...&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# hdparm -S 48 /dev/hda&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;... sets standby to four minutes, which is quite suitable for most laptops. When running on battery, the command...&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;# hdparm -S 12 /dev/hda&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;... sets standby to one minute. Depending on how fast your hard drive spins up and how critical your battery life is, you may wish to increase or decrease these values.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Lasting a Long Time: Swap Management&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;The final tip to conserve battery life is to &lt;i&gt;disable&lt;/i&gt; your swap when running on battery power. Disabling swap causes all of your programs and data to be served out of RAM, thereby generating less hard disk traffic. Disabling swap should also allow your hard disk go to sleep faster. Make sure you should have ample memory to handle all of your programs at the time you disable swap. &lt;/p&gt;   &lt;p&gt;To turn swap on and off, use the &lt;i&gt;swapon&lt;/i&gt; and &lt;i&gt;swapoff &lt;/i&gt;commands with &lt;tt&gt;-a&lt;/tt&gt; (specifying "all"). These commands can also be added to &lt;i&gt;apmscript&lt;/i&gt;. &lt;/p&gt;    &lt;p&gt;The final copy of a laptop-friendly &lt;i&gt;apm&lt;/i&gt; script might look something like &lt;i&gt;Listing Two&lt;/i&gt;.&lt;/p&gt;  &lt;table class="PREMLISTING" bg border="1" cellpadding="4" cellspacing="2" width="80%" style="color:#ffffff;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Listing Two: Saving power in apmscript&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;/etc/rc.local&lt;br /&gt;modprobe p4-clockmod&lt;br /&gt;sh /etc/sysconfig/apm-scripts/laptop_mode.sh start&lt;br /&gt;sh /etc/sysconfig/apm-scripts/apmscript change&lt;br /&gt;&lt;br /&gt;/etc/sysconfig/apm-scripts/apm-script&lt;br /&gt;if test "x$CPUFREQ" = "xyes"; then&lt;br /&gt; if apm | LC_ALL=C grep -q on-line &amp;&gt;/dev/null; then&lt;br /&gt;   echo -n "0%100%100%performance" &gt; /proc/cpufreq&lt;br /&gt;   hdparm -S 48  /dev/hda&lt;br /&gt;   swapon -a&lt;br /&gt; else&lt;br /&gt;   echo -n "0%12%60%userspace" &gt; /proc/cpufreq&lt;br /&gt;   hdparm -S 12  /dev/hda&lt;br /&gt;   swapoff -a&lt;br /&gt; fi&lt;br /&gt;fi&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Going Mobile: MiniPCI Prism2 Cards&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;One of the real benefits of having a laptop is all of the great untethered hacking you can do. As with power management, some smart tailoring can make using your laptop even better. &lt;/p&gt;   &lt;p&gt;Many newer laptops, such as IBM laptops, come standard with internal wireless cards based on a technology called &lt;i&gt;MiniPCI&lt;/i&gt;. Many of these cards are based on &lt;i&gt;Prism2&lt;/i&gt;, and as a result, most users are installing the &lt;i&gt;linux-wlan-ng&lt;/i&gt; drivers to get their cards working. Unfortunately, the &lt;i&gt;linux-wlan-ng&lt;/i&gt; drivers lack a lot of features, including compatibility with wireless extensions, leaving many with a proprietary interface to configure their cards. &lt;/p&gt;   &lt;p&gt;One little known fact about the wireless drivers included with Linux is that the &lt;i&gt;orinoco_pci&lt;/i&gt; driver is actually a Prism2-based driver for PCI cards that works with Prism2-based internal wireless cards. Better yet, the &lt;i&gt;orinoco_pci&lt;/i&gt; driver can use wireless extensions and tools such as &lt;i&gt;iwconfig&lt;/i&gt; and &lt;i&gt;iwpriv&lt;/i&gt;. &lt;/p&gt;   &lt;p&gt;To use the &lt;i&gt;orinoco_pci&lt;/i&gt; driver, edit &lt;i&gt;modules.conf&lt;/i&gt; and replace your existing wireless NIC alias with this:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;alias eth1 orinoco_pci&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;Next, you can either reboot or unload your old module, then run &lt;tt&gt;modprobe orinoco_pci&lt;/tt&gt;. Your internal wireless card should now be serviced by the Orinoco PCI kernel module, giving you access to the standard set of wireless tools.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Fancy-Free: Using Windows Drivers in Linux&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;If you're unfortunate enough to have one of those wireless cards that isn't formally supported in Linux yet, you'll be happy to know that for a mere $20, you can use the manufacturer's &lt;i&gt;Windows-based&lt;/i&gt; card drivers on your Linux machine. Just head over to Linuxant (&lt;a href="http://www.linuxant.com/"&gt;http://www.linuxant.com&lt;/a&gt;) and grab &lt;i&gt;Driver Loader&lt;/i&gt;. If you don't have your manufacturer's CD, Driver Loader will even help you download the correct drivers from the manufacturer's web site.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Staying Mobile: War Driving Essentials&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;If you're into &lt;i&gt;war-driving&lt;/i&gt; or just &lt;i&gt;war-walking&lt;/i&gt;, you'll soon find that you can't live without &lt;i&gt;Kismet&lt;/i&gt; and &lt;i&gt;Airsnort&lt;/i&gt;. Combined, these two tools provide the ultimate wireless hacking and diagnostic tools available for Linux.&lt;/p&gt;   &lt;p&gt;According to the Kismet web site (&lt;a href="http://www.kismetwireless.net/"&gt;http://www.kismetwireless.net&lt;/a&gt;), Kismet is a complete wireless network detector, sniffer, and intrusion detection system. The free utility allows you to scan for wireless networks, performs real-time WEP decryption, and can even tell you the IP ranges being used on the network. Kismet shows you what (if any) encryption is being used on a network, how many clients are connected to each network, and shows wireless access points left in their factory configuration. If you have WEP keys to some of the networks you're authorized on, you can even perform real-time WEP decryption and sniffing. Combine that with a tool like &lt;i&gt;Driftnet&lt;/i&gt; (&lt;a href="http://www.ex-parrot.com/%7Echris/driftnet"&gt;http://www.ex-parrot.com/~chris/driftnet&lt;/a&gt;) or &lt;i&gt;Ethereal&lt;/i&gt; (&lt;a href="http://www.ethereal.com/"&gt;http://www.ethereal.com&lt;/a&gt;), and you'll be able to satisfactorily analyze any type of traffic on your network.&lt;/p&gt;   &lt;p&gt;Airsnort is an excellent WEP recovery tool. If you travel a lot, and new WEP keys don't always make it into your inbox, or if you are a security professional paranoid about the security of your wireless network (or if you and your friends just like to hack each other for fun), Airsnort can help recover the WEP key for a wireless network within about an hour, depending on the amount of traffic on the network. (WEP has a fundamental deficiency making it possible to deduce the key by analyzing what are called &lt;i&gt;initialization vectors&lt;/i&gt;.) &lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Make Data Calls with a Mobile Phone&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;There are many different types of mobile phones on the market today, but most data-capable phones share a common method of communicating with the software modem either in the phone or at the cell provider's location. The &lt;i&gt;Linux Abstract Control Model&lt;/i&gt; (ACM) is designed to communicate with abstract devices, such as data modems on cellular phones. The Linux ACM maps the device to a TTY in &lt;i&gt;/dev&lt;/i&gt;, which you can then talk to like a normal modem.&lt;/p&gt;   &lt;p&gt;(Most Linux distributions do not have a functional ACM module out of the box, so it's sometimes necessary to recompile the kernel to get ACM working correctly. Moreover, some versions of Red Hat and Fedora Linux require the module first be loaded using &lt;i&gt;modprobe&lt;/i&gt;. The Linux ACM module works well in both 2.4 and 2.6 kernels after a custom compile. If you find yourself stuck and unable to get the ACM module to work properly, consider performing a custom build of your kernel.)&lt;/p&gt;   &lt;p&gt;To use ACM, the first thing you'll need is a cable to connect your mobile phone to your laptop. In many cases, a generic USB cable compatible with the phone will work, but it's sometimes necessary to purchase a mobile kit from the provider. Forking over the extra $20 for a kit may be better than getting burned with a cheap cable on eBay. &lt;/p&gt;    &lt;p&gt;Once you have the cable, run the command &lt;tt&gt;tail -f /var/log/messages&lt;/tt&gt;. (If you're running on battery power and have disabled &lt;i&gt;syslog&lt;/i&gt;, either plug your laptop in or restart the &lt;i&gt;syslog&lt;/i&gt; service to see these messages). When you plug the cable into the phone and the laptop, you should see something like this scroll by:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;kernel: hub.c: new USB device 00:1d.1-2, assigned address 2&lt;br /&gt;kernel: usb.c: registered new driver acm&lt;br /&gt;kernel: ttyACM0: USB ACM device&lt;br /&gt;kernel: acm.c: v0.21:USB Abstract Control Model driver for USB&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;Here, the kernel's ACM module detected the device and assigned &lt;i&gt;/dev/input/ttyACM0&lt;/i&gt; as a logical device to communicate with the mobile phone. Now you can talk to &lt;i&gt;/dev/ input/ttyACM0&lt;/i&gt; as if it were a normal modem and can configure a dialup connection. For example, the sidebar "Phoning Home" shows the use of the popular &lt;i&gt;wvdial&lt;/i&gt; dialer to establish a call.&lt;/p&gt;  &lt;table bg border="1" cellpadding="8" width="80%" style="color:#ffffff;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;div class="PREMLISTING"&gt; &lt;p class="LISTING-TITLE"&gt; &lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Phoning Home&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;  &lt;p&gt;To  use the the &lt;i&gt;wvdial&lt;/i&gt; dialer to establish a data connection via your cell phone, follow these steps. &lt;/p&gt;  &lt;b&gt;STEP 1: ADD THE MODEM TO &lt;i&gt;/ETC/WVDIAL.CONF&lt;/i&gt;&lt;/b&gt;  &lt;p&gt;First, add your modem to &lt;i&gt;wvdial.conf&lt;/i&gt;. Once added to the configuration, other tools such as &lt;i&gt;Red Hat Network Manager&lt;/i&gt; can be used to set up the dialup connection, or you can hard-code them as in this example. &lt;/p&gt;  &lt;p&gt;The modem configuration in &lt;i&gt;wvdial.conf&lt;/i&gt; should look something like this:&lt;/p&gt;  &lt;tt&gt; [Mobile] Modem = /dev/input/ttyACM0 Baud = 57600 SetVolume = 2 Dial Command = ATDT Init1 = ATZ FlowControl = Hardware (CRTSCTS)&lt;/tt&gt;  &lt;b&gt;STEP 2: CONFIGURE THE DIALER INTERFACE&lt;/b&gt;  &lt;p&gt;Now that you've added the modem into &lt;i&gt;wvdial.conf&lt;/i&gt;, you need to create a dialer interface for the dialup connection. You do this in &lt;i&gt;/etc/sysconfig/network-scripts&lt;/i&gt;. Create a file named &lt;i&gt;ifcfg-&lt;/i&gt;ISP, where &lt;i&gt;ISP&lt;/i&gt; is the name of your Internet provider. The configuration should look something like this:&lt;/p&gt;  &lt;tt&gt; ONBOOT=no USERCTL=yes PEERDNS=yes TYPE=Modem DEVICE=ppp2 BOOTPROTO=dialup CCP=off PC=off AC=off BSDCOMP=off VJ=off VJCCOMP=off LINESPEED=57600 MODEMPORT=/dev/input/ttyACM0 IDLETIMEOUT=600 PROVIDER=ISP DEFROUTE=yes PERSIST=no PAPNAME=username WVDIALSECT=ISP MODEMNAME=Mobile DEMAND=no &lt;/tt&gt;  &lt;p&gt;You'll want to change &lt;tt&gt;&lt;i&gt;username&lt;/i&gt;&lt;/tt&gt; to your account name with your ISP. Next, add authentication information.&lt;/p&gt;  &lt;b&gt;STEP 3: AUTHENTICATE YOURSELF&lt;/b&gt;  &lt;p&gt;Once you've configured a dialer interface, you'll need to provide the username, password, and phone number you want to use. This information should be added to both &lt;i&gt;/etc/wvdial.conf&lt;/i&gt; and &lt;i&gt;/etc/ppp/chap-secrets&lt;/i&gt;. &lt;/p&gt;  &lt;p&gt;Going back to &lt;i&gt;/etc/wvdial.conf&lt;/i&gt;, add the following block of information to the bottom:&lt;/p&gt;  &lt;tt&gt; [Dialer ISP] Username = username Password = mypassword Phone = [Phone Number to ISP] Stupid Mode = 1&lt;/tt&gt;  &lt;p&gt;You'll also want to add the following to &lt;i&gt;/etc/ppp/chap-secrets&lt;/i&gt;:&lt;/p&gt;  &lt;tt&gt;&lt;i&gt;"username" "ISP" "mypassword"&lt;/i&gt;&lt;/tt&gt;  &lt;p&gt;Finally, you're ready to make a connection. Type...&lt;/p&gt;  &lt;tt&gt;# ifup &lt;i&gt;ISP&lt;/i&gt;&lt;/tt&gt;  &lt;p&gt;to activate your interface. Your mobile phone should identify that it's making a data call, and you should see status messages scroll by in the logs. Once authenticated, most conventional ISPs will assign an IP address, and from there, you'll be able to communicate on the network. When you're finished, type &lt;tt&gt;ifdown &lt;i&gt;ISP&lt;/i&gt;&lt;/tt&gt; to shut down the connection.&lt;/p&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Connecting to Verizon's MobileOffice Service&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;Verizon Wireless provides two types of wireless services. The first, called &lt;i&gt;MobileOffice&lt;/i&gt;, provides speeds up to 14.4k and generally charges only for minutes. The second type of service is called &lt;i&gt;ExpressNetwork&lt;/i&gt; and provides speeds up to 144k, but is rather pricey at around $80 a month for unlimited use. &lt;/p&gt;   &lt;p&gt;The MobileOffice service is configured in the same way a traditional dialup connection is, with only a few twists. &lt;/p&gt;   &lt;p&gt;Start with the instructions in the "Phoning Home" sidebar, but convert the connection to support Verizon Wireless' MobileOffice.&lt;/p&gt;    &lt;p&gt;Specifically, you'll want to dial the number &lt;tt&gt;#777&lt;/tt&gt; with your mobile phone. This is changed in the Dialer configuration from step 3 of "Phoning Home." Next, add an initialization string. A special initialization string sets a register that tells Verizon's modem banks you want to connect to their Mobile Office service. Add the following to your modem block in /&lt;i&gt;etc/ wvdial.conf&lt;/i&gt;:&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;Init3 = AT$QCMDR=2&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;If you subscribe to Verizon's high-speed ExpressNetwork instead, load the &lt;tt&gt;QCMDR&lt;/tt&gt; register with the number &lt;tt&gt;3&lt;/tt&gt;.&lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;Init3 = AT$QCMDR=3&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;To authenticate on the MobileOffice network, use the username and password &lt;tt&gt;qnc&lt;/tt&gt;. You'll want to change this in both &lt;i&gt;/etc/wvdial.conf&lt;/i&gt; and &lt;i&gt;/etc/ppp/chap-secrets&lt;/i&gt;. &lt;/p&gt;   &lt;p&gt;To authenticate on ExpressNetwork, use the username xxxxxxxxxx&lt;i&gt;@vzw3g.com&lt;/i&gt;, where the &lt;i&gt;x&lt;/i&gt;'s represent your 10-digit mobile telephone number. Use the password &lt;tt&gt;vzw&lt;/tt&gt;. Of course, you'll need to be an ExpressNetwork subscriber to authenticate on it.&lt;/p&gt;   &lt;p&gt;And that's it! Once you've changed the settings above, you should be able to bring your dialup interface up on either of the Verizon networks. Please check with Verizon to find any charges and airtime fees that may apply.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;Dynamic 3D X Server Creation&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;Many laptops have somewhat limited VRAM, which creates a conflict: either run your display without 3D support, or run it with limited color depth. &lt;/p&gt;    &lt;p&gt;&lt;i&gt;Dynamic X server creation&lt;/i&gt; allows you to have the best of both worlds by running your laptop's display in 2D mode for normal work, and spawning a new X server when you want to play a game. &lt;/p&gt;   &lt;p&gt;You can accomplish this with a little script and the creation of a separate &lt;i&gt;XF86Config&lt;/i&gt; file.&lt;/p&gt;   &lt;p&gt;First, create a separate XF86Config file. The primary XF86-Config configuration will be used for whatever 2D configuration you need for day-to-day work, but the new configuration will be specifically for 3D. &lt;/p&gt;   &lt;p&gt;To begin, just copy the existing file to a new file called &lt;i&gt;XF86Config.3D&lt;/i&gt; (these files should be located in &lt;i&gt;/etc/X11&lt;/i&gt;). Edit the new 3D file to set the resolution and color depth of your 3D environment.&lt;/p&gt;   &lt;p&gt;Next, create a 3D startup script for the game. Spawning a 3D server is done with the help of a small script and use of X's desktop-switching hotkeys. The script should looks a little something like the one below. &lt;/p&gt;  &lt;div class="PREMLISTING"&gt;&lt;pre&gt;/usr/X11R6/bin/X :1 -xf86config XF86Config.3D \&lt;br /&gt; -depth 16 -auth /var/gdm/:1.Xauth vt8 &amp;amp;&lt;br /&gt;DISPLAY=:1.0&lt;br /&gt;export DISPLAY&lt;br /&gt;&lt;br /&gt;chromium&lt;br /&gt;DISPLAY=:0.0&lt;br /&gt;export DISPLAY&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;In this example, the 3D X server is spawned to play &lt;i&gt;chromium&lt;/i&gt;. Running this script spawns a new window and loads &lt;i&gt;chromium&lt;/i&gt;. From there, you can use X's hotkeys to terminate the X session using ALT-CTRL-BACKSPACE and return to your 2D desktop, or you can switch between the two desktops using ALT-CTRL-F7 and ALT-CTRL-F8. It's generally a good idea to terminate the session when you're finished with it.&lt;/p&gt;  &lt;p class="SUBHEAD"&gt;&lt;b&gt;On the Road Again&lt;/b&gt;&lt;/p&gt;   &lt;p&gt;This article explored just a small set of hacks for optimizing Linux in the mobile environment. Linux is an extremely flexible operating system, and with a little bit of creativity, it can provide a mobile computer with just as many features as commercial operating systems.&lt;/p&gt;  &lt;hr /&gt;  &lt;i&gt;Jonathan Zdziarski is the creator of many popular open source tools including &lt;/i&gt;DSPAM&lt;i&gt;, the Apache &lt;/i&gt; mod_dosevasive&lt;i&gt; module, and &lt;/i&gt; WebConference/LiveHelp&lt;i&gt;. With 20 years of experience in computing, Jonathan has played a key role in the development of many large corporate infrastructures and well-known commercial products such as &lt;/i&gt;Micromuse Netcool&lt;i&gt;. Jonathan is an active Linux and UNIX enthusiast, and hacks away at his Linux-powered &lt;/i&gt;IBM Thinkpad&lt;i&gt; in his spare time. You can reach Jonathan at &lt;a href="mailto:jonathan@nuclearelephant.com"&gt;jonathan@nuclearelephant.com&lt;/a&gt;.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-1953835161214054783?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/1953835161214054783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=1953835161214054783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1953835161214054783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1953835161214054783'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/power-manage-in-linux.html' title='power manage in linux'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-5759255404854500401</id><published>2007-04-13T11:17:00.001-07:00</published><updated>2007-04-13T11:17:57.456-07:00</updated><title type='text'>driver</title><content type='html'>ftp://ftp.support.acer-euro.com/notebook/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-5759255404854500401?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/5759255404854500401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=5759255404854500401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5759255404854500401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/5759255404854500401'/><link rel='alternate' type='text/html' href='http://cinfd.blogspot.com/2007/04/driver.html' title='driver'/><author><name>cinfdcinfd's blog</name><uri>http://www.blogger.com/profile/03439560590753070717</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-3070186580249183534.post-1631559268342114917</id><published>2007-04-11T15:10:00.000-07:00</published><updated>2007-04-11T15:12:57.261-07:00</updated><title type='text'>C language structure</title><content type='html'>&lt;a href="http://mailman.linuxchix.org/pipermail/courses/2002-November/000991.html"&gt;[Courses] [C] Beginner's Lesson Eleven: Advanced Types&lt;/a&gt;&lt;br /&gt;http://mailman.linuxchix.org/pipermail/courses/2002-November/000991.html&lt;br /&gt;&lt;a href="http://pw1.netcom.com/%7Etjensen/ptr/pointers.htm"&gt;Pointer&lt;/a&gt;&lt;br /&gt;http://pw1.netcom.com/~tjensen/ptr/pointers.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3070186580249183534-1631559268342114917?l=cinfd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cinfd.blogspot.com/feeds/1631559268342114917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3070186580249183534&amp;postID=1631559268342114917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3070186580249183534/posts/default/1631559268342114917'/><link rel='self' type='application/ato
