锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美成人午夜剧场免费观看,午夜欧美大片免费观看,国产精品国产一区二区http://m.shnenglu.com/skyscribe/zh-cnFri, 03 Oct 2025 20:12:30 GMTFri, 03 Oct 2025 20:12:30 GMT60杞Щ鍒癵ithubhttp://m.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.htmlskyscribeskyscribeWed, 29 Feb 2012 14:52:00 GMThttp://m.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.htmlhttp://m.shnenglu.com/skyscribe/comments/166817.htmlhttp://m.shnenglu.com/skyscribe/archive/2012/02/29/move-to-octopress.html#Feedback0http://m.shnenglu.com/skyscribe/comments/commentRss/166817.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/166817.html
鎰熷叴瓚g殑璇風Щ姝? http://skyscribe.github.com

skyscribe 2012-02-29 22:52 鍙戣〃璇勮
]]>
ruby瀛︿範絎旇銆婁簩銆?/title><link>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 19 Feb 2012 11:29:00 GMT</pubDate><guid>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html</guid><wfw:comment>http://m.shnenglu.com/skyscribe/comments/165993.html</wfw:comment><comments>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/skyscribe/comments/commentRss/165993.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/skyscribe/services/trackbacks/165993.html</trackback:ping><description><![CDATA[ruby鐨刡locks鍜宑losure鐗規ф槑鏄炬湁鍒簬鍏跺畠鐨勮璦錛屽叾closure鏈韓鏄痳eal closure錛屾墍緇戝畾鐨刢ontext鏄叡浜殑鑰岄潪copy錛屽叾璁捐鎬濊礬鍜宭isp鐨勭浉鍚岋紱blocks鏈韓鍒欏彲浠ョ敤浜庡疄鐜癱losure銆備簩鑰呯殑鍏崇郴濡備笅鎵榪?錛?a >鏉ユ簮</a>錛?br /> <blockquote><br /> <div><strong>Yukihiro Matsumoto</strong>: You can reconvert a closure back into a block, so a closure can be used anywhere a block can be used. Often, closures are used to store the status of a block into an instance variable, because once you convert a block into a closure, it is an object that can by referenced by a variable. And of course closures can be used like they are used in other languages, such as passing around the object to customize behavior of methods. If you want to pass some code to customize a method, you can of course just pass a block. But if you want to pass the same code to more than two methods -- this is a very rare case, but if you really want to do that -- you can convert the block into a closure, and pass that same closure object to multiple methods.<br /> </div> </blockquote> <div> <ul> <li> <h2>7縐嶇粨鏋?/h2> </li> </ul> <blockquote> <ul> <li>block鏂瑰紡3縐?/li> </ul> <blockquote> <ul> <li>闅愬紡浼犲叆錛屽唴閮ㄧ敤yield璋冪敤</li> </ul> <blockquote>   <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> thrice<br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br />   </span><span style="color: #0000FF; ">yield</span><span style="color: #000000; "><br /> end<br /> <br /> x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /> thrice {x</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">}</span></div> <span style="color: #000000; "></span></div> </blockquote> <ul> <li>&block鍙傛暟浼犲叆錛屽唴閮ㄧ洿鎺ユ搷浣?amp;block</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> six_times(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br />   thrice(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br />   thrice(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">block)<br /> end<br />  <br /> x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">4</span><span style="color: #000000; "><br /> six_times { x </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> </span><span style="color: #000000; ">10</span><span style="color: #000000; "> }</span></div> </blockquote> <ul> <li>&block浼犲叆錛屼繚瀛榖lock涓哄彉閲忥紝鐒跺悗璋冪敤block.call</li> </ul> <blockquote> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> save_for_later(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">b)<br />   @saved </span><span style="color: #000000; ">=</span><span style="color: #000000; "> b  </span><span style="color: #008000; ">#</span><span style="color: #008000; "> Note: no ampersand! This turns a block into a closure of sorts.</span><span style="color: #008000; "><br /> </span><span style="color: #000000; ">end<br />  <br /> save_for_later { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">Hello!</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">Deferred execution of a block:</span><span style="color: #800000; ">"</span><span style="color: #000000;"><br /> @saved.call<br /> @saved.call<br /> </span></div> </blockquote><blockquote>榪欓噷鐨剆aved淇濆瓨涓簃ain瀵硅薄鐨勪竴涓垚鍛橈紝鍚庤竟瀹炵幇寤惰繜璋冪敤銆?br /> </blockquote></blockquote> <ul> <li>Proc.new/proc</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">@saved_proc_new </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Proc.new { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with Proc.new.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> @saved_proc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> proc { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with proc.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> <br /> @saved_proc_new.call<br /> @saved_proc.call</span></div> </blockquote> <ul> <li>lambda</li> </ul> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">@saved_lambda </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">lambda</span><span style="color: #000000; "> { puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared with lambda.</span><span style="color: #800000; ">"</span><span style="color: #000000; "> }<br /> @saved_lambda.call</span></div> </blockquote> <ul> <li>method</li> </ul> <blockquote> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">def</span><span style="color: #000000; "> some_method<br />   puts </span><span style="color: #800000; ">"</span><span style="color: #800000; ">I'm declared as a method.</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /> end<br /> @method_as_closure </span><span style="color: #000000; ">=</span><span style="color: #000000;"> method(:some_method)<br /> <br /> </span></div> </blockquote></blockquote> <ul> <li> <h2>鐗圭偣鍜屽樊寮?/h2> </li> <ul> <li> <h2>return琛屼負</h2> </li> </ul> </ul> <blockquote><blockquote>褰撳搴旂殑block閲岃竟鍖呭惈return鐨勬椂鍊欙紝涓婅堪7涓柟寮忔湁浜涜鐨勪笉鍚岋細<br /> <ul> <li>lambda/method琛ㄧ幇鍑虹湡姝g殑closure琛屼負錛屼粎浠呰繑鍥瀋losure鏈韓錛涘閮ㄨ皟鐢ㄦ帶鍒舵祦涓嶅彈褰卞搷錛岀戶緇瓂ield鎴栬卌all鐨勪笅涓璇彞鎵ц</li> <li>鍏跺畠鍑犵浼氳煩鍑哄閮ㄨ皟鐢ㄨ呯殑鎺у埗嫻侊紝鍗硆eturn鍑鴻皟鐢ㄨ咃紝yield/call涔嬪悗鐨勪篃涓嶄細鍐嶆墽琛岋紝鐩存帴璺沖嚭鍒版渶榪戠殑end澶?/li> </ul> <p><br /> </p> </blockquote> <ul> <li> <h3>arity - 鍙傛暟涓暟鏍¢獙</h3> </li> </ul> <blockquote>瀵逛簬璋冪敤鐐圭殑鍙傛暟媯鏌ワ紝鍛堢幇濡備笅琛屼負錛?br /> <ul> <li>lambda/method涓ユ牸鏍¢獙鍙傛暟鐨勪釜鏁幫紝濡傛灉涓嶅尮閰嶅洖鎶涘嚭寮傚父</li> <li>鍏跺畠鍑犱釜涓嶆鏌ュ弬鏁頒釜鏁?/li> </ul> <p><br /> </p> </blockquote></blockquote> <ul> <li> <h2>鎬葷粨</h2> </li> </ul> <blockquote>lambda/method鏂瑰紡鍛堢幇瀹屽鐨刢losure琛屼負錛宺eturn涔嬪悗緇х畫涓嬩竴嫻佺▼錛屽浜庡疄闄呬紶鍏ュ弬鏁頒釜鏁頒細鍦ㄨ皟鐢ㄧ偣媯鏌ワ紱proc/blocks鏂瑰紡鍦╮eturn鐨勬椂鍊欑洿鎺ヨ繑鍥炰簡澶栭儴鐨勫嚱鏁版垨鑰卋lock錛屽浜庝紶鍏ョ殑鍙傛暟涓暟涔熸病鏈夋墽琛屾鏌ャ?br /> <br /> </blockquote>鍙傝冿細<a >http://innig.net/software/ruby/closures-in-ruby</a> <br />浠ヤ笂緇撹楠岃瘉浜庢渶鏂扮殑ruby1.9.3錛屽拰閾炬帴涓殑緇撹鏈変簺璁鎬笉鍚岋紱ruby1.8涓殑proc鍑芥暟鍙兘鏈変笉鍚岀殑琛屼負銆?br /> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;"></span></div> </div><img src ="http://m.shnenglu.com/skyscribe/aggbug/165993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2012-02-19 19:29 <a href="http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-1.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ruby瀛︿範絎旇銆婁竴銆?/title><link>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 19 Feb 2012 07:58:00 GMT</pubDate><guid>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html</guid><wfw:comment>http://m.shnenglu.com/skyscribe/comments/165976.html</wfw:comment><comments>http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/skyscribe/comments/commentRss/165976.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/skyscribe/services/trackbacks/165976.html</trackback:ping><description><![CDATA[鐪嬪緱鍐嶅涔熶笉濡傝嚜宸卞姩鎵嬭瘯錛屾渶榪戞湁闂插氨鎵撶畻璁ょ湡鐮旂┒涓涓媟uby璇█浜嗐?a >Pragmatic programmer</a>涓錛岄渶瑕佷竴騫村涓闂ㄦ柊璇█涓閬嶆敼閫犳濇兂錛屽幓騫存祬嫻呯殑瀛︿簡javascript鐨勭毊姣涳紝浠婂勾鍙互鐪嬬湅ruby榪? 涓湁lisp涔嬮鐨凮O璇█浜嗐?br /> <br /> <ul> <li>瀹夎鐜</li> </ul> 絎竴涓兂鍒扮殑鏄痑pt-get鏉ヤ笅杞戒簡錛屽緱鍒扮殑鏄竴涓氦浜掑紡瑙f瀽鍣ㄥ拰緙栬瘧鍣ㄣ傚拰python鐨勬瘮杈冪被浼鹼紝涓嶈繃ruby鐨勪氦浜掔▼搴忔槸涓崟鐙殑紼嬪簭鍙仛irb銆?br /> <blockquote> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ ruby </span><span style="color: #000000; ">--</span><span style="color: #000000; ">version<br /> ruby </span><span style="color: #000000; ">1.8</span><span style="color: #000000; ">.</span><span style="color: #000000; ">7</span><span style="color: #000000; "> (</span><span style="color: #000000; ">2011</span><span style="color: #000000; ">-</span><span style="color: #000000; ">06</span><span style="color: #000000; ">-</span><span style="color: #000000; ">30</span><span style="color: #000000; "> patchlevel </span><span style="color: #000000; ">352</span><span style="color: #000000; ">) [i686</span><span style="color: #000000; ">-</span><span style="color: #000000; ">linux]<br /> skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ irb<br /> irb(main):</span><span style="color: #000000; ">001</span><span style="color: #000000; ">:</span><span style="color: #000000; ">0</span><span style="color: #000000; ">></span><span style="color: #000000; "> puts </span><span style="color: #000000; ">"</span><span style="color: #000000; ">hello</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /> hello<br /> </span><span style="color: #000000; ">=></span><span style="color: #000000;"> nil<br /> <br /> </span></div> </blockquote>鍙儨寰楀埌鐨勪笉鏄瘮杈冩柊鐨勭増鏈?br /> <br /> 涓? 榪囧緢蹇兂璧風炕緲?a > wiki</a>錛岃繕鏄敤rvm鏂逛究鐨勫銆傛暀紼嬫瘮杈冪畝鍗曪紝鍙傝冨畠鐨?a >quick installation guide</a>灝卞彲銆傜涓嬈″皾璇曠殑鏃跺欑敤apt-get瀹夎浜嗘病鏈塸urge錛屽鑷存繪槸瀹夎鍒皉oot鐢ㄦ埛閫? 鎴?#8220;permission denied"鐨勯棶棰樸?br /> <br /> 瀹夎濂戒箣鍚庯紝鎵鏈夌殑涓滆タ閮藉湪$HOME/.rvm涓嬭竟錛屾瘮杈冨共鑴嗐?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;"><br /> </span><blockquote><span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ rvm install </span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000;"></span><br /> <span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000;">$ rvm list</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000;">rvm rubies</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; ">   ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125 [ i686 ]</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; "># Default ruby not </span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">. Try </span><span style="color: #000000; ">'</span><span style="color: #000000; ">rvm alias create default <ruby></span><span style="color: #000000; ">'</span><span style="color: #000000;">.</span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; "># </span><span style="color: #000000; ">=></span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000;"> current</span><br /> <span style="color: #000000; "># </span><span style="color: #000000; ">=*</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; "> current </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">default</span><span style="color: #000000;"></span><br /> <span style="color: #000000; ">#  </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">default</span><span style="color: #000000;"></span><br /> <span style="color: #000000;"></span><br /> <span style="color: #000000; ">skyscribe:</span><span style="color: #000000; ">~</span><span style="color: #000000; ">$ rvm alias create </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125</span><br /> <span style="color: #000000; ">Creating alias </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125.</span><br /> <span style="color: #000000; ">Recording alias </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> ruby</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1.9</span><span style="color: #000000; ">.</span><span style="color: #000000; ">3</span><span style="color: #000000; ">-</span><span style="color: #000000;">p125.</span><br /> <span style="color: #000000; ">Creating </span><span style="color: #0000FF; ">default</span><span style="color: #000000; "> links</span><span style="color: #000000; ">/</span><span style="color: #000000;">files</span><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; "></span><span style="color: #000000; "><div>skyscribe:~$ cat >> ~/.bashrc <br />[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.<br />^C<br />skyscribe:~$ bash<br />skyscribe:~$ rvm use 1.9.3<br />Using /home/skyscribe/.rvm/gems/ruby-1.9.3-p125<br />skyscribe:~$ ruby -v<br />ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]</div></span></div><br /> <span style="color: #000000; "></span></blockquote></div> <br /> <ul> <li>鐔熸倝鍜屼笂鎵?/li> </ul> 瀹樻柟鐨勬枃妗f槸鏈濂界殑鍙傝冿紝鎺ㄨ崘<a >ruby koans</a>,涓嬭澆涓嬫潵錛岃В鍘嬪悗錛屾槸涓吀鍨嬬殑TDD瀛︿範鏉愭枡錛屼笉鏂繍琛?br /> <blockquote> <div> <div> ruby path_to_enlightenment.rb</div></div></blockquote><div><div>koans 浼氶亶鍘嗘瘡涓涓猼est case鐩村埌鍏ㄩ儴瀹屾瘯錛屽ぇ姒傞渶瑕?涓皬鏃朵互涓婄殑鏃墮棿鏂瑰彲鍏ㄩ儴瀹屽伐銆備腑闂寸殑娉ㄩ噴鍜孴HINK ABOUT鐨勯儴鍒嗘瘮杈冩湁鎰忔濓紝鎰熸偀姣旇緝娣卞埢鐨勬槸浠ヤ笅涓浜涚偣錛?br /><blockquote><ul><li>瀹屽畬鍏ㄥ叏鐨凮O錛屾墍鏈変笢瑗跨殕涓哄璞?/li><li>涓ょ鍩烘湰鐨刢ollection錛宧ash鍜宎rray鍩烘湰瀵瑰簲浜巔ython鐨刣ict鍜宎rray</li><li>鍑芥暟璋冪敤鍙互涓嶅繀娣誨姞鎷彿錛岄櫎闈炲彲鑳藉紩鍙戞涔夋垨鑰呰В鏋愰敊璇?/li><li>鍑芥暟鍙傛暟鍙互鍖呭惈block錛屾敮鎸乴ambda鍜宑losure<br /></li><li>bool綾誨瀷鏇寸畝鍗曪紝鍙湁false鍜宯il涓巉alse絳変環錛屽叾浣欏叏閮ㄦ槸true</li><li>鎺у埗緇撴瀯鏈塽nless</li><li>綾誨畾涔夋槸寮鏀懼紡鐨勶紝渚夸簬闈炰鏡鍏ュ紡璁捐錛屽綋鐒朵篃鍙互鍏佽淇敼builtin</li><li>姣忎竴涓璞¢兘鏈塷bject id</li><li>symbol鍜宻tring鍙互浜掔浉杞寲鏋勯?/li><li>method鐨勮皟鐢ㄥ彲浠ョ敤send 鐨勬柟娉曞彂閫乵essage - proxy鍙樺緱鏋佸害瀹規槗</li><li>module鍙互琚玞lass include浠庤屽寘鍚柟娉曪紝 渚夸簬mixin璁捐</li><li>instance variable鍜宑lass variable 瀹氫箟鏂逛究蹇嵎</li><li>regular expresion鐨勫拰python鏋佷負鐩鎬技<br /></li></ul></blockquote></div></div><blockquote><div> </div> </blockquote><img src ="http://m.shnenglu.com/skyscribe/aggbug/165976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2012-02-19 15:58 <a href="http://m.shnenglu.com/skyscribe/archive/2012/02/19/ruby-study-0.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Unix鏂囨湰澶勭悊涔嬪埄鍣紞awk/gawkhttp://m.shnenglu.com/skyscribe/archive/2011/01/02/awk.htmlskyscribeskyscribeSun, 02 Jan 2011 12:32:00 GMThttp://m.shnenglu.com/skyscribe/archive/2011/01/02/awk.htmlhttp://m.shnenglu.com/skyscribe/comments/137894.htmlhttp://m.shnenglu.com/skyscribe/archive/2011/01/02/awk.html#Feedback0http://m.shnenglu.com/skyscribe/comments/commentRss/137894.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/137894.htmlsince 1977錛夈備綔鑰呬腑鏈寮曚漢娉ㄧ洰鐨勫綋灞為紟榧庡ぇ鍚嶇殑Brian W. Kernighan (鍗矺鐨勭畝縐版潵婧愶級銆傜洰鍓嶆墍鐢ㄧ殑鐗堟湰澶у鏄痝awk鎴栬卬awk.

