<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Codelogy</title>
      <link>http://www.codelogy.org/</link>
      <description></description>
      <language>ja</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Fri, 01 Aug 2008 12:03:33 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>3Dモデルファイルの独自形式制作（１回目）</title>
         <description><![CDATA[<p>
3D系プログラムをしていると、どうしてもついて回るのが読み込みモデリングファイルの形式です。<br>
私は普段DirectXを使っていますので、標準形式のXFileを使えばよいではないかということになりそうですが、XFileの方言はひどいものがある上に上位にあたるXNAではXFileをサポートしないといったことになっており散々です。<br>
よくデザイナーさんが使うmaya, 3ds max, LightWave3Dなどのソフトがありますが、それぞれのエクスポーターで出力するXFileも方言があり、Root Frameにアニメーション情報を含んだり、含まなかったり、メッシュの名前をつけたりつけなかったりと様々です。<br>
（他にもアニメーションの名前をつけたりつけなかったりするものまで・・・）<br>
当然標準のビューアのみで対応できるはずもなく、マテリアル色がおかしくなったり、アニメーションが壊れたり、描画すらされなかったりといった結果になります。<br>
<br>
それぞれのソフトに対応したエクスポーターを書いてもよいのですが、現在進行中プロジェクトではmaya, max, light waveすべてからのデータが送られてくるため、３つもエクスポータを書くのはさすがに無理です。<br>
ですので、これらの問題を埋めるためにAutodesk社が標準とするFBXというファイル形式から必要な情報を抜き出し独自形式にコンバートしたいと思います。<br>
<br>
今回はお仕事用としてのメモも兼ねますので、すぐに次の情報をアップしたいと思います。今回はFBXのパース、バージョンが上がったSDKの使い方がメインです。<br>
</p>]]></description>
         <link>http://www.codelogy.org/archives/2008/08/3d.html</link>
         <guid>http://www.codelogy.org/archives/2008/08/3d.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">C++</category>
        
        
         <pubDate>Fri, 01 Aug 2008 12:03:33 +0900</pubDate>
      </item>
            <item>
         <title>VertexDeclarationとFVF</title>
         <description><![CDATA[<p>
  私がよく見ている掲示板で気になる書き込みがありました。
  プログラマ独自のシェーダを使うときFVFは使えないので VertexDeclaration で頂点宣言を行わないといけない、といったものです。
  さすがにそれはないだろう・・・といった声もあるかと思われますが、シェーダプログラムがスキップされる等といった反論がありましたので実証してみました。
</p>
<p>
  ここ数週間プログラマブルシェーダばかり扱っていたため、ほとんど VertexDeclaration を使用していたのでFVFの宣言方法を確認しておきます。
  <a href = "http://msdn.microsoft.com/ja-jp/library/cc324487.aspx">MSDN</a>にある情報を元に定義しました。
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/07/vertexdeclarationfvf.html</link>
         <guid>http://www.codelogy.org/archives/2008/07/vertexdeclarationfvf.html</guid>
        
        
         <pubDate>Thu, 03 Jul 2008 18:51:14 +0900</pubDate>
      </item>
            <item>
         <title>Ruby でも型チェック</title>
         <description><![CDATA[<p>
  動的型付け (スクリプト) 言語では、データ型のチェックが実行時にしか行われないため、プログラムの妥当性検証・デバッグといった作業が困難になります。<br />
  例えば、Ruby でプログラムを書いていて、次のようなバグに悩まされたことのある人は多いのではないでしょうか。
</p>
<ul>
<li><b>Integer</b> オブジェクトを参照しているべき変数が、他の型のオブジェクトを参照している。</li>
<li>そのオブジェクトが「いつ」「どこで」代入されたものなのか分からない。</li>
</ul>
<p>
  この手のバグは、問題の発生 (不正な型の代入) と発覚 (エラーの発生) の位置が離れてしまうので、非常に厄介。
  発生箇所を絞り込むのが難しいため、プログラムを広範囲に渡って見直すハメになります。
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/06/ruby.html</link>
         <guid>http://www.codelogy.org/archives/2008/06/ruby.html</guid>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Ruby</category>
        
         <pubDate>Mon, 16 Jun 2008 13:00:00 +0900</pubDate>
      </item>
            <item>
         <title>Medical show and Business expo 2008 レポート</title>
         <description><![CDATA[<p>
５月２８日から３１日にかけまして、東京国際フォーラムにてMedical show and Business Expo 2008に参加してきました。今回はそのレポートと学んだことについてご報告します。<br>
<br>
参加しました医療系展示会では主にハードウェアの展示が多く、ソフトウェアを公開されていブースは私たちを除いては一社しかありませんでした。<br>
ですので、今回のコラムは技術的な内容ではなく、展示会におけるプレゼンテーションでの成功点と失敗点を私なりにまとめてみました。<br>
<br>
これらの点を次回以降の改善点、また対策としてみていただければ幸いです。
</p>]]></description>
         <link>http://www.codelogy.org/archives/2008/06/medical_show_and_business_expo.html</link>
         <guid>http://www.codelogy.org/archives/2008/06/medical_show_and_business_expo.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">レポート</category>
        
        
         <pubDate>Thu, 05 Jun 2008 20:58:45 +0900</pubDate>
      </item>
            <item>
         <title>Office OpenXMLの解説</title>
         <description><![CDATA[<div class="caption"><p>
GPUで並列処理の続きの記事がまだできていませんので、今回は別の記事を用意しました。</br>
</br>
OpenXMLは<a href = 
"http://office.microsoft.com/ja-jp/products/default.aspx">Microsoft 
Office2007</a>で新たに採用された文章フォーマットです。</br>
Microsoft独自のバイナリデータではなく、新たにXMLで記述された規格を採用したことで、外部アプリケーションから</br>
データ内容を操作しやすくなりました。</br>
しかしながら、データ操作の際<a href = 
"http://www.ecma-international.org/">ECMA</a>のOpenXML仕様書(Part 4: Markup 
Language Reference)を参照するわけですが、５千ページを超えているpdfですので
ファイルを開くだけでマシンがカクカクする私にとっては大問題です。</br>
</br>
よって今回Microsoft Excelのセル内容、レイアウトを変更するにあたって特に必要な部分についてまとめました。</br>
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/05/office_openxml.html</link>
         <guid>http://www.codelogy.org/archives/2008/05/office_openxml.html</guid>
        
        
         <pubDate>Thu, 08 May 2008 18:47:10 +0900</pubDate>
      </item>
            <item>
         <title>GPUでレイトレーシング (補足)</title>
         <description><![CDATA[<p>
  前回の<a href = "http://www.codelogy.org/archives/2008/05/gpu_1.html">GPUレイトレーシング</a>についてもう少し補足したほうがよさそうでしたので、補足します。<br />
  今回はGPUのジョブの単位、メモリの扱い、画面分割の割り当てを図を用いて説明します。
</p>]]></description>
         <link>http://www.codelogy.org/archives/2008/05/gpu_2.html</link>
         <guid>http://www.codelogy.org/archives/2008/05/gpu_2.html</guid>
        
        
         <pubDate>Tue, 06 May 2008 22:08:00 +0900</pubDate>
      </item>
            <item>
         <title>GPUでレイトレーシングを並列処理</title>
         <description><![CDATA[<p>
  以前やった<a href="http://www.codelogy.org/archives/2007/12/gpu.html">GPUで並列処理</a>の続きとして今回はGPUでレイトレーシングを行いたいと思います。<br />
  レイトレーシングはリアルな画像を作り出す反面、計算に大変時間がかかることはよく知られています。<br />
  その処理をいかに高速化できるか？というのが今回のコラムの目的です。
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/05/gpu_1.html</link>
         <guid>http://www.codelogy.org/archives/2008/05/gpu_1.html</guid>
        
        
         <pubDate>Fri, 02 May 2008 20:28:13 +0900</pubDate>
      </item>
            <item>
         <title>XMLライブラリの紹介 (2)</title>
         <description><![CDATA[<p>
  <a href="http://www.codelogy.org/archives/2007/12/a.html">前のエントリ</a>からかなり間が空いてしまいましたが、XML ライブラリの紹介の続きです。
</p>
<p>
  読み込んだXML文書のツリー構造をたどって各要素に対する処理を行うのは、手間がかかります。<br />
  今回は、フレームワークを利用して XML 文書を解釈 (interpret) する方法について説明します。
</p>

]]></description>
         <link>http://www.codelogy.org/archives/2008/05/xml.html</link>
         <guid>http://www.codelogy.org/archives/2008/05/xml.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">C++</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">C++</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">XML</category>
        
         <pubDate>Thu, 01 May 2008 17:00:00 +0900</pubDate>
      </item>
            <item>
         <title>Haskell でバグの出にくいプログラミング (4) ローカルスコープによる変数代入の模倣</title>
         <description><![CDATA[<p>
<a href="http://www.codelogy.org/archives/2008/01/haskell_3.html">前回</a>は、副作用である変数代入という概念が純粋関数型言語である Haskell には存在しないということを書きました。 今回と次回は、そのような変数という概念を純粋関数的に模倣した Haskell の State モナドについて書こうと思います。
</p>
<p>今回は、State モナドの説明の前段階として、ローカルスコープを用いた変数代入の模倣についてです。</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/04/haskell_4.html</link>
         <guid>http://www.codelogy.org/archives/2008/04/haskell_4.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Haskell</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">haskell</category>
        
         <pubDate>Sun, 06 Apr 2008 19:03:45 +0900</pubDate>
      </item>
            <item>
         <title>宣言の位置</title>
         <description><![CDATA[<div class="section">
  <p>
    C言語では、ローカル変数の宣言を関数の始めに宣言する必要がありました。<br />
    これを習慣としているのか、C++ でもローカル変数・オブジェクトの宣言を関数の開始位置で行う人がいます。
  </p>
  <table class="code">
  <tr>
    <td>
      <pre>
<em class="cmt">//分散を求める関数 (C++スタイル宣言)</em>
<em class="kwd">int</em> variance(<em class="kwd">const</em> Array&lt;<em class="kwd">double</em>&gt;&amp; ad){
    assert(ad);

    <em class="kwd">double</em> dSum =<em class="lit">0</em>;

    <em class="kwd">int</em> i;
    <em class="kwd">for</em> (i=<em class="lit">0</em>; i&lt;ad.size; ++i) dSum +=ad[i];

    <em class="kwd">double</em> dAvr   =dSum/ad.size;
    <em class="kwd">double</em> dSumSq =<em class="lit">0</em>;

    <em class="kwd">for</em> (i=<em class="lit">0</em>; i&lt;ad.size; ++i){

        <em class="kwd">double</em> dTmp =ad[i] - dAvr;

        dSumSq +=dTmp*dTmp;
    }

    <em class="kwd">return</em> dSumSq/ad.size;
}</pre></td>
    <td>
      <pre>
<em class="cmt">//分散を求める関数 (Cスタイル宣言)</em>
<em class="kwd">int</em> variance(<em class="kwd">const</em> Array&lt;<em class="kwd">double</em>&gt;&amp; ad){
    assert(ad);

    <em class="kwd">double</em> dSum   =<em class="lit">0</em>;
    <em class="kwd">double</em> dSumSq =<em class="lit">0</em>;
    <em class="kwd">double</em> dAvr;
    <em class="kwd">double</em> dTmp;
    <em class="kwd">int</em> i;

    <em class="kwd">for</em> (i=<em class="lit">0</em>; i&lt;ad.size; ++i) dSum +=ad[i];

    dAvr =dSum/ad.size;

    <em class="kwd">for</em> (i=<em class="lit">0</em>; i&lt;ad.size; ++i){

        dTmp =ad[i] - dAvr;

        dSumSq +=dTmp*dTmp;
    }

    <em class="kwd">return</em> dSumSq/ad.size;
}</pre></td>
    </tr>
  </table>
  <p>
    それでも動作には何の支障もありませんが、変数の「宣言」と「実際に使われ始める位置」が離れてしまうため、プログラムがやや読みづらくなります。
    また、上例のCスタイルの方では、２番目のループ内でのみ使われる変数 <code>dTmp</code> のスコープが関数全体に及んでしまうのも、あまり良い状況ではないでしょう。<br />
    しかし、C++ が変数・オブジェクトの宣言を関数の任意の位置で行えるようになっているのは、このような可読性に関する (些末な) 問題のためだけではありません。
    これには、C にはなかった「クラス」「オブジェクト」が大きく関係しています。
  </p>
</div>]]></description>
         <link>http://www.codelogy.org/archives/2008/04/post_9.html</link>
         <guid>http://www.codelogy.org/archives/2008/04/post_9.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">C++</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">C++</category>
        
         <pubDate>Sat, 05 Apr 2008 17:00:00 +0900</pubDate>
      </item>
            <item>
         <title> 0からはじめる計算幾何学 第04回 過去のプログラムの有効活用</title>
         <description><![CDATA[<p>
昔書いたプログラムをもう一度使えないかと考えることは、多くのプログラマにとって（そしてエントリのネタを探す私にとっても）重要なことです。
今日は、過去の遺産を有効活用して楽に問題を解いた事例を紹介しましょう。UVa Online Judge の 10012番、<a href="http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&page=show_problem&problem=953">How Big Is It?</a> です。
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/03/0_03.html</link>
         <guid>http://www.codelogy.org/archives/2008/03/0_03.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">計算幾何学</category>
        
        
         <pubDate>Sat, 08 Mar 2008 23:00:00 +0900</pubDate>
      </item>
            <item>
         <title>コメントつけろよ</title>
         <description><![CDATA[<p>
  プログラマは自分でコードを書くことができるだけでなく、他人が書いたコードを (ある程度は) 読むことができなければなりません。
  その際に最もゲンナリさせられるのが、<a href="http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)">コメント</a>が全くないソースコードです。</p>
<p>
  腕の立つプログラマのコードというのはきちんと構造化されいるため、コメントに頼らずとも作者の意図をきちんと読み取ることができます。
  しかし、そのようなコードを書くプログラマは、コメントもきちんと付けるもの。
  むしろ、初心者や読みづらいコードを書くプログラマほど、コメントも疎かになる傾向があるようです。<br />
  彼らが自分のソースコードにコメントを付けない理由として挙げるものとしては、
</p>
<dl>
<li>時間がなかったから。(急いで修正したから。)</li>
<li>公開するつもりのないコードだから。</li>
<li>コメントを付けると、コメントに頼ってコードを読むようになってしまうから。</li>
<li>コメントを入れるのと、素人のコードっぽく見えるから。</li>
<li><a href="http://d.hatena.ne.jp/minekoa/20080125/1201263076">コードの可読性は品質には影響しない。可読性をあげて良いことがあるのか？</a></li>
</ul>
<p>
  などなど……。（いずれも、実際に言われたことがある。)<br />
  人それぞれに事情や主義主張があるのは分かりますが、正直「そのコードの保守運用をさせられるこっちの身にもなってくれ」と言いたくなります。(そして、実際に言っています。^^;)
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/02/comment.html</link>
         <guid>http://www.codelogy.org/archives/2008/02/comment.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">コード保守</category>
        
        
         <pubDate>Sun, 24 Feb 2008 16:00:00 +0900</pubDate>
      </item>
            <item>
         <title>Scala で遊んでみました</title>
         <description><![CDATA[<div class="section">
<p>最近よく名前を聞くようになった <a href="http://www.scala-lang.org/">Scala</a> という言語で遊んでみました。</p>
</div>
]]></description>
         <link>http://www.codelogy.org/archives/2008/02/scala.html</link>
         <guid>http://www.codelogy.org/archives/2008/02/scala.html</guid>
        
        
         <pubDate>Sun, 17 Feb 2008 20:46:39 +0900</pubDate>
      </item>
            <item>
         <title>平方根を使わないピタゴラス加算</title>
         <description><![CDATA[<p>
二次元座標上の2点間の距離を求めたいとき、複素数の絶対値を求めたいとき、その他いろいろなときに x = √(a<sup>2</sup> + b<sup>2</sup>) という式を使います（これをpythagorean additionと言うそうです）。これを実装するとき、 
</p>
<table class="code">
<tr><td><pre>
sqrt( a*a + b*b )
</pre></td></tr>
</table>
<p>
という文がよく使われますが、この文を無闇に使っていると、あまり嬉しくない事態を引き起こすことになります。
</p>]]></description>
         <link>http://www.codelogy.org/archives/2008/02/post_8.html</link>
         <guid>http://www.codelogy.org/archives/2008/02/post_8.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">アルゴリズム</category>
        
        
         <pubDate>Thu, 07 Feb 2008 23:00:00 +0900</pubDate>
      </item>
            <item>
         <title>[OpenCV] 動的背景更新とオブジェクトの認識</title>
         <description><![CDATA[<p>
  最近、画像処理についての会話をよく聞くので少し自分でもやってみました。<br />
  今回使用したライブラリはIntel社のOpenCVというライブラリです。<br />
  <br />
  ダウンロードは以下のリンクより行えます。<br />
  <a href="http://sourceforge.net/projects/opencvlibrary/">http://sourceforge.net/projects/opencvlibrary/</a><br /><br />
  <br />
  このライブラリを使用することによって画像やWebカメラから入力した人間の顔や目の位置などが、わずか２０数行のコードで書くことができます。<br />
  今回はこれを使って背景画像を動的に更新し、そこに入ってきたオブジェクトを認識してみます。<br />
</p>
]]></description>
         <link>http://www.codelogy.org/archives/2008/01/opencv.html</link>
         <guid>http://www.codelogy.org/archives/2008/01/opencv.html</guid>
        
        
         <pubDate>Thu, 17 Jan 2008 22:45:08 +0900</pubDate>
      </item>
      
   </channel>
</rss>
