<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>東方算程譚</title><link>http://blogs.wankuma.com/episteme/</link><description>Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。</description><managingEditor>επιστημη</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>επιστημη</dc:creator><title>Visual Studio 2010 Release Candidate</title><link>http://blogs.wankuma.com/episteme/archive/2010/02/09/185914.aspx</link><pubDate>Tue, 09 Feb 2010 11:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/02/09/185914.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/185914.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/02/09/185914.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/185914.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/185914.aspx</trackback:ping><description>&lt;P&gt;でましたよ、Release Candidate。 VS2010の。&lt;/P&gt;
&lt;P&gt;そらもー リリース・&lt;STRONG&gt;キャンディデート&lt;/STRONG&gt; っちゅーくらいなもんだから&lt;BR&gt;砂糖菓子のように甘くそしてはかない夢の一日&lt;STRONG&gt;ちがーう&lt;/STRONG&gt;!&lt;BR&gt;&lt;BR&gt;おかげでアレだ、日英のβ版引っこ抜かんならんわ、&lt;BR&gt;TechDaysの仕込みネタ再検証だわ、飛び込み仕事がどかどかと。&lt;BR&gt;&lt;BR&gt;...て、によによしてる俺ガイル♪&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/185914.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>よいどれコンパス</title><link>http://blogs.wankuma.com/episteme/archive/2010/02/03/185665.aspx</link><pubDate>Wed, 03 Feb 2010 14:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/02/03/185665.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/185665.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/02/03/185665.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/185665.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/185665.aspx</trackback:ping><description>&lt;P&gt;# 「数学Day」前座&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;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PictureBox1.Image = bmp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = PictureBox1.Width / 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y = PictureBox1.Height / 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private bmp As Bitmap&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private x As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private y As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private r As New Random()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles start.Click&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1.Enabled = True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim theta As Double = r.NextDouble() * 2.0 * 3.1416&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = x + 5 * Math.Sin(theta)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y = y + 5 * Math.Cos(theta)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (x &amp;gt; 0 AndAlso x &amp;lt; PictureBox1.Width) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (y &amp;gt;= 0 AndAlso y &amp;lt; PictureBox1.Height) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmp.SetPixel(x, y, Color.Red)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PictureBox1.Image = bmp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2 face="Courier New"&gt;&lt;BR&gt;&lt;FONT size=3&gt;乱数の精度に依存しそうですねー。&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/185665.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>DbC/PbC と NVI</title><link>http://blogs.wankuma.com/episteme/archive/2010/02/02/185640.aspx</link><pubDate>Tue, 02 Feb 2010 11:28:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/02/02/185640.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/185640.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/02/02/185640.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/185640.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/185640.aspx</trackback:ping><description>&lt;P&gt;先週末のわんくま東京勉強会、ひさしぶりに懇親会に出たなり。&lt;/P&gt;
&lt;P&gt;ま、それはそれとして、中さんのセッション: Spec# は面白かたあるよ。&lt;BR&gt;DbC(Design by Contract:契約による設計) / PbC(Programming by Contract:契約プログラミング)&lt;BR&gt;はEiffelやDあたりがサポートしてるんだけど、そいつをC#でもやっちまえって魂胆ね &amp;gt; Spec#&lt;/P&gt;
&lt;P&gt;従来&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;class Base {&lt;BR&gt;&amp;nbsp; public virtual int func(int x) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Debug.Assert(x &amp;gt; 0 &amp;amp;&amp;amp; x &amp;lt; 10); //事前条件: x = 0..9 でなければならない&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int result = ごーにょごにょ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;&lt;STRONG&gt;Debug.Assert(result &amp;gt;= 0); // 事後条件: 0以上を返すことをここに誓う&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;なんてな Assert で利用者が守るべき契約(事前条件) 提供者が守る契約(事後条件) を&lt;BR&gt;コード上に明記しよう。そうすることでより&lt;STRONG&gt;堅牢でバグの少ない&lt;/STRONG&gt;(あっても直ちに判明する)&lt;BR&gt;コードを書こうや、と。&lt;BR&gt;# 不変表明(invariant)ゆーのんもありますがー&lt;BR&gt;&lt;BR&gt;ここで問題となるのが、派生クラスで func をoverrideしちまったとき、&lt;BR&gt;Base::funcに埋め込まれた契約条件がoverride側に適用されんです。&lt;BR&gt;で、こいつの解決策のひとつが&lt;STRONG&gt;NVI&lt;/STRONG&gt;(Non Virtual Interface)ってイディオム。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;「利用者にvirutalなメソッドを晒すなﾎﾞｹｪ」&lt;/STRONG&gt;てことっす。&lt;BR&gt;んじゃどーするかっちゅーと:&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;class Base {&lt;BR&gt;&amp;nbsp; public sealed int func(int x) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Assert(x &amp;gt; 0 &amp;amp;&amp;amp; x &amp;lt; 10); //事前条件: x = 0..9 でなければならない&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int result = &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;do_func&lt;/FONT&gt;&lt;/STRONG&gt;(x);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Assert(result &amp;gt;= 0); // 事後条件: 0以上を返すことをここに誓う&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &lt;FONT color=#ff0000&gt;protected virtual int do_func(int x)&lt;/FONT&gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ごーにょごにょ;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;こーしておく。派生クラスはfuncから呼ばれてる do_func をoverrideするのね。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/185640.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>CodeZineに書きました。</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/26/185460.aspx</link><pubDate>Tue, 26 Jan 2010 21:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/26/185460.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/185460.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/26/185460.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/185460.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/185460.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://codezine.jp/article/detail/4774"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="とある文字列の相互変換" border="0" alt="とある文字列の相互変換" src="http://episteme.wankuma.com/image/blog/CodeZine_13238/logo.png" width="244" height="116"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;C++/CLIでの &lt;br&gt;System::String^ と std::string と std::wstring と&lt;br&gt;const char* と const wchar_t* との間を行ったり来たりする方法。&lt;/p&gt; &lt;p&gt;どぞ、よろしく。&lt;br&gt;※ IBM ICU(International Components for Unicode） も紹介しちょります。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/185460.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>くだらんことやってますのん</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/23/185263.aspx</link><pubDate>Sat, 23 Jan 2010 06:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/23/185263.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/185263.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/23/185263.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/185263.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/185263.aspx</trackback:ping><description>&lt;P&gt;ケッタイなこと頼まれましてね。&lt;BR&gt;えとね、たとえばこんな数枚のWeb-pageがあったとするやないですか。 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://episteme.wankuma.com/image/blog/clip1.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip1 border=0 alt=clip1 src="http://episteme.wankuma.com/image/blog/clip1.jpg" width=194 height=159&gt;&lt;/A&gt; とか&lt;A href="http://episteme.wankuma.com/image/blog/clip2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip2 border=0 alt=clip2 src="http://episteme.wankuma.com/image/blog/clip2.jpg" width=183 height=158&gt;&lt;/A&gt; とか。&lt;/P&gt;
&lt;P&gt;最初のページのURLあげるから、&lt;/P&gt;
&lt;P&gt;「リンクを次々に辿りながらtable内の&amp;lt;td&amp;gt;～&amp;lt;/td&amp;gt;を拾って一本の表を仕立ててくれ」&lt;/P&gt;
&lt;P&gt;ってんですよ。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://episteme.wankuma.com/image/blog/listview.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=listview border=0 alt=listview src="http://episteme.wankuma.com/image/blog/listview.jpg" width=304 height=304&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;こんな感じで。&lt;/P&gt;
&lt;P&gt;つまりこの、HTMLを解析しぃのページ上のリンクをつつきぃの、そゆこと自動でやってくれと。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;んで僕が目を付けたのが selenium てゆー Web-アプリのTestTool.&lt;BR&gt;seleniumはブラウザ上での人の操作を記録し、play-backしてくれます。&lt;/P&gt;
&lt;P&gt;面白いことに、このseleniumを外から(.NETやらJavaやらPHPやらRubyやらで)&lt;/P&gt;
&lt;P&gt;リモコン操作できるんす。&lt;/P&gt;
&lt;P&gt;こいつを使ってページを渡り歩き、seleniumが読みだしたHTMLをパーサで解析してます。&lt;BR&gt;.NET Frameworkには出来合いのHTMLパーサがなさげ(よね?)なので、&lt;BR&gt;「すまんけどXHTMLなページ限定」と念を押してXML-domパーサ使いました。&lt;BR&gt;&amp;#8221;GET&amp;#8221;ボタン押すと↓こんなのが動きます。　40行で書けちゃったですよ。&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ef5e5598-a36c-49fe-bcc6-3c14f44e3643 class=wlWriterSmartContent&gt;
&lt;DIV class="dp-highlighter nogutter"&gt;
&lt;DIV class=bar&gt;&lt;/DIV&gt;
&lt;OL class=dp-c&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN class=keyword&gt;private&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; btnGET_Click(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;object&lt;/SPAN&gt;&lt;SPAN&gt; sender, EventArgs e)&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;{&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; serverURL = &lt;/SPAN&gt;&lt;SPAN class=string&gt;"localhost"&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverPort = 4444;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; targetBrowser = &lt;/SPAN&gt;&lt;SPAN class=string&gt;"*firefox"&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; targetURL = &lt;/SPAN&gt;&lt;SPAN class=string&gt;"http://www1.c3-net.ne.jp/episteme/"&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; Selenium.DefaultSelenium(serverURL, serverPort, targetBrowser, targetURL);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium.Start();&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium.Open(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"/episteme/CodeZine/trial.html"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; ( &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;true&lt;/SPAN&gt;&lt;SPAN&gt; ) {&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder builder = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; StringBuilder(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;lt;?xml version='1.0' ?&amp;gt;"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=comment&gt;// 得られたHTMLから&amp;lt;body&amp;gt;～&amp;lt;/body&amp;gt;を抽出し、&amp;lt;html&amp;gt;～&amp;lt;/html&amp;gt;ではさむ &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; builder.Append(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;lt;html&amp;gt;"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;string&lt;/SPAN&gt;&lt;SPAN&gt; html = selenium.GetHtmlSource();&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; startpos = html.IndexOf(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;lt;body"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; endpos = html.IndexOf(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"/body&amp;gt;"&lt;/SPAN&gt;&lt;SPAN&gt;) + 6;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; builder.Append(html, startpos, endpos - startpos);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; builder.Append(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"&amp;lt;/html&amp;gt;"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=comment&gt;// XHTMLをXMLパーサで解析 &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlDocument document = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; XmlDocument();&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.Load(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; StringReader(builder.ToString()));&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=comment&gt;// &amp;lt;tr&amp;gt;～&amp;lt;/tr&amp;gt; を抽出し、その中の&amp;lt;td&amp;gt;～&amp;lt;/td&amp;gt;で行を構成する &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;foreach&lt;/SPAN&gt;&lt;SPAN&gt; ( XmlNode row &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; document.DocumentElement.GetElementsByTagName(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"tr"&lt;/SPAN&gt;&lt;SPAN&gt;) ) {&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListViewItem item = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;null&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;bool&lt;/SPAN&gt;&lt;SPAN&gt; first = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;foreach&lt;/SPAN&gt;&lt;SPAN&gt; (XmlNode node &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; row.ChildNodes) {&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (node.Name != &lt;/SPAN&gt;&lt;SPAN class=string&gt;"td"&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;break&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (first) item = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt; ListViewItem(node.InnerText)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; item.SubItems.Add(node.InnerText);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; first = &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;false&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; ( item != &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;null&lt;/SPAN&gt;&lt;SPAN&gt; ) lstTable.Items.Add(item);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=comment&gt;// HTML中に"これでおしまい"を見つけたら終了。 &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (selenium.IsTextPresent(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"これでおしまい"&lt;/SPAN&gt;&lt;SPAN&gt;)) &lt;/SPAN&gt;&lt;SPAN class=keyword&gt;break&lt;/SPAN&gt;&lt;SPAN&gt;;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=comment&gt;// さもなくば "こちら"が示すリンクに飛ぶ &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium.Click(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"link=こちら"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium.WaitForPageToLoad(&lt;/SPAN&gt;&lt;SPAN class=string&gt;"30000"&lt;/SPAN&gt;&lt;SPAN&gt;);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selenium.Stop();&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN&gt;}&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/185263.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>よくわかる解説ぅ── アムダールの法則</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/06/184692.aspx</link><pubDate>Wed, 06 Jan 2010 11:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/06/184692.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184692.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/06/184692.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184692.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184692.aspx</trackback:ping><description>ネタ元 → &lt;A id=viewpost.ascx_TitleUrl HREF="/episteme/archive/2010/01/06/184680.aspx"&gt;&lt;FONT color=#0000ff&gt;性能向上は難しい──アムダールの法則&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;アムダールの法則(Amdahl's Law):
&lt;P&gt;　性能向上 &lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;P = 1/(F+(1-F)/N)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;　　F : 並列化できない部分の割合&lt;BR&gt;　　N : コア数&lt;BR&gt;&lt;BR&gt;なぜにこんな式が導き出せるかっちゅーとですね。&lt;BR&gt;処理全体が10個のブロックでできてるとしましょう。&lt;BR&gt;どのブロックも処理時間は同じってことで、&lt;BR&gt;全体の処理時間は↓こんだけ。&lt;BR&gt;&lt;FONT face="Courier New"&gt;□□□□□□□□□□&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;このうちF(たとえば4割)が並列化できない黒ブロックとすると&lt;BR&gt;&lt;FONT face="Courier New"&gt;■■■■□□□□□□&lt;BR&gt;&lt;/FONT&gt;ですね。全体が1なら■の割合がF, □の割合が(1-F)です。&lt;BR&gt;&lt;BR&gt;んでもって□の部分(1-F)をN個のコアで分担します。N=2 なら&lt;BR&gt;&lt;FONT face="Courier New"&gt;■■■■□□□&lt;BR&gt;&amp;nbsp;　　□□□&lt;BR&gt;&lt;/FONT&gt;短くなった分早く終わる、つまり性能向上と。&lt;BR&gt;&lt;BR&gt;この長さは ■部の長さ&amp;nbsp;+ □部の長さ = F + (1-F)/N&lt;BR&gt;性能は処理時間の逆数だから &lt;BR&gt;&lt;FONT size=4 face="Courier New"&gt;P = 1/(F+(1-F)/N)&lt;/FONT&gt; &lt;BR&gt;っちゅーわけっす。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184692.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>性能向上は難しい──アムダールの法則</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/06/184680.aspx</link><pubDate>Wed, 06 Jan 2010 10:17:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/06/184680.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184680.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/06/184680.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184680.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184680.aspx</trackback:ping><description>&lt;P&gt;Core2Duo/Quadとかi7とかPhenomとか、マルチコアCPUがアッタリマエになっちゃいました。&lt;BR&gt;CPUクロックが頭打ちになっちまっただから&lt;STRONG&gt;数で稼ごう&lt;/STRONG&gt;ってわけすね。&lt;BR&gt;水圧上げるのがキツくなればパイプ太くして水量増やすってゆー、わかりやすぅい♪&lt;BR&gt;マルチコアでどんだけ性能上がるんや? の目安に「&lt;STRONG&gt;アムダールの法則&lt;/STRONG&gt;」ちうのがあります。&lt;BR&gt;&lt;BR&gt;アムダールの法則(Amdahl's Law):&lt;/P&gt;
&lt;P&gt;　性能向上 &lt;FONT face="Courier New"&gt;&lt;STRONG&gt;&lt;FONT size=4&gt;P = 1/(F+(1-F)/N)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;　　F : 並列化できない部分の割合&lt;BR&gt;　　N : コア数&lt;BR&gt;&lt;BR&gt;式を変形すると: &lt;FONT size=4 face="Courier New"&gt;&lt;STRONG&gt;P = N/((N-1)F+1)&lt;/STRONG&gt;&lt;/FONT&gt; となります。&lt;BR&gt;・F=0つまりアタマからケツまで並列化できれば P = N となり、&lt;BR&gt;　コアの数だけ速くなる。そらそーだ。&lt;BR&gt;・F=1つまり並列化できる部分がまったくなければ P = 1となり、&lt;BR&gt;　コアをいくら積もうが&lt;STRONG&gt;無駄無駄ムダァ!&lt;/STRONG&gt; と。&lt;BR&gt;&lt;BR&gt;さらに上式をFについて解くと:&lt;FONT face="Courier New"&gt; &lt;STRONG&gt;&lt;FONT size=4&gt;F = (N-P)/((N-1)P)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt; となります。&lt;BR&gt;・dual-core: N =2 とおくと &lt;FONT face="Courier New"&gt;F = (2-P)/P &lt;/FONT&gt;&lt;BR&gt;　スピード5割増を狙うなら &lt;FONT face="Courier New"&gt;F = (2-1.5)/1.5 = 1/3&lt;BR&gt;&lt;/FONT&gt;　全体の7割以上が並列化されないと5割増は期待できんてことになります。&lt;BR&gt;・quad-core:N=4ならば &lt;FONT face="Courier New"&gt;F = (4-P)/3P&lt;/FONT&gt;&lt;BR&gt;　同じく5割増なら &lt;FONT face="Courier New"&gt;F = (4-1.5)/4.5 = 5/9&lt;/FONT&gt;。&lt;BR&gt;　半分くらいは並列化できにゃならんですな。&lt;BR&gt;&lt;BR&gt;んなわけで、並列化できない部分が多いといっくらコア積んでも&lt;BR&gt;効果薄いてゆー&lt;STRONG&gt;アッタリマエの結果&lt;/STRONG&gt;が導かれるわけっす。&lt;BR&gt;&lt;BR&gt;&lt;FONT size=2&gt;性能阻害要因は"並列化できない部分"だけでなく、&lt;BR&gt;メモリアクセス、コア間通信、粒度(スレッドのオーバヘッド)、負荷のバラツキ&lt;BR&gt;なんかがあって、実際のパフォーマンスはさらに悪くなりますです。&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;※ 4月わんくま東京勉強会「数学Day」の伏線か?&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184680.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>毎度ありがとうございます</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/01/184525.aspx</link><pubDate>Fri, 01 Jan 2010 23:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/01/184525.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184525.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/01/184525.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184525.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184525.aspx</trackback:ping><description>&lt;P&gt;&lt;IMG src="http://episteme.wankuma.com/image/mvp.jpg"&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#808080&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;Fukuda Fumiki &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;様&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;おめでとうございます&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;! &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;このたび、&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;2010 Microsoft&amp;#174; MVP &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;アワードを受賞されましたことを、謹んでお知らせ致します。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;MVP&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;アワードは、実用的で質の高い専門知識を他のユーザーとの間で積極的に共有している、優れたテクニカル&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;コミュニティ&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;リーダーに贈られます。過去１年において、&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;Visual C++&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'ＭＳ Ｐゴシック'; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;コミュニティに大いに貢献していただきまして誠にありがとうございます。&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'ＭＳ Ｐゴシック'; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA" lang=EN-US&gt;&lt;FONT color=#808080&gt; &lt;BR style="mso-special-character: line-break"&gt;&lt;/FONT&gt;&lt;BR style="mso-special-character: line-break"&gt;ってなメールが届いたよっと♪&lt;BR&gt;&lt;BR&gt;2004年からなんだかんだと毎年頂いて今年で&lt;STRONG&gt;７年目&lt;/STRONG&gt;となります。&lt;BR&gt;　SQLわからんちん でも &lt;BR&gt;　WPFなにそれおいしいの? でも &lt;BR&gt;　LINQてコンパイル後にかけるアレ? でも&lt;BR&gt;MVP(マじめに ヴぁかやれる プろぐらま)になれるんだよー&lt;BR&gt;&lt;BR&gt;そゆわけで今年も一年、&lt;STRONG&gt;エラソー&lt;/STRONG&gt;な顔してあちこち顔出しますんで、どぞご贔屓に。&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184525.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>今年もよろしくおながいしまつー</title><link>http://blogs.wankuma.com/episteme/archive/2010/01/01/184468.aspx</link><pubDate>Fri, 01 Jan 2010 01:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2010/01/01/184468.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184468.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2010/01/01/184468.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184468.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184468.aspx</trackback:ping><description>&lt;P&gt;さてさて、2010年も残る一年となりましたが皆様いかがお過ごしでしょうか。&lt;BR&gt;&lt;BR&gt;ウチのカミさんね、元旦には洗濯機を回さないの。&lt;BR&gt;「服（福）を流す」のはゲンが悪いとかなんとか。&lt;BR&gt;それって&lt;STRONG&gt;ただのダジャレ&lt;/STRONG&gt;じゃーんとか思いつつ、&lt;BR&gt;「&lt;STRONG&gt;コトバには魂が宿る&lt;/STRONG&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;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184468.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>暮れも押し詰まりましてぇ…</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/30/184428.aspx</link><pubDate>Wed, 30 Dec 2009 18:56:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/30/184428.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184428.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/30/184428.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184428.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184428.aspx</trackback:ping><description>&lt;P&gt;絶賛&lt;STRONG&gt;お引越しちうなう&lt;/STRONG&gt;。 Vista → Windows7（64ｱﾙﾁﾒ） のね。&lt;BR&gt;# おぉ、軽い♪ &lt;/P&gt;
&lt;P&gt;いやー、とにかくめんどっちーのですわ。&lt;BR&gt;ｲﾝｽｺせんならんもんがオニのようにようけあるもんで。&lt;/P&gt;
&lt;P&gt;とりあえずOffice2010β突っ込んで通信経路(ﾒｰﾙ)確保。&lt;BR&gt;その後ﾁｮｰｼぶっこいてVisual Studio 2010β2 押し込んでｱﾚいれてｺﾚいれて。&lt;/P&gt;
&lt;P&gt;んで、ちょっと失敗したポい。&lt;STRONG&gt;VS2008のｲﾝｽｺに失敗&lt;/STRONG&gt;しました。&lt;BR&gt;2010β2を&lt;STRONG&gt;先に押し込んだ&lt;/STRONG&gt;のがいかんかったのかしら...&lt;/P&gt;
&lt;P&gt;Vista残してある(dual-bootっす)からいいっちゃいいんだけど、&lt;BR&gt;行き来するのがめんどっちーので、一旦更地に戻して再ｲﾝｽｺしよっかなー、&lt;BR&gt;&lt;STRONG&gt;引き返すならいまのうち&lt;/STRONG&gt;なのよねー&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184428.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>ウチのネットワーク事情</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/24/184193.aspx</link><pubDate>Thu, 24 Dec 2009 09:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/24/184193.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184193.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/24/184193.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184193.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184193.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=viewpost.ascx_TitleUrl class=singleposttitle HREF="/jitta/archive/2009/12/23/184183.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;うちのゲーム機事情&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;えーと、えぴ家では...&lt;BR&gt;僕の部屋、クローゼットから屋根裏に繋がる穴ポコがあるんでそっから光ケーブルを引き込み、CATV信号に変換して屋内のTV線へ。&lt;BR&gt;同時にCATVの光に相乗りしたcable-modem。そっからずるずるーときしめんみたいな平たいEtherで机横ちょのルータへ。&lt;BR&gt;&lt;BR&gt;ルータのポートから僕のメイン機とﾊｺｻﾌﾞﾛｰ(RRoDなう)、およびﾃﾞﾑﾊﾟLANトランシーバ。&lt;BR&gt;&lt;BR&gt;隣のカミさんとこではポンコツノート(すっげー旧いがWebとmailがありゃぢゅーぶんとのこと)にPCMCIAﾃﾞﾑﾊﾟcard。&lt;BR&gt;&lt;BR&gt;向かいのボーズんとこはXP機に無線のボード、DSwireless-adapter。そしてWii。&lt;BR&gt;&lt;BR&gt;8MbpsのCATV相乗り回線に &lt;BR&gt;Vista/Win7機1, XP機2、Wii1、XBox1、(XP機経由で)DS2の&lt;BR&gt;計7つがぶらさがってますねぇ。&lt;BR&gt;&lt;/P&gt;
&lt;p&gt;[追記] わんくま「事情」祭り開催中なう。みなさま奮って御参加を♪&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184193.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>今年もおせわになりました</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/22/184160.aspx</link><pubDate>Tue, 22 Dec 2009 23:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/22/184160.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184160.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/22/184160.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184160.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184160.aspx</trackback:ping><description>&lt;p&gt;暮れのご挨拶にはちょっと早いけども。&lt;/p&gt; &lt;p&gt;今年の決算(?)報告書。&lt;br&gt;いままでCodeZineに載った僕の記事、2009年1月からのPageViewでございます。&lt;/p&gt; &lt;table border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th&gt;No.&lt;/th&gt; &lt;th&gt;TITLE&lt;/th&gt; &lt;th&gt;PAGEVIEW&lt;/th&gt; &lt;th&gt;DATE&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;3864&lt;/td&gt; &lt;td&gt;　ヒープソートのアルゴリズム&lt;/td&gt; &lt;td align="right"&gt;16554&lt;/td&gt; &lt;td align="right"&gt;2009/05/13&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;4035&lt;/td&gt; &lt;td&gt;　C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す&lt;/td&gt; &lt;td align="right"&gt;15481&lt;/td&gt; &lt;td align="right"&gt;2009/09/10&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2886&lt;/td&gt; &lt;td&gt;　マージ・ソート : 巨大データのソート法&lt;/td&gt; &lt;td align="right"&gt;15415&lt;/td&gt; &lt;td align="right"&gt;2008/08/13&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1382&lt;/td&gt; &lt;td&gt;　C++/CLIによるCライブラリの.NET化&lt;/td&gt; &lt;td align="right"&gt;15022&lt;/td&gt; &lt;td align="right"&gt;2007/06/19&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1075&lt;/td&gt; &lt;td&gt;　CUnitによるテスト駆動開発&lt;/td&gt; &lt;td align="right"&gt;14163&lt;/td&gt; &lt;td align="right"&gt;2007/03/13&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2414&lt;/td&gt; &lt;td&gt;　SQLiteで“おこづかいちょう”&lt;/td&gt; &lt;td align="right"&gt;12591&lt;/td&gt; &lt;td align="right"&gt;2008/05/14&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2290&lt;/td&gt; &lt;td&gt;　C/C++に対応した、もうひとつのUnitTestFramework─WinUnit&lt;/td&gt; &lt;td align="right"&gt;8109&lt;/td&gt; &lt;td align="right"&gt;2008/03/18&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;885&lt;/td&gt; &lt;td&gt;　Cで実現する「ぷちオブジェクト指向」&lt;/td&gt; &lt;td align="right"&gt;7690&lt;/td&gt; &lt;td align="right"&gt;2007/02/14&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1540&lt;/td&gt; &lt;td&gt;　C# 1.1からC# 3.0まで～言語仕様の進化&lt;/td&gt; &lt;td align="right"&gt;5350&lt;/td&gt; &lt;td align="right"&gt;2007/08/06&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1252&lt;/td&gt; &lt;td class="xl151111"&gt;　SQLiteで組み込みDB体験（2007年版）&lt;/td&gt; &lt;td class="xl151111" align="right"&gt;4992&lt;/td&gt; &lt;td class="xl631111" align="right"&gt;2007/05/07&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;4650&lt;/td&gt; &lt;td&gt;　.NETでマンデルブロ集合を描く&lt;/td&gt; &lt;td align="right"&gt;4951&lt;/td&gt; &lt;td align="right"&gt;2009/12/10&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1937&lt;/td&gt; &lt;td&gt;　BoostでC++0xのライブラリ「TR1」を先取りしよう (1)&lt;/td&gt; &lt;td align="right"&gt;3746&lt;/td&gt; &lt;td align="right"&gt;2007/12/11&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2664&lt;/td&gt; &lt;td&gt;　STL/CLRツアーガイド&lt;/td&gt; &lt;td align="right"&gt;3232&lt;/td&gt; &lt;td align="right"&gt;2008/07/07&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;1967&lt;/td&gt; &lt;td&gt;　BoostでC++0xのライブラリ「TR1」を先取りしよう (2)&lt;/td&gt; &lt;td align="right"&gt;2673&lt;/td&gt; &lt;td align="right"&gt;2008/01/07&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2171&lt;/td&gt; &lt;td&gt;　BoostでC++0xのライブラリ「TR1」を先取りしよう (5)&lt;/td&gt; &lt;td align="right"&gt;2233&lt;/td&gt; &lt;td align="right"&gt;2008/02/22&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2158&lt;/td&gt; &lt;td&gt;　BoostでC++0xのライブラリ「TR1」を先取りしよう (4)&lt;/td&gt; &lt;td align="right"&gt;1203&lt;/td&gt; &lt;td align="right"&gt;2008/02/12&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="right"&gt;2134&lt;/td&gt; &lt;td&gt;　BoostでC++0xのライブラリ「TR1」を先取りしよう (3)&lt;/td&gt; &lt;td align="right"&gt;1109&lt;/td&gt; &lt;td align="right"&gt;2008/02/04&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;…おもしろいもんですな。ヒープソートを解説したやつが一番人気となりました。&lt;br&gt;上位に並ぶアーティクルはどれも毎月そこそこのPVをコンスタントに稼いでいます。&lt;br&gt;検索でひっかかってくんのかも。「定番の解説記事」として参照していただいているなら幸甚でございます。&lt;br&gt;気になるのが５位:CUnitネタ。CUnitネタは少ないからか、どっこいまだまだCは健在てことか。&lt;/p&gt; &lt;p&gt;てか今年書いたの少なっ! 来年はもちーと書きたいす。できることなら毎月でも。&lt;br&gt;んなわけで、ネタになりそなおもろいお話、たくさん聞かせてくださいましね。 &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184160.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>とうとう出ちゃいました&amp;hellip;</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/20/184076.aspx</link><pubDate>Sun, 20 Dec 2009 23:04:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/20/184076.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184076.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/20/184076.aspx#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184076.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184076.aspx</trackback:ping><description>&lt;p&gt;あー…ﾊｺｻﾌﾞﾛｰに恐れていた事態が。&lt;br&gt;遂にお出ましになりました、例の &lt;font color="#ff0000" size="7"&gt;RRoD&lt;/font&gt;っす orz&lt;/p&gt; &lt;p&gt;これが出た場合、保証期間が二年延長され、三年となります。&lt;br&gt;バックパネルの製造年月日みると 2006-11 &lt;strong&gt;切れちょるやないけ!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;電源落としてしばらくほっとけば何事もなかったかの如く快癒なさることも&lt;br&gt;ありますが、安心して遊べませんです。保証切れの修理って&lt;strong&gt;おいくら&lt;/strong&gt;かかるんだべ。&lt;br&gt;&lt;br&gt;HDがそろそろ詰まってきたんで買い替えてもいいかなーとか。&lt;br&gt;クリアデータの&lt;strong&gt;移行&lt;/strong&gt;とか、できるんかしら?&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184076.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>マルチスレッドに向かないバブルソートを無理くり&amp;hellip;</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/19/184016.aspx</link><pubDate>Sat, 19 Dec 2009 04:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/19/184016.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/184016.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/19/184016.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/184016.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/184016.aspx</trackback:ping><description>&lt;p&gt;ネタ元 → &lt;a href="http://blogs.wankuma.com/jitta/archive/2009/12/16/183892.aspx"&gt;Multi-Core と Multi-Thread&lt;/a&gt;&lt;br&gt;# &lt;a href="http://www.wankuma.com/seminar/20091107tokyo39/Default.aspx"&gt;わんくま同盟 東京勉強会 #39&lt;/a&gt; の&lt;strike&gt;復讐&lt;/strike&gt;復習ね。&lt;/p&gt; &lt;p&gt;Jittaさんのゆーとーり、複数の処理が互いに依存している場合マルチスレッド化はできない…&lt;br&gt;てゆーか、一方が他方の処理終了を待ってなきゃいかんのでシングルスレッドと大差ないわけで、&lt;br&gt;マルチスレッドによる効果が薄くなるす。&lt;br&gt;&lt;br&gt;お互いの処理が依存せず、つまり待ち合わせ(同期/排他)がなく、勝手気ままにオノレの道を&lt;br&gt;突き進むことができるなら、マルチスレッド化すればコアの数だけ同時実行できるから&lt;br&gt;そりゃ速くなるわな、と。&lt;/p&gt; &lt;p&gt;ソート対象となる配列を前半と後半に分け、それぞれをソートする分には互いに干渉せず&lt;br&gt;ぶん回れますわね。ほんでもって、ソートされた前半と後半をマージすりゃソート完了。&lt;br&gt;C++ と PPL(Parallel Patterns Library) でやってみまひょ。&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;font color="#000000"&gt;
#include &amp;lt;iostream&amp;gt;  &lt;font color="#000077"&gt;// cout&lt;/font&gt;
#include &amp;lt;algorithm&amp;gt; &lt;font color="#000077"&gt;// randum_shuffle, inplace_merge, etc.&lt;/font&gt;
#include &amp;lt;vector&amp;gt;    &lt;font color="#000077"&gt;// vector&lt;/font&gt;
#include &amp;lt;ppl.h&amp;gt;     &lt;font color="#000077"&gt;// parallel_invoke&lt;/font&gt;
#include &amp;lt;cassert&amp;gt;   &lt;font color="#000077"&gt;// assert&lt;/font&gt;
#include &amp;lt;windows.h&amp;gt; &lt;font color="#000077"&gt;// GetTickCount&lt;/font&gt;

&lt;font color="#000000"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/font&gt; std;
&lt;font color="#000000"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/font&gt; Concurrency;

&lt;font color="#000077"&gt;// バブるソート&lt;/font&gt;
&lt;font color="#000000"&gt;&lt;b&gt;template&lt;/b&gt;&lt;/font&gt;&amp;lt;&lt;font color="#000000"&gt;&lt;b&gt;typename&lt;/b&gt;&lt;/font&gt; Iterator&amp;gt;
&lt;font color="#000000"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt; bubble_sort(Iterator first, Iterator last) {
  Iterator lastSwapped = last;
  --lastSwapped;
  &lt;font color="#000000"&gt;&lt;b&gt;do&lt;/b&gt;&lt;/font&gt; {
    Iterator limit = lastSwapped;
    lastSwapped = first;
    &lt;font color="#000000"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; ( Iterator i = first; i != limit; ++i ) {
      &lt;font color="#000000"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; ( i[0] &amp;gt; i[1] ) { 
        iter_swap(i, i+1);
        lastSwapped = i;
      }
    }
  } &lt;font color="#000000"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/font&gt; ( lastSwapped != first );
}

&lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; main() {

  &lt;font color="#000000"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; N = 10000;

  &lt;font color="#000077"&gt;// 元ネタの準備&lt;/font&gt;
  &lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;* src = &lt;font color="#000000"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;[N];
  &lt;font color="#000000"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; ( &lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; i = 0; i &amp;lt; N; ++i ) src[i] = i;
  random_shuffle(src, src+N);

  vector&amp;lt;&lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&amp;gt; data;
  &lt;font color="#000077"&gt;// 整列してればtrueを返す関数オブジェクト&lt;/font&gt;
  &lt;font color="#000000"&gt;&lt;b&gt;auto&lt;/b&gt;&lt;/font&gt; in_order = [&amp;amp;]() { 
    &lt;font color="#000000"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; adjacent_find(data.begin(), data.end(), 
             [](&lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; x, &lt;font color="#000000"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; y) { &lt;font color="#000000"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; x &amp;gt; y;}) == data.end();
  };

  { &lt;font color="#000077"&gt;// ふつーにバブる&lt;/font&gt;
  data.assign(src,src+N);
  DWORD t = GetTickCount();
  bubble_sort(data.begin(), data.end());
  cout &amp;lt;&amp;lt; "single: " &amp;lt;&amp;lt; GetTickCount() - t &amp;lt;&amp;lt; " [ms]\n";
  assert( in_order() ); &lt;font color="#000077"&gt;// ソートできたかな?&lt;/font&gt;
  }

  { &lt;font color="#000077"&gt;// 前半と後半を同時にバブり、しかるのちマージ&lt;/font&gt;
  data.assign(src,src+N);
  DWORD t = GetTickCount();
  &lt;font color="#000077"&gt;// PPL使ってふたついっぺんに実行!&lt;/font&gt;
  parallel_invoke(
    [&amp;amp;](){ bubble_sort(data.begin(), data.begin()+N/2); },
    [&amp;amp;](){ bubble_sort(data.begin()+N/2, data.end()); }
  );
  &lt;font color="#000077"&gt;// マージして一本にする&lt;/font&gt;
  inplace_merge(data.begin(), data.begin()+N/2, data.end());
  cout &amp;lt;&amp;lt; "multi : " &amp;lt;&amp;lt; GetTickCount() - t &amp;lt;&amp;lt; " [ms]\n";
  assert( in_order() ); &lt;font color="#000077"&gt;// ソートできたかな?&lt;/font&gt;
  }

  &lt;font color="#000000"&gt;&lt;b&gt;delete&lt;/b&gt;&lt;/font&gt;[] src;
  &lt;font color="#000000"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; 0;
}
&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;実行結果:&lt;br&gt;single: 219 [ms]&lt;br&gt;multi : 93 [ms]&lt;br&gt;…ね♪&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/184016.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>ActionとFunc</title><link>http://blogs.wankuma.com/episteme/archive/2009/12/17/183931.aspx</link><pubDate>Thu, 17 Dec 2009 18:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2009/12/17/183931.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/183931.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2009/12/17/183931.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/183931.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/183931.aspx</trackback:ping><description>&lt;p&gt;C++のばやい、voidを返すことができます。たとえば:&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a9758950-07b5-4733-9632-e28819d96f03" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;functional&amp;gt;

namespace std { using namespace std::tr1; }

void f() { std::cout &amp;lt;&amp;lt; "f()\n"; }
void g() { std::cout &amp;lt;&amp;lt; "g() calls:"; return f(); } // ココ!

int main() {
  std::function&amp;lt;void(void)&amp;gt; function = g;
  function();
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;かたやC#では:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f3ce17e8-9c19-4035-af9f-e795d236cd12" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#:nogutter:nocontrols"&gt;using System;

class Program {
  public static void f() { Console.WriteLine("f()"); }
  public static void g() { Console.Write("g() calls:"); return f();} // ココ!
  
  public static void Main() {
    g();
  }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;error CS0127: 'Program.g()' は void 型を返すため、キーワード&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp; の後にオブジェクト式を指定することはできません。&lt;/p&gt;しょぼーん。&lt;br&gt;&lt;br&gt;Action&amp;lt;T&amp;gt; と Func&amp;lt;T,TResult&amp;gt; を統一的に扱いたく&lt;br&gt;# つまり戻り値voidでもFuncで済ましたくて&lt;br&gt;&lt;br&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ac5a299d-dc37-4e9d-8db0-66678f676311" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#:nogutter:nocontrols"&gt;using System;

class Program {
  public static void Main() {
    Action&amp;lt;string&amp;gt; a = (s)=&amp;gt;{ Console.WriteLine("{0}ワールド",s); };
    a("ヘロー"); // ↓ココ!
    Func&amp;lt;string,typeof(void)&amp;gt; f = (s)=&amp;gt;{ Console.WriteLine("{0}ワールド",s); };
    f("なるほど ザ・");
  }
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;error CS1525: 'string' は無効です。&lt;br&gt;error CS1525: ',' は無効です。&lt;br&gt;error CS1002: ; が必要です。&lt;/p&gt;お、おまえは何を言っているのだ!?&lt;br&gt;# typeof() って静的に解決できるんじゃないのぅ?&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/183931.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>