浣滀負涓闂ㄥ井鍨嬩笖瀹屾暣鐨勭紪紼嬭璦錛宎wk鍙互鐢ㄦ暟琛屼唬鐮佸氨瀹屾垚鍏朵粬璇█闇瑕佹暟鍊嶇殑LOC鎵嶈兘瀹屾垚鐨勫伐浣溿傚叾璁捐鍝插涔熸槸姣旇緝鐗規畩鐨勶紝鏍稿績鏄痙ata錛峝riven鐨勶紝騫朵笖閲囩敤浜嗗拰C綾諱技鐨勮娉曟潵緇勭粐銆傚畠鏈鏍稿績鐨勬濇兂搴旇鏄涓嬩袱鐐癸細
  • pattern-action 緇撴瀯 鍊熺敱寮哄ぇ鐨勬鍒欒〃杈懼紡鏉ュ尮閰峱attern錛岀劧鍚庢墽琛宲attern瀵瑰簲鐨勬搷浣?/li>
  • Record/Field 澶勭悊妯″瀷  鎵鏈夌殑杈撳叆鏁版嵁閮芥牴鎹埗瀹氱殑record separator 鍒嗗壊鎴?record, 鐒跺悗娌′竴涓猺ecord鍐嶆牴鎹甪ield separator 鍒嗗壊涓篺ields. POSIX 瀹氫箟鐨?field separator鍙互涓烘鍒欒〃杈懼紡錛岃実awk鍙互鍏佽record separator鍚屾椂涓烘鍒欒〃杈懼紡
寮曞彂鎴戣姳鐐規椂闂存潵浠旂粏鐮旂┒awk鐨勮搗鍥犳槸榪欐牱鐨勶紝鎴戜滑鐨勭▼搴忓湪鍋歱rofiling鐨勬椂鍊欙紝鍙戠幇鍘熸潵鐢╯hell鍐欑殑鑴氭湰鍒嗘瀽涓嬈¤瘽璐圭殑鏃墮棿澶暱銆傚垵鐪嬩簡涓嬮偅涓剼鏈紝澶ф鐨勯昏緫鏄鎵悕鎵鏈夌殑log鏂囦歡錛屾寜鐓ф椂闂存埑灝嗗叧娉ㄧ殑鏃墮棿鎵鑰楄垂鐨勬椂闂存彁鍙栧嚭鏉ワ紝璁$畻騫沖潎鍊鹼紝娉㈠姩絳夋渶緇堢敾鍑烘洸綰垮浘銆?br>
鏁翠綋鐨勮剼鏈湁鍑犱釜閮ㄥ垎錛坧ython錛媌ash錛夛紝澶勭悊涓嬈?0MB鐨刲og鏂囦歡闇瑕佽楄垂40鍒嗛挓锝?涓皬鏃訛紝榪欐樉鐒惰秴鍑轟簡棰勬湡錛涗腑闂翠竴涓鐞嗗緢闀跨殑閮ㄥ垎鏄痝rep鏌愪釜鏃墮棿孌電殑淇℃伅鐒跺悗鎸夌収鎶ヨ〃鏍煎紡鍐欏叆鍒頒腑闂存枃浠朵腑銆傚湪鎯寵兘鍚︿紭鍖栬繖涓鑺傜殑鏃跺欙紝蹇界劧灝辨兂璧蜂簡妯″紡鍖歸厤鏉ワ紙瀛︿範Haskell鐨勬渶娣卞嵃璞★級錛屼簬鏄ぇ鑷寸炕浜嗕竴涓媋wk錛屽彂鐜板緢瀹規槗閫氳繃妯″紡鍖歸厤浣垮緱鎸夎澶勭悊錛屽悓鏃惰褰曚腑闂寸殑淇℃伅錛岃屼竴涓椂闂存鎭板ソ鍜宎wk鐨剅ecord姒傚康鍚誨悎銆?br>
鑺變簡2涓皬鏃剁爺璇諱簡涓媋wk鐨勫嚱鏁拌娉曪紝鑷畾涔夎嚜宸辯殑鏃墮棿鎴彇鍑芥暟錛坓awk鐨剆trftime寰堟湁鐢紝灝ゅ叾鎴戜滑鍙戠幇璁板綍鏈夎煩璺冭鑷姩琛ュ叏涓棿鐨勬暟鎹褰曟椂錛夛紝閫氳繃涓変釜pattern鎴彇闇瑕佺殑淇℃伅錛?0鍒嗛挓鍐欏嚭鏉wk鐨勪唬鐮佹潵銆?br>
鎵騫哥殑鏄紝鍏跺畠鐨剆hell鑴氭湰閮戒笉闇瑕佷換浣曟敼鍔紝閲嶆柊璺戜竴嬈★紝3s灝卞鐞嗗畬浜嗗師鏉?0MB鐨勬枃浠訛紝鐪嬫潵榪欑偣鏃墮棿鎶曞叆榪樻槸鐩稿綋鍊煎緱鐨勩?br>
鏈夊叴瓚g殑鍙弬鑰冿細
     http://www.gnu.org/manual/gawk/gawk.html

PS錛歛wk鐨勫彟涓浣滆?a >Winberger 渚涜亴浜巊oogle銆?br> 



skyscribe 2011-01-02 20:32 鍙戣〃璇勮
]]>
GCC4.5鐨刾rofile modehttp://m.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.htmlskyscribeskyscribeSun, 09 May 2010 07:16:00 GMThttp://m.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.htmlhttp://m.shnenglu.com/skyscribe/comments/114920.htmlhttp://m.shnenglu.com/skyscribe/archive/2010/05/09/GCC4_5ProfileMode.html#Feedback0http://m.shnenglu.com/skyscribe/comments/commentRss/114920.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/114920.html榪欓噷錛夛紝
榪樺鍔犱簡涓涓柊鐨刾rofile妯″紡錛堝皻澶勪簬璇曢獙闃舵錛夛紝鍙互鏍規嵁紼嬪簭榪愯鐘舵佺粰鍑哄叧浜嶴TL浣跨敤鐨勪竴浜涗紭鍖栧緩璁?br>
鍙傜湅濡備笅鐨勬弿榪幫細
  • An experimental profile mode has been added. This is an implementation of many C++ standard library constructs with an additional analysis layer that gives performance improvement advice based on recognition of suboptimal usage patterns. For example,

    #include <vector>
    int main()
    {
    std::vector<int> v;
    for (int k = 0; k < 1024; ++k)
    v.insert(v.begin(), k);
    }

    When instrumented via the profile mode, can return suggestions about the initial size and choice of the container used as follows:

    vector-to-list: improvement = 5: call stack = 0x804842c ...
    : advice = change std::vector to std::list
    vector-size: improvement = 3: call stack = 0x804842c ...
    : advice = change initial container size from 0 to 1024

    These constructs can be substituted for the normal libstdc++ constructs on a piecemeal basis, or all existing components can be transformed via the -D_GLIBCXX_PROFILE macro.

榪欎釜profile mode鐨勪富瑕佷綔鐢ㄥ氨鏄牴鎹唬鐮佸疄闄呰繍琛岀姸鍐電粰鍑哄叧浜嶴TL鐨勪嬌鐢ㄤ紭鍖栧緩璁傛湁鐐歸仐鎲劇殑鏄紝璇rofile鏂規硶鏄痠ntrusive鐨勶紝蹇呴』娣誨姞-D_GLBCXX_PROFILE鏉ラ噸鏂扮紪璇戞墍鏈夌殑浠g爜銆?br>
Profile mode鐨勬彁鍑烘簮浜?9騫碈GO鐨勪竴綃?a >paper錛屼綔鑰呴噷杈瑰嚭鐜頒簡鍗庝漢鐨勫悕瀛楋紙鏍規嵁鎷奸煶鏉ュ垽鏂級;浣滆呭湴鍧濉殑鏄劇劧鏄疨urdue澶у鐨勶細
    Dept. of Comput. Sci., Purdue Univ., West銆?br>
GCC鐨凱rofiler瀵笴++鐨勬敮鎸佷竴璐仠鐣欏湪鍜孋鍚屾牱鐨勬按騫籌紱鐢變簬C++妯℃澘鏈哄埗鍜孫O鐨勫瓨鍦ㄤ嬌寰楀緢澶氭椂鍊欏垎鏋恜rofiling緇撴灉鐨勬剰涔夎澶уぇ鍓婂急銆?br>榪欎釜閽堝STL鐨刾rofile mode榪樻槸寰堝煎緱鏈熷緟鐨勩?br>



skyscribe 2010-05-09 15:16 鍙戣〃璇勮
]]>
boost.cmake: 鏂逛究瑙e喅boost鐨勫崌綰ч棶棰?/title><link>http://m.shnenglu.com/skyscribe/archive/2010/05/09/114919.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Sun, 09 May 2010 06:59:00 GMT</pubDate><guid>http://m.shnenglu.com/skyscribe/archive/2010/05/09/114919.html</guid><wfw:comment>http://m.shnenglu.com/skyscribe/comments/114919.html</wfw:comment><comments>http://m.shnenglu.com/skyscribe/archive/2010/05/09/114919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/skyscribe/comments/commentRss/114919.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/skyscribe/services/trackbacks/114919.html</trackback:ping><description><![CDATA[浠ュ墠甯哥敤boost鐨勪竴浜涘簱錛岀敱浜庨」鐩嚜韜敤cmake緇勭粐build銆?br>boost姣忔鍗囩駭涔嬪悗錛岄噸鏂扮敤bjam緙栬瘧涓嬈¢兘寰堟槸涓嶄究錛堟煇浜涘鉤鍙幫紝鐢ㄩ粯璁ら夐」緙栬瘧鏈変簺闂錛屽熀鏈畨瑁呬笉鎴愬姛錛夈?br><br>鏈榪戞墠鍙戠幇boost鐨刢make鐗堟湰宸茬粡鐙珛鍑烘潵浜嗭紝瀵逛簬浣跨敤cmake鐨勭敤鎴瘋岃█錛岃繖閲屾槸涓笉閿欑殑閫夋嫨銆?br>欏圭洰<a >涓婚〉</a>鐨勬枃妗e緢鏄竻鏅幫紝鏈鏂扮殑鐗堟湰鏄?.41 (鐗堟湰鍙峰搴旂殑鍩烘湰灝辨槸鍏秛pstream鐨刡oost鐗堟湰鍙?銆?br>婧愪唬鐮佹槸鐢╣it緇勭粐鐨勶紝瀵逛簬Linux鐢ㄦ埛鑰岃█鏇村姞鏂逛究銆?br><br>寮曠敤鍏朵富欏典笂鐨勪竴鍙ヨ瘽錛?br> <div style="margin-left: 40px;">Boost.<a class="reference external" >CMake</a> (or <a class="reference internal" ><em> alt.boost</em> </a>) is the boost distribution that all the cool kids are using. </div> <br>CMake + <a >GIT</a> +<a >Spinx</a> 紜疄澶熼叿浜嗐?br><br><span style="font-family: 寰蔣闆呴粦;">緙栬瘧璧鋒潵鍙互鍏呭垎鍒╃敤寮哄ぇ鐨凜Make浜嗭細</span><br> <div style="margin-left: 40px;"> <pre>git clone git://gitorious.org/boost/cmake.git src<br>cd src<br>git checkout <TAG>    //TAG==1.41.0.cmake0<br>mkdir bld<br>cd bld/<br>cmake ../<br></pre> </div> <pre>濡傛灉闇瑕佹寜闇緙栬瘧鏌愪簺搴擄紝鍙渶鐢╩ake edit_cache淇敼cache鍗沖彲銆?br></pre> <div style="margin-left: 40px;"> </div><img src ="http://m.shnenglu.com/skyscribe/aggbug/114919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2010-05-09 14:59 <a href="http://m.shnenglu.com/skyscribe/archive/2010/05/09/114919.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VIM涓嬪疄鐜板C++ STL鐨処ntelliSensehttp://m.shnenglu.com/skyscribe/archive/2010/01/10/105346.htmlskyscribeskyscribeSun, 10 Jan 2010 10:28:00 GMThttp://m.shnenglu.com/skyscribe/archive/2010/01/10/105346.htmlhttp://m.shnenglu.com/skyscribe/comments/105346.htmlhttp://m.shnenglu.com/skyscribe/archive/2010/01/10/105346.html#Feedback0http://m.shnenglu.com/skyscribe/comments/commentRss/105346.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/105346.html浠ュ墠灝濊瘯榪囧湪vim涓嬮厤緗甋TL鐨処ntellisense鏇劇粡娌℃湁鎴愬姛錛涙渶榪戞湁絀哄垰濂戒粩緇嗙湅浜嗕笅vim鐨勪竴浜涚浉瀵歸珮綰х殑manual錛?/p>

鎬葷畻灝?a >OmniCppComplete涓婚〉涓婄殑鏁堟灉緇欏紕浜嗗嚭鏉ワ紙榪欓噷錛夈?/p>

鏍規嵁鍏秇elp鎻愮ず涓姝ヤ竴姝ユ潵(瑁呭畬浜唎mnicppcomplete涔嬪悗錛屽彲浠?help omnicppcomplete)錛?/p>

  • 棣栧厛闇瑕佹湁ctags錛屽茍涓斿繀欏繪槸Exuberant ctags錛屾垜鐨刄buntu涓婂凡緇忔槸鏈鏂扮増浜嗭細

  • skyscribe@skyscribe:~/study/vim/pics$ ctags --version
    
    Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
    
      Compiled: Aug  6 2009, 17:06:22
    
      Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
    
      Optional compiled features: +wildcards, +regex
    
  • 鍦?~/.vimrc 閲岃竟鍔犲叆autoload taglist鍔熻兘錛屼負浜嗘柟渚胯嚜鍔ㄦ洿鏂板綋鍓峵ags錛岃緗竴涓揩鎹烽敭錛?a >榪欓噷錛夛細

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
source ~/.vim/my.vim

 

榪欓噷鐨勮嚜鍔ㄥ姞杞藉凡鏈塿im鐨勫姛鑳斤紝灝辯敤涓涓獀im鑴氭鏉ュ疄鐜?(鍙傝?vim :help glob緇欑殑渚嬪瓙)錛?/p>

cat ~/.vim/my.vim 
let tagfiles = glob("`find ~/.vim/tagfiles -name tags -print`")
let &tags = substitute(tagfiles, "\n", ",", "g")

 

浠ュ悗闇瑕佹柊鐨則aglist錛屽彧闇瑕佹斁鍦▇/.vim/tagfiles鐩綍涓嬪氨濂戒簡銆?/p>

vim鍚姩鐨勬椂鍊欙紝浼氳嚜鍔ㄦ墽琛寏/.vimrc錛屼粠鑰岃皟鐢╩y.vim錛屽皢浜嬪厛鍑嗗濂界殑taglist鏇存柊榪涘幓錛涜繖閲屼竴鑸斁涓浜涗笉澶彉鍖栫殑闈欐佸ご鏂囦歡tag灝卞彲浠ヤ簡銆?/p>

  • 瑕佹湁STL鐨刬ntelliSense錛岃嚜鐒惰鏈塖TL C++鐨則ags database浜嗭紝榪欓噷闇瑕佺敓鎴愪箣銆?/h1>

鏍規嵁涓婁竴姝ョ殑鎯緥錛岄渶瑕佺敓鎴愪竴涓猼ags鏂囦歡錛屾斁鍦▇/.vim/tagfiles/鐨勬煇涓瓙鐩綍涓嬶細

mkdir -p ~/.vim/tagfiles/gcc<ver>/
ls 鈥搇 /usr/include/c++/

 

榪欓噷闇瑕佸皢ver鎹㈡垚褰撳墠緋葷粺鐨刲ibstdc++鐗堟湰錛孶buntu 9.10涓婄殑鏄?.4.1.

  • 鐢ㄤ笂杈圭殑鍛戒護鐢熸垚瀵瑰簲鐨則ags鏂囦歡錛?/h1>

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . -o ~/.vim/tagfiles/gcc4.4/tags /usr/include/c++/4.4

鍐欎竴涓畝鍗曠殑c++紼嬪簭錛屽湪Insert Mode涓嬶紝Ctrl+X錛?Ctrl+P錛屽彂鐜板茍涓嶈兘宸ヤ綔錛屼粈涔堟彁紺轟篃娌℃湁錛涘垵姝ユ鐤戞槸瀵瑰簲鐨則ag鏂囦歡涓嶅銆?/p>

騫稿ソ鏃╂湁浜哄皾璇曡繃浜嗭紝緇欏嚭浜嗕竴縐嶅姙娉?榪樻槸榪欓噷錛夛紝鍙儨浠栫殑鏂規硶鎴戣瘯浜嗕笉琛岋紝涓嶈繃宸茬粡鍙互鍊熺敤浠栫殑鎬濊礬浜嗭細

    • 灝?usr/include/c++/4.4.1/鐨勫唴瀹瑰叏閮ㄦ嫹璐濆埌涓涓洰褰曚笅錛?/li>
      mkdir gcc4.4
      cp -R /usr/include/c++/4.4 ./
    • 鍐欎竴涓剼姝ユ浛鎹㈡墍鏈夌殑NAMESPACE瀹忓畾涔?榪欓噷鐢╯ed瀹屾垚瀹忔浛鎹紝涓轟簡閬垮厤榪囦簬鏅︽訂錛岃繕鏄斁鍦ㄤ竴涓復鏃剁殑鑴氭鏂囦歡閲岃竟鏉ワ紝渚夸簬璋冭瘯鍚?錛?/li>
cat generate_sed.sh 
#!/bin/bash
if [ $# -eq 0 ];then
    dir=.
else
    dir=$1
fi
#Substitute scripts
cat > .edit.sed <<- EOF
s/\b_GLIBCXX_BEGIN_NAMESPACE\b\s*\(\s*(\w+)\s*\)/namespace \1{/g
s/_GLIBCXX_BEGIN_NESTED_NAMESPACE\s*\(\s*std\s*,\s*_GLIBCXX_STD_[DP]\s*\)/namespace std{/g
s/\b_GLIBCXX_END_NAMESPACE\b/}/g
s/\b_GLIBCXX_END_(NESTED_\?NAMESPACE\b/}/g
EOF
count=0
cols=`tput cols`
cols=`echo "$cols - 8"|bc`
for file in `find $dir -type f`;do
    if [ "T"$file != "T"$0 ];then
        sed -nf ".edit.sed" $file
        count=`echo "$count+1"|bc`
        echo -ne "="
        if [ `echo "$count%$cols"|bc` -eq 0 ];then
            echo " $count"
        fi
    fi
done
echo "Processed $count files!"
rm -fr .edit.sed
# Generate ctag file
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q 
echo "generated tag file!"
    • 鍐嶇敓鎴恡ag錛?/li>
skyscribe@skyscribe:~/libstdc++/gcc4.4$ ./generate_sed.sh . 
==================================================================================================== 100
==================================================================================================== 200
==================================================================================================== 300
==================================================================================================== 400
==================================================================================================== 500
==================================================================================================== 600
===============================================================Processed 663 files!
generated tag file!
ls tags -lh

-rw-r--r-- 1 skyscribe skyscribe 4.2M 2010-01-10 18:21 tags

cp tags ~/.vim/tagfiles/gcc4.4/

 

  • 鍒拌繖閲屾晥鏋滅粓浜庡嚭鏉ヤ簡錛?/h1>

涓婅竟鐨剅eview紿楀彛鏄劇ず褰撳墠璋冪敤鐨勫嚱鏁頒俊鎭?杈撳叆./->/:: 鐨勬椂鍊欎細鑷姩鎻愮ず錛屼篃鍙互鐢–TRL+X CTRL+O 鏉ヨ皟鍑烘彁紺虹獥鍙o紝鏂瑰悜閿垯鍙互閫夋嫨銆?/p>

omni_comp

vec_insert

vec_insert_sel

 

 

 
 
 
 
 


skyscribe 2010-01-10 18:28 鍙戣〃璇勮
]]>
cmake鐨勪竴浜涘皬緇忛獙http://m.shnenglu.com/skyscribe/archive/2009/12/14/103208.htmlskyscribeskyscribeMon, 14 Dec 2009 12:39:00 GMThttp://m.shnenglu.com/skyscribe/archive/2009/12/14/103208.htmlhttp://m.shnenglu.com/skyscribe/comments/103208.htmlhttp://m.shnenglu.com/skyscribe/archive/2009/12/14/103208.html#Feedback1http://m.shnenglu.com/skyscribe/comments/commentRss/103208.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/103208.html鍒濈敤CMake鎴栬呭鍏朵簡瑙d笉澶繁鐨勪漢錛屽彲鑳界粡甯鎬細琚礬寰勫寘鍚佸簱鎼滅儲璺緞銆侀摼鎺ヨ礬寰勩丷Path榪欎簺闂鎵緇婂掞紝鍥犱負榪欎簺涓滆タ鍦ㄦ墜宸ユ墽琛実cc鎴栬呯紪鍐檓akefile鐨勬椂鍊欐槸寰堣交鑰屾槗涓劇殑浠誨姟銆?/font>

鍏跺疄鎴戝綋鍒濅篃鏈変笉灝戠枒鎯戯紝涓嶈繃閫氳繃杈冮暱鏃墮棿鐨勫疄璺靛拰闃呰manual錛屾葷畻鏈変簡涓浉瀵瑰緢娓呮櫚鐨勮璇嗐?/font>

  • 濡備綍浣跨敤鍏秏anual

cmake鐨勫府鍔╃粍緇囩殑榪樻槸寰堟湁瑙勫緥鐨勶紝浜嗚В浜嗗叾瑙勫緥錛屾壘鑷繁鎯寵鐨勪笢瑗垮氨浼氬緢綆鍗曪紝鎵浠ヤ釜浜鴻寰楄繖涓鐐瑰彲鑳芥槸鏈閲嶈鐨勩傚叾help緋葷粺澶ф鏄繖涔堝嚑綾伙細

    • command

榪欎釜鏄疄鐢ㄨ繃紼嬩腑鏈闀跨敤鍒扮殑錛岀浉褰撲簬涓鑸剼姝ヨ璦涓殑鍩烘湰璇硶錛屽寘鎷畾涔夊彉閲忥紝foreach錛宻tring錛宨f錛宐uiltin command閮藉湪榪欓噷銆?/font>

鍙互鐢ㄥ涓嬭繖浜涘懡浠よ幏鍙栧府鍔╋細

cmake --help-commands

榪欎釜鍛戒護灝嗙粰鍑烘墍鏈塩make鍐呯疆鐨勫懡浠ょ殑璇︾粏甯姪錛屼竴鑸笉鐭ラ亾鑷繁瑕佹壘浠涔堟垨鑰呮兂闅忔満緲葷炕寰楁椂鍊欙紝鍙互鐢ㄨ繖涓?/p>

鎴戜竴鑸洿甯哥敤鐨勬柟娉曟槸灝嗗叾閲嶅畾鍚戝埌less閲岃竟錛岀劧鍚庡湪緙栬緫鍣ㄩ噷杈規悳绱㈠叧閿瓧銆?/p>

 

鍙﹀涔熷彲浠ョ敤濡備笅鐨勫姙娉曞眰灞傜緝灝忔悳绱㈣寖鍥達細

cmake --help-command-list

cmake --help-command-list | grep find

skyscribe@skyscribe:~/program/ltesim/bld$ cmake --help-command-list | grep find
find_file
find_library
find_package
find_path
find_program

cmake --help-command find_library

cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem

  find_library
       Find a library.

          find_library(<VAR> name1 [path1 path2 ...])

       This is the short-hand signature for the command that is sufficient in
       many cases.  It is the same as find_library(<VAR> name1 [PATHS path1
       path2 ...])

          find_library(
                    <VAR>
                    name | NAMES name1 [name2 ...]
                    [HINTS path1 [path2 ... ENV var]]
                    [PATHS path1 [path2 ... ENV var]]
                    [PATH_SUFFIXES suffix1 [suffix2 ...]]
                    [DOC "cache documentation string"]
                    [NO_DEFAULT_PATH]
                    [NO_CMAKE_ENVIRONMENT_PATH]
                    [NO_CMAKE_PATH]
                    [NO_SYSTEM_ENVIRONMENT_PATH]
                    [NO_CMAKE_SYSTEM_PATH]
                    [CMAKE_FIND_ROOT_PATH_BOTH |
                     ONLY_CMAKE_FIND_ROOT_PATH |
                     NO_CMAKE_FIND_ROOT_PATH]
                   )

    • variable

鍜宑ommand鐨勫府鍔╂瘮杈冪被浼鹼紝鍙笉榪囪繖閲屽彲浠ユ煡鎵綾make鑷繁瀹氫箟浜嗛偅浜涘彉閲忎綘鍙互鐩存帴浣跨敤錛岃濡侽SName錛屾槸鍚︽槸Windows錛孶nix絳夈?/font>

鎴戞渶甯哥敤鐨勪竴涓緥瀛愶細

cmake --help-variable-list  | grep CMAKE | grep HOST
CMAKE_HOST_APPLE
CMAKE_HOST_SYSTEM
CMAKE_HOST_SYSTEM_NAME
CMAKE_HOST_SYSTEM_PROCESSOR
CMAKE_HOST_SYSTEM_VERSION
CMAKE_HOST_UNIX
CMAKE_HOST_WIN32

榪欓噷鏌ユ壘鎵鏈塁Make鑷繁瀹氫箟鐨刡uiltin鍙橀噺錛涗竴鑸拰緋葷粺騫沖彴鐩稿叧銆?/p>

濡傛灉甯屾湜灝嗘墍鏈夌敓鎴愮殑鍙墽琛屾枃浠躲佸簱鏀懼湪鍚屼竴鐨勭洰褰曚笅錛屽彲浠ュ姝ゅ仛錛?/p>

榪欓噷鐨則arget_dir鏄竴涓疄鐜拌緗ソ鐨勭粷瀵硅礬寰勩傦紙CMake閲岃竟緇濆璺緞姣旂浉瀵硅礬寰勬洿灝戝嚭闂錛屽鏋滃彲鑳藉敖閲忕敤緇濆璺緞錛?/p>

# Targets directory
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${target_dir}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${target_dir}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${target_dir}/bin)
    • property

Property涓鑸緢灝戦渶瑕佺洿鎺ユ敼鍔紝闄ら潪浣犳兂淇敼涓浜涢粯璁ょ殑琛屼負錛岃濡備慨鏀圭敓鎴愮殑鍔ㄦ佸簱鏂囦歡鐨剆oname絳夈?/font>

璀闇瑕佸湪鍚屼竴涓洰褰曚笅鏃㈢敓鎴愬姩鎬佸簱錛屼篃鐢熸垚闈欐佸簱錛岄偅涔堥粯璁ょ殑鎯呭喌涓嬶紝cmake鏍規嵁浣犳彁渚涚殑target鍚嶅瓧鑷姩鐢熸垚綾諱技鐨刲ibtarget.so, libtarget.a錛屼絾鏄悓涓涓猵roject鍙兘鍚屾椂鏈変竴涓紝鍥犱負target蹇呴』鍞竴銆?/font>

榪欐椂鍊欙紝灝卞彲浠ラ氳繃淇敼taget瀵瑰簲鐨勬枃浠跺悕錛屼粠鑰岃揪鍒版棦鐢熸垚鍔ㄦ佸簱涔熶駭鐢熼潤鎬佸簱鐨勭洰鐨勩?/font>

璀錛?/font>

cmake --help-property-list | grep NAME
GENERATOR_FILE_NAME
IMPORTED_SONAME
IMPORTED_SONAME_<CONFIG>
INSTALL_NAME_DIR
OUTPUT_NAME
VS_SCC_PROJECTNAME
skyscribe@skyscribe:~$ cmake --help-property OUTPUT_NAME
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  OUTPUT_NAME
       Sets the real name of a target when it is built.
       Sets the real name of a target when it is built and can be used to
       help create two targets of the same name even though CMake requires
       unique logical target names.  There is also a <CONFIG>_OUTPUT_NAME
       that can set the output name on a per-configuration basis.
    • module

鐢ㄤ簬鏌ユ壘甯哥敤鐨勬ā鍧楋紝璀boost錛宐zip2, python絳夈傞氳繃綆鍗曠殑include鍛戒護鍖呭惈棰勫畾涔夌殑妯″潡錛屽氨鍙互寰楀埌涓浜涙ā鍧楁墽琛屽悗瀹氫箟濂界殑鍙橀噺錛岄潪甯告柟渚褲?/font>

璀甯哥敤鐨刡oost搴擄紝鍙互閫氳繃濡備笅鏂瑰紡錛?/font>

# Find boost 1.40
INCLUDE(FindBoost)
find_package(Boost 1.40.0 COMPONENTS thread unit_test_framework)
if(NOT Boost_FOUND)
    message(STATUS "BOOST not found, test will not succeed!")
endif()
涓鑸紑澶撮儴鍒嗙殑瑙i噴閮界浉褰撴湁鐢紝鍙弧瓚?0%闇姹傦細
cmake --help-module FindBoost | head -40
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  FindBoost
       Try to find Boost include dirs and libraries
       Usage of this module as follows:
       == Using Header-Only libraries from within Boost: ==
          find_package( Boost 1.36.0 )
          if(Boost_FOUND)
             include_directories(${Boost_INCLUDE_DIRS})
             add_executable(foo foo.cc)
          endif()
       
       
       == Using actual libraries from within Boost: ==
          set(Boost_USE_STATIC_LIBS   ON)
          set(Boost_USE_MULTITHREADED ON)
          find_package( Boost 1.36.0 COMPONENTS date_time filesystem system ... )
       
          if(Boost_FOUND)
             include_directories(${Boost_INCLUDE_DIRS})
             add_executable(foo foo.cc)
             target_link_libraries(foo ${Boost_LIBRARIES})
          endif()
       
       
       The components list needs to contain actual names of boost libraries
  • 濡備綍鏍規嵁鍏剁敓鎴愮殑涓棿鏂囦歡鏌ョ湅涓浜涘叧閿俊鎭?/strong>

CMake鐩告瘮杈冧簬autotools鐨勪竴涓紭鍔垮氨鍦ㄤ簬鍏剁敓鎴愮殑涓棿鏂囦歡緇勭粐鐨勫緢鏈夊簭錛屽茍涓旀竻鏅版槗鎳傦紝涓嶅儚autotools浼氱敓鎴愬ぉ涔︿竴鏍風殑搴炵劧澶х墿錛?0000+鐨勪笉椴滆錛夈?/p>

涓鑸珻Make瀵瑰簲鐨凪akefile閮芥槸鏈夊眰綰х粨鏋勭殑錛屽茍涓斾細鏍規嵁浣犵殑CMakeLists.txt闂寸殑鐩稿緇撴瀯鍦╞inary directory閲岃竟鐢熸垚鐩稿簲鐨勭洰褰曠粨鏋勩?/p>

璀瀵逛簬鏌愪竴涓猼arget錛屼竴鑸琤inary tree涓嬪彲浠ユ壘鍒頒竴涓枃浠跺す:  CMakeFiles/<targentName>.dir/,姣斿錛?/p>

skyscribe@skyscribe:~/program/ltesim/bld/dev/simcluster/CMakeFiles/SIMCLUSTER.dir$ ls -l
total 84
-rw-r--r-- 1 skyscribe skyscribe 52533 2009-12-12 12:20 build.make
-rw-r--r-- 1 skyscribe skyscribe  1190 2009-12-12 12:20 cmake_clean.cmake
-rw-r--r-- 1 skyscribe skyscribe  4519 2009-12-12 12:20 DependInfo.cmake
-rw-r--r-- 1 skyscribe skyscribe    94 2009-12-12 12:20 depend.make
-rw-r--r-- 1 skyscribe skyscribe   573 2009-12-12 12:20 flags.make
-rw-r--r-- 1 skyscribe skyscribe  1310 2009-12-12 12:20 link.txt
-rw-r--r-- 1 skyscribe skyscribe   406 2009-12-12 12:20 progress.make
drwxr-xr-x 2 skyscribe skyscribe  4096 2009-12-12 12:20 src
榪欓噷錛屾瘡涓涓枃浠墮兘鏄釜寰堢煭灝忕殑鏂囨湰鏂囦歡錛屽唴瀹圭浉褰撴竻鏅版槑浜嗐俠uild.make涓鑸寘鍚腑闂寸敓鎴愭枃浠剁殑渚濊禆瑙勫垯錛孌ependInfo.cmake涓鑸寘鍚簮浠g爜鏂囦歡鑷韓鐨勪緷璧栬鍒欍?/pre>
姣旇緝閲嶈鐨勬槸flags.make鍜宭ink.txt錛屽墠鑰呬竴鑸寘鍚簡綾諱技浜嶨CC鐨?I鐨勭浉鍏充俊鎭紝濡傛悳绱㈣礬寰勶紝瀹忓畾涔夌瓑錛涘悗鑰呭垯鍖呭惈浜嗘渶緇堢敓鎴恡arget鏃跺欑殑linkage淇℃伅錛屽簱鎼滅儲璺緞絳夈?/pre>
榪欎簺淇℃伅鍦ㄥ嚭鐜伴棶棰樼殑鏃跺欐槸涓緢濂界殑杈呭姪璋冭瘯鎵嬫銆?/pre>
  • 鏂囦歡鏌ユ壘銆佽礬寰勭浉鍏?/strong>
    • include

涓鑸父鐢ㄧ殑鏄細

include_directories錛堬級鐢ㄤ簬娣誨姞澶存枃浠剁殑鍖呭惈鎼滅儲璺緞
cmake --help-command include_directories
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  include_directories
       Add include directories to the build.
         include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
       Add the given directories to those searched by the compiler for
       include files.  By default the directories are appended onto the
       current list of directories.  This default behavior can be changed by
       setting CMAKE_include_directories_BEFORE to ON.  By using BEFORE or
       AFTER you can select between appending and prepending, independent
       from the default.  If the SYSTEM option is given the compiler will be
       told that the directories are meant as system include directories on
       some platforms.
link_directories()鐢ㄤ簬娣誨姞鏌ユ壘搴撴枃浠剁殑鎼滅儲璺緞
cmake --help-command link_directories
cmake version 2.6-patch 4
------------------------------------------------------------------------------
SingleItem
  link_directories
       Specify directories in which the linker will look for libraries.
         link_directories(directory1 directory2 ...)
       Specify the paths in which the linker should search for libraries.
       The command will apply only to targets created after it is called.
       For historical reasons, relative paths given to this command are
       passed to the linker unchanged (unlike many CMake commands which
       interpret them relative to the current source directory).
    • library search

涓鑸閮ㄥ簱鐨刲ink鏂瑰紡鍙互閫氳繃涓ょ鏂規硶鏉ュ仛錛屼竴縐嶆槸鏄劇ず娣誨姞璺緞錛岄噰鐢╨ink_directories()錛?涓縐嶆槸閫氳繃find_library()鍘繪煡鎵懼搴旂殑搴撶殑緇濆璺緞銆?/p>

鍚庝竴縐嶆柟娉曟槸鏇村ソ鐨勶紝鍥犱負瀹冨彲浠ュ噺灝戜笉灝戞綔鍦ㄧ殑鍐茬獊銆?/p>

        涓鑸琭ind_library浼氭牴鎹竴浜涢粯璁よ鍒欐潵鎼滅儲鏂囦歡錛屽鏋滄壘鍒幫紝灝嗕細set浼犲叆鐨勭涓涓彉閲忓弬鏁般佸惁鍒欙紝瀵瑰簲鐨勫弬鏁頒笉琚畾涔夛紝騫朵笖鏈変竴涓獂xx-NOTFOUND琚畾涔夛紱鍙互閫氳繃榪欑鏂瑰紡鏉ヨ皟璇曞簱鎼滅儲鏄惁鎴愬姛銆?/p>

        瀵逛簬搴撴枃浠剁殑鍚嶅瓧鑰岃█錛屽姩鎬佸簱鎼滅儲鐨勬椂鍊欎細鑷姩鎼滅儲libxxx.so (xxx.dll),闈欐佸簱鍒欐槸libxxx.a錛坸xx.lib錛夛紝瀵逛簬鍔ㄦ佸簱鍜岄潤鎬佸簱娣風敤鐨勬儏鍐碉紝鍙兘浼氬嚭鐜頒竴浜涙販涔憋紝闇瑕佹牸澶栧皬蹇冿紱涓鑸敖閲忓仛鍖歸厤榪炴帴銆?/p>

    • rpath

鎵璋撶殑rpath鏄拰鍔ㄦ佸簱鐨勫姞杞借繍琛岀浉鍏崇殑銆傛垜涓鑸噰鐢ㄥ涓嬬殑鏂瑰紡鍙栦唬榛樿娣誨姞鐨剅path錛?/p>

# RPATH and library search setting
SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) 
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/nesim/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

 



skyscribe 2009-12-14 20:39 鍙戣〃璇勮
]]>
pipeline浼氬惎鍔ㄥ灝戜釜榪涚▼錛?/title><link>http://m.shnenglu.com/skyscribe/archive/2009/12/14/103205.html</link><dc:creator>skyscribe</dc:creator><author>skyscribe</author><pubDate>Mon, 14 Dec 2009 11:46:00 GMT</pubDate><guid>http://m.shnenglu.com/skyscribe/archive/2009/12/14/103205.html</guid><wfw:comment>http://m.shnenglu.com/skyscribe/comments/103205.html</wfw:comment><comments>http://m.shnenglu.com/skyscribe/archive/2009/12/14/103205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/skyscribe/comments/commentRss/103205.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/skyscribe/services/trackbacks/103205.html</trackback:ping><description><![CDATA[<p>鏈榪戝湪TL鐨?a >璁ㄨ涓?/a>蹇界劧鏈変漢鎸戣搗浜唒erl鍜宲ython錛堜竴鍦哄叧浜巆++鐨勮璁烘壇鍒拌剼姝ヤ笂榪樻湁涓嶅皯鐨勭鎾烇紝鍊掓槸鎸烘湁鎰忔濓級錛屾垜鍒欐湁鎰熻屽彂鐨勬兂璧蜂簡鍓嶅嚑澶╅潰璇曠殑鏃跺欓棶鍒漢鐨勪竴涓熀鏈殑shell闂錛?/p> <blockquote><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"><p><font size="4">cat xxx.txt | grep "<span style="color: #8b0000">yyy</span>" | wc 鈥搇</font></p></pre></pre></blockquote> <p>闂鏄繖涓父瑙佺殑pipeline鎿嶄綔涓鑸渶灝戜細璧峰灝戜釜榪涚▼錛熺粨鏋滈偅浣嶈佸厔鍊掓槸鎰d簡鍗婂ぉ鐒跺悗鐩棤琛ㄦ儏銆?/p> <p>鎴戝彧濂界戶緇敔鍙ㄧ殑瑙i噴浜嗕竴涓嬩竴鑸琾ipe鐨勬搷浣滈渶瑕佽鍙栦竴涓繘紼嬬殑杈撳叆錛岀劧鍚庡皢杈撳嚭閫佺粰涓嬩竴涓繘紼嬶紱鍏跺疄鎴戝笇鏈涘鏂瑰共鑴嗗埄钀界殑鍥炵瓟鏄湁3涓紝榪欎釜闂灝辯畻鏄彲浠ヤ簡錛涙垜浠富瑕佷笉鏄敤鑴氭湰寮鍙戯紝浣嗘槸濡傛灉鏈夎繖涓妧鑳芥槸鑳藉緱鍒伴澶栫殑璁ゅ彲鐨勩?/p> <p> </p> <p>TL涓婄殑澶ц櫨浠灉鐒舵槸鎯蟲硶浼楀錛岀珛椹湁浜虹珯鍑烘潵闂細鎴戞兂鐭ラ亾絳旀鏄嚑涓紵鐩存帴璁╂垜鎬鐤戞槸涓嶆槸鎴戠殑鑴戣鏈夐棶棰樸傚悗鏉ユ湁浜虹粰鍑轟簡鍙兘鏄?涓殑鎯呭艦錛?/p> <p>      鏌愪釜鍙樻佺殑shell鍙兘鍐呯疆浜哻at,浣垮叾鎴愪負涓涓猙uiltin錛岀劧鍚庤嚜宸辮秺淇庝唬搴栫殑璇誨彇鏍囧噯杈撳叆錛屽茍涓斿皢鍐呭鏂囨湰杈撳嚭錛岄偅涔堣繘紼嬪氨灝戜竴涓?/p> <p>璧峰垵鎴戣寰楄繖涓В閲婂茍涓嶈兘鎴愮珛錛屼絾鏄粡榪囧嚑涓佸ぇ鐨勮В閲婅繕鏄槑鐧戒簡浠栨墍璇寸殑鎯呭喌鏄痵hell鐨刡uiltin銆?/p> <p> </p> <p>涓棿鍙堣璁鴻搗閭d簺鍙兘鏄痓uiltin鐨刢ommand錛屼婦鍑虹殑渚嬪瓙鏄痗d/kill/time錛屼絾鏄垜鏌ヤ簡涓涓婼olaris涓婄殑錛屽悗涓や釜閮芥槸executable錛宑d鎵懼埌涓涓?usr/bin/cd 鐨刱sh錛屽唴瀹瑰涓嬶細</p><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">#!/bin/ksh </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"></pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">command = `basename $0` </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">$command $@</pre></pre><pre>榪欎釜緇撴灉鏈潵榪樻槸鎸哄嚭涔庢垜鐨勬剰鏂欑殑錛屼簬鏄垜涔熸兂褰撶劧鐨勮涓猴紝shell閲岃竟涓嶈兘鐩存帴璋冪敤syscall錛?/pre><pre>寰堝揩灝卞緱璇佽繖涓彛嫻嬬函綺規槸閿欒鐨勶紱浠ュ墠榪樼湡娌℃兂榪囪繖涓棶棰橈紝鏌ヤ簡涓媤ikipedia銆乬oogle涔嬪悗寰楀埌寰堝鎰忔枡涔嬪鐨勬敹鑾楓?/pre><pre> </pre><pre>鏈鍚庡眳鐒舵湁浜烘惉鍑轟簡busybox榪欎釜澶ф棗錛堝仛榪囧祵鍏ュ紡鐨勫ぇ澶氶兘鐭ラ亾浜涳級錛屽茍澹扮О瀹冩妸vi涔焍uiltin浜嗐?/pre><pre>榪欎笅涔熷緢鍑轟箮鎴戠殑鎰忔枡錛屼笉欏炬垜娌℃湁浠旂粏鐮旂┒榪囷紝娌℃湁浠涔堝彂璦鏉冦?/pre><pre>涓嶈繃鏈鍚庢湁浜虹珯鍑烘潵璇達紝busybox騫舵病鏈夊唴緗繖浜涙兂褰撶劧鐨剉i錛岃屾槸澶ч儴鍒嗕篃鍗曠嫭璧瘋繘紼嬩簡錛涘湪Unix鐨勫摬瀛﹂噷杈癸紝鍋氳繖浜涘ぇ鑰屽叏鐨勪笢瑗垮叾瀹炴槸涓嶈榧撳姳鐨勶紝鍥犱負瀹冭繚鍙島nix鐨勫摬瀛︺?/pre><pre> </pre><pre>璇濊鍥炴潵錛岄潰璇曠殑鏃跺欙紝鎴戜箣鎵浠ヤ細闂埌榪欐牱鐨勯棶棰橈紝涔熸槸鏈夊緢鐪熷疄鐨刡ackground鐨勩傛浘緇忔垜浠煡榪囩殑涓涓緢璇″紓鐨刾erformance bottleneck灝辨槸鐢變簬shell鑴氭鐨勯棶棰樺紩璧風殑銆?/pre><pre>====================================================================================================</pre><pre>闂鏈韓涔熸槸姣旇緝鐩磋鐨勶紙褰撶劧鏄滀簨鍚庤钁涒濅簡錛夛細</pre><pre> 鏌愭紼嬪簭鐨勫惎鍔ㄨ剼鏈嬌鐢ㄥ涓嬬殑涓滀笢鏉ユ嫻嬬幆澧冿細</pre><pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">exists=`netstat -rn | grep "<span style="color: #8b0000">xx.xx.xx.xx</span>" | wc -l` </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"><span style="color: #0000ff">if</span> [ $exists -eq 0 ];then </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> idx=`ifconfig -an | grep bge0 | awk -F"<span style="color: #8b0000">:</span>" '{print $2}' | uniq | sort | tail`"<span style="color: #8b0000"> </span></pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> ifconfig bge0:`echo $idx + 1 | bc` plumb up </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> ifconfig bge0:`echo $idx + 1 | bc` xx.xx.xx.xx netmask 255.255.255.0 </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff">fi </pre><pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"> </pre></pre> <p>褰撴湁寰堝涓悓鏍風殑榪涚▼錛?gt;500)鎭板ソ浜庡悓涓鏃跺埢璺戝埌榪欎釜鍒濆鍖栫偣鐨勬椂鍊欙紝濡傛灉緋葷粺涓婂凡緇忓瓨鍦ㄧ殑IP鍦板潃寰堝錛堝綋鏃剁殑鍦烘櫙澶ф鏈?000+錛夛紝閭d箞netstat銆乮fconfig鏈韓閮藉彉寰楅潪甯歌楁椂錛屽姞涓婂涓繘紼嬬殑鍘熷洜錛岀郴緇熶腑浼氭湁N澶氫釜榪涚▼鍦ㄦ秷鑰楃潃璧勬簮錛?/p> <p>鍚庢灉鐨勪弗閲嶇▼搴︽槸浠諱綍shell閮藉仠姝㈠搷搴旓紝鏁板崄鍒嗛挓閮介櫡鍏ュ亣姝伙紝涓嶅緱涓嶉噸鍚數婧愪簡浜嬨?/p> <p>褰撶劧鐨勫垎鏋愮粨鏋滃彂鐜幫紝鐪熸鍗犵敤鐨凜PU閮芥槸澶勪簬kernel鐘舵佺殑錛屽茍涓斾嬌鐢ㄧ巼瓚呰繃99%錛岄暱闀跨殑pipeline甯︽潵鐨勫紑閿錛岀浉褰撲竴閮ㄥ垎鍙兘鏉ユ簮浜庝簰鐩哥瓑寰匔PU鐨勮繘紼嬬殑浜掔浉鎶㈠崰銆?/p> <p>瑙e喅鐨勬柟娉曡嚜鐒朵篃寰堢畝鍗曪紝榪欓噷涓嶈禈榪頒簡銆?/p> <p>=========================================================================</p> <p>褰撴椂浠ヤ負瀵硅繖涓棶棰樻悶寰楃畻鏄瘮杈冩槑鐧戒簡錛岀粨鏋滄嬁鍑烘潵涓璁ㄨ錛屽彂鐜拌嚜宸變笉浜嗚В鐨勮繕鐪熶笉灝戙?/p><img src ="http://m.shnenglu.com/skyscribe/aggbug/103205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/skyscribe/" target="_blank">skyscribe</a> 2009-12-14 19:46 <a href="http://m.shnenglu.com/skyscribe/archive/2009/12/14/103205.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Popen涓鎬殑OSError錛歵oo many open fileshttp://m.shnenglu.com/skyscribe/archive/2009/10/19/98970.htmlskyscribeskyscribeMon, 19 Oct 2009 11:31:00 GMThttp://m.shnenglu.com/skyscribe/archive/2009/10/19/98970.htmlhttp://m.shnenglu.com/skyscribe/comments/98970.htmlhttp://m.shnenglu.com/skyscribe/archive/2009/10/19/98970.html#Feedback0http://m.shnenglu.com/skyscribe/comments/commentRss/98970.htmlhttp://m.shnenglu.com/skyscribe/services/trackbacks/98970.html榪戞潵鐢≒ython鐨剈nittest妗嗘灦鏉ュ仛涓涓猺egression test 宸ュ叿錛岄獙璇佷竴浜涘鏉傜殑紼嬪簭鍔熻兘錛屾湡鏈涘仛鍒拌嚜鍔ㄥ寲嫻嬭瘯瀹屾垚涓閮ㄥ垎闇瑕佺箒鐞愮殑鐣岄潰鐐瑰嚮鍜岀瓑寰呮墠鑳藉畬鎴愮殑楠岃瘉宸ヤ綔銆?/font>

鍏朵腑鏍稿績鐨勯儴鍒嗘槸閫氳繃python鐨剆ubproces module涓殑Popen鏉ヨ皟鐢╯hell鑴氭瀹屾垚鍔熻兘鎬ц姹傦紝騫舵姄鍙栨墽琛岀殑緇撴灉銆?/font>

 

鍒濅竴寮濮嬶紝test case姣旇緝灝戠殑鏃跺欙紙100涓互鍐咃級閮芥病鏈変換浣曢棶棰橈紱浣嗕粠鏌愪竴鍒昏搗錛屽綋瓚呰繃120涓殑鏃跺欙紝鏈鍚庝竴涓猼est case鎵ц鐨勬椂鍊欙紝鎬繪槸鎶ュ憡

                OSError錛?too many open files

緇欏嚭鐨剆tack trace鎸囧悜浜哖open鐨刢ommunicate鏂規硶銆?/font>

 

鏈綆鍗曠殑鎬鐤戣嚜鐒舵槸鎵撳紑鏂囦歡鏁扮殑闄愬埗浜嗭紝 ulimit  -a 鍙戠幇榛樿鐨凷hell鐨勭‘鍙湁256錛岃櫧鐒舵劅瑙夊簲璇ヤ篃澶熺敤浜嗭紙鍥犱負姣忎竴涓猚ase閮芥槸鐢ㄥ崟鐙殑Popen鏉ユ墽琛屾搷浣?瀹屾瘯灝卞簲璇ヨ鍥炴敹浜嗭級錛屼絾榪樻槸鑷劧灝嗗叾寮澶т竴浜涳紱

                      ulimit –n 1024

閲嶆柊鎵ц錛岃繕鏄渶鍚庝竴涓猚ase澶辮觸錛岄敊璇緷鐒躲?/font>

 

Google浜嗕竴涓嬶紝鏆傛椂娌℃湁澶寸華錛屽彧鏈夊緟鏈夋椂闂村啀璇︾粏鐩樻煡涓涓嬪師濮斾簡銆備笉榪囧湪鎼滅儲絳旀鐨勮繃紼嬩腑鍙戠幇浜嗕竴涓湁鎰忔濈殑鐜拌薄錛?/font>

   鏈変漢鍦ㄨ闂庢牱灝唒ython鐨勫瓧絎︿覆quote鎴愪負涓涓彲浠ュ啀shell涓畨鍏ㄤ嬌鐢ㄧ殑瀛楃涓詫紝灝辨湁浜哄洖澶嶈Subprocess涓湁涓涓被浼肩殑鏂規硶鍙互瀹屾垚綾諱技鐨勫伐浣滀負浠涔堜笉鐢紱椹笂鏈夌墰浜虹珯鍑烘潵璇達紝榪欎釜妯″潡鐨勪綔鑰呭ぇ姒備笉鎯崇淮鎶よ繃澶氱殑涓滆タ錛屽洜鑰屽皢鍏墮殣钘忎簡璧鋒潵錛岃屼笉鏄斁寮浜嗙粰澶у鐢紝鍥犱負瀹冪殑doc閲岃竟閮芥病鏈夌洿鎺ヨ鏄庯紝鐢ㄧ殑浜烘槸鐪嬩簡浠栫殑浠g爜鎵嶇煡閬撴湁榪欎釜鍑芥暟錛堝弬鑰?/font>榪欓噷錛?/font>



skyscribe 2009-10-19 19:31 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美成人在线免费观看| 老鸭窝91久久精品色噜噜导演| 欧美一区=区| 亚洲欧洲综合另类在线| 在线不卡视频| 亚洲第一伊人| 亚洲国产黄色片| 亚洲精品欧美| 亚洲午夜一区二区| 久久国产一区二区三区| 欧美不卡视频一区| 一二三区精品福利视频| 亚洲中午字幕| 久热这里只精品99re8久| 欧美大片在线看| 国产精品久久久久久久久久尿 | 夜夜嗨av一区二区三区网页| 99国产成+人+综合+亚洲欧美| 亚洲午夜视频在线| 久久米奇亚洲| 亚洲人成网站色ww在线| 亚洲人体1000| 欧美诱惑福利视频| 欧美大片一区| 国产一区二区丝袜高跟鞋图片| 最新国产成人在线观看| 午夜日本精品| 久久香蕉精品| 中文国产亚洲喷潮| 猛男gaygay欧美视频| 欧美午夜片在线观看| 红桃视频亚洲| 午夜精品久久久久久久白皮肤| 免费毛片一区二区三区久久久| 亚洲激情欧美| 久久狠狠一本精品综合网| 欧美精品1区2区| 狠狠色噜噜狠狠色综合久| 亚洲一区二区三区高清| 亚洲电影观看| 久久免费视频在线| 国产欧美高清| 亚洲欧美一级二级三级| 亚洲精品女人| 欧美在线网址| 国产精品久久久久久久久久妞妞 | 国产日本欧美一区二区三区在线| 亚洲国产精品第一区二区| 亚洲欧美在线看| 亚洲精品日产精品乱码不卡| 羞羞视频在线观看欧美| 91久久精品美女高潮| 久久久久国产成人精品亚洲午夜| 99re热这里只有精品视频| 美女图片一区二区| 一区二区三区在线免费播放| 久久精品1区| 亚洲手机成人高清视频| 欧美日本韩国在线| 亚洲美女中出| 亚洲国产一成人久久精品| 狂野欧美性猛交xxxx巴西| 国内成+人亚洲| 久久久www成人免费精品| 亚洲欧美日韩中文播放| 国产日产欧产精品推荐色| 久久成人精品| 欧美在线免费观看视频| 国产啪精品视频| 欧美自拍丝袜亚洲| 性18欧美另类| 亚洲第一天堂无码专区| 另类图片国产| 猛干欧美女孩| 亚洲午夜精品一区二区| 亚洲网友自拍| 国产一区二区三区在线观看免费| 欧美亚洲综合在线| 欧美在线综合| 亚洲黑丝一区二区| 亚洲精品一区久久久久久| 欧美四级在线| 久久精品91久久久久久再现| 欧美一区激情| 亚洲精品亚洲人成人网| 99pao成人国产永久免费视频| 欧美视频在线观看一区二区| 午夜精品网站| 久久九九久精品国产免费直播| 亚洲电影视频在线| 亚洲久久一区二区| 国产日韩欧美综合一区| 欧美国产精品va在线观看| 欧美日韩在线精品| 久久一区精品| 欧美日韩精品免费看| 久久久久国产一区二区| 免费观看国产成人| 午夜精彩视频在线观看不卡| 久久久国际精品| 亚洲午夜激情| 噜噜噜91成人网| 亚洲欧美一区二区视频| 女仆av观看一区| 欧美在线二区| 欧美乱人伦中文字幕在线| 久久久91精品| 国产精品久久久久久久久久三级| 欧美激情精品久久久久久黑人 | 午夜亚洲性色福利视频| 韩国av一区二区| 亚洲成人在线视频播放| 欧美激情综合五月色丁香| 午夜精品久久久久久99热| 欧美77777| 久久久国产91| 国产精品久久久久久久久免费樱桃| 欧美国产一区二区在线观看| 国产日韩综合| 99视频一区二区| 亚洲七七久久综合桃花剧情介绍| 欧美亚洲网站| 欧美一区二区在线| 国产精品久久久久久久久久妞妞 | 在线视频一区观看| 欧美一区二区高清| 亚洲尤物在线| 久久国产精品第一页| 欧美一区综合| 蜜桃av综合| 欧美精品一区二区三区高清aⅴ| 欧美成人精品在线| 国产精品sm| 国产日韩一区二区三区在线播放 | 99视频精品全国免费| 亚洲性图久久| 欧美精彩视频一区二区三区| 亚洲欧美日本国产专区一区| 午夜免费日韩视频| 老色鬼久久亚洲一区二区| 欧美一区二区黄色| 国产精品嫩草影院av蜜臀| 亚洲视频免费| 亚洲欧美精品suv| 欧美亚洲第一区| 一本一道久久综合狠狠老精东影业| 狠久久av成人天堂| 国产日韩精品一区二区| 久久精品国亚洲| 欧美在线精品一区| 国产美女一区| 亚洲综合日韩| 久久精品二区亚洲w码| 国产欧美日韩另类视频免费观看 | 午夜精品久久久久久久| 国产精品免费网站在线观看| 亚洲一区精品电影| 久久精品国产第一区二区三区最新章节| 国产精品二区在线| 香蕉精品999视频一区二区| 久久久久网址| 亚洲区一区二区三区| 欧美日韩国产一中文字不卡| 亚洲视频一二三| 久久午夜色播影院免费高清| 亚洲国产精品成人综合| 欧美日韩免费网站| 午夜电影亚洲| 欧美高清视频一区二区| 一区二区三区四区蜜桃| 国产精品日韩精品| 久久免费的精品国产v∧| 亚洲欧洲日韩在线| 欧美一级播放| 亚洲精品三级| 国产欧美一区二区精品秋霞影院 | 免费亚洲视频| 99re6热在线精品视频播放速度| 欧美一激情一区二区三区| 亚洲第一黄网| 国产乱码精品一区二区三区av| 久久夜色精品国产欧美乱极品| 亚洲欧洲一区二区三区久久| 欧美在线亚洲综合一区| 亚洲国产你懂的| 国产伦精品一区二区三区视频黑人 | 亚洲精品在线视频| 国产日韩亚洲欧美综合| 欧美三级网页| 免费在线视频一区| 欧美诱惑福利视频| 亚洲视频精品在线| 亚洲人成在线播放| 久久亚洲综合色一区二区三区| 国产精品99久久久久久久女警| 在线观看欧美日韩| 国产一区观看| 国产欧美日韩一区| 国产精品美女www爽爽爽| 欧美日韩国产精品一区二区亚洲|