<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="http://d.hatena.ne.jp/big-bros/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/big-bros/rss">
<title>帰ってきた人生戦闘詳報</title>
<link>http://d.hatena.ne.jp/big-bros/</link>
<description>帰ってきた人生戦闘詳報</description>

<dc:creator>big-bros</dc:creator>
<dc:date>2012-01-23T10:07:54+09:00</dc:date>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20120123#1327277399"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111220#1324338415"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111220#1324393500"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111220#1324400001"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111218#1324175959"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111218#1324181670"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111218#1324185706"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111218#1324218310"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111218#1324223094"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111217#1324078662"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111217#1324128104"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/big-bros/20111216#1324009367"/>
</rdf:Seq>
</items>
</channel>



<item rdf:about="http://d.hatena.ne.jp/big-bros/20120123#1327277399">
<title>[HISTORY] 「成立」の解釈</title>
<link>http://d.hatena.ne.jp/big-bros/20120123#1327277399</link>
<description> 昨晩twitterであるツイートをしたところ、えらい勢いでRTされてしまい、Mentionでちょくちょく疑問や質問をいただいたので、自分の力のおよぶ限りの解説をさせていただいているのですが、毎回140文字以内に収めるのが大変なのと、あまりに多くの方に興味を持っていただいた</description>

<content:encoded><![CDATA[
<div class="section">
<p>昨晩twitterであるツイートをしたところ、えらい勢いでRTされてしまい、Mentionでちょくちょく疑問や質問をいただいたので、自分の力のおよぶ限りの解説をさせていただいているのですが、毎回140文字以内に収めるのが大変なのと、あまりに多くの方に興味を持っていただいたため、対応が大変になってきましたので、こちらに簡単な解説でも書いておくことにしました。</p>
<br>

<p>とはいっても、自分は日本史の研究者とか専門家ではないので、あまり詳しいところまでは説明できません。また、個人的な解釈が混ざりこんでいる可能性があることもあらかじめおことわりしておきます。</p>
<br>

<p>して、件のツイートはこちら。</p>
<blockquote>
<p><a href="https://twitter.com/#!/big_bros/status/161037510565302272" target="_blank">Twitter</a></p>
<p>【若い方へ】 わりと歳のいった人が稀に「いい国作ろう〜」みたいなネタを呟きますが、一定の年代まで学校では鎌倉幕府の成立年を1192年とし「いい国作ろう鎌倉幕府」という語呂あわせとともに教えていました。現代の解釈では皆さんの習った1185年で合ってますので心配御無用です。</p>
</blockquote>
<br>

<p>私を含む一定の世代まで、社会科での「鎌倉幕府成立」の年号は、「いい国(1192)作ろう鎌倉幕府」の語呂合わせと共に、1192年と教わってきました。これは源頼朝が朝廷から征夷大将軍に任ぜられた年であり、この時点を鎌倉幕府の成立と見なす観点からの解釈によるものです。</p>
<br>

<p>しかし現在では、それ以前と以後で大きく社会の有り様を変えたのは頼朝が壇ノ浦で平氏を滅ぼし、守護や地頭を各地に置き実効的な支配体制を築き上げた1185年である、という解釈が主流であるようです。1192年の征夷大将軍任命はその実効支配に対する事後追認的なものである、といったところでしょうか。</p>
<blockquote>
<p>【参考】<a href="http://ja.wikipedia.org/wiki/%E9%8E%8C%E5%80%89%E5%B9%95%E5%BA%9C#.E6.A6.82.E8.A6.81" target="_blank">鎌倉幕府 - Wikipedia</a></p>
</blockquote>
<br>

<p>これを踏まえ、現在の中学校歴史教科書の記述も従来とは変更されています。</p>
<p>2008年の段階で既に教科書にはその記述があったようです。</p>
<blockquote>
<p>【参考】<a href="http://www.asahi.com/edu/student/kyoukashow/TKY200802270241.html" target="_blank">asahi.com：中学校の歴史　１１９２は違うの？鎌倉幕府成立 - 教科ＳＨＯＷ - 小中学校 - 教育</a></p>
</blockquote>
<p>この教科書の変更があって以降の教育を受けた世代は、鎌倉幕府の「成立」を1185年と習うことになります。特に何か新事実が出てきたりしたわけではありませんが、</p>
<blockquote>
<p><span style="font-weight:bold;" class="deco">何をもって「幕府の成立」とするか、という解釈が変わった</span></p>
</blockquote>
<p>ということです。我々の世代が受けた教育が大きく内容的に誤っていた、というわけではないのでご安心ください。ただ、征夷大将軍任命という「形式」よりも「実効支配の開始」を重視するようになった、ということらしいです。</p>
<br>

<p>もっとも、教科書の改訂があって以降も、教える先生によっては1192年の征夷大将軍任命のほうを重視したり、あるいは先生の側の認識をアップデートできていなかったりで、1192年と習った若い方もいるようです。何をもって「成立」と見なすかが違うだけで、1185年としても1192年としても必ずしも誤りではありません。</p>
<br>

<p>重要なのは、歴史における出来事の経緯を理解すること、だと思っています。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2012-01-23T09:09:59+09:00</dc:date>
<dc:subject>HISTORY</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111220#1324338415">
<title>[COM] #プログラム大喜利 文字列をカエサル暗号化する関数またはプログラム</title>
<link>http://d.hatena.ne.jp/big-bros/20111220#1324338415</link>
<description> Twitter Twitter 朝食を終えてから書いたので「朝飯前」とは言えないが、内容はそのレベル。 妙に真面目に書いてしまって、前提に無い条件にも対応はしている。 /* caesar.c */ #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;string.h&#62; void c</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/148902862418743298" target="_blank">Twitter</a></p>
<p><a href="http://twitter.com/#!/big_bros/status/148906975890124800" target="_blank">Twitter</a></p>
</blockquote>
<p>朝食を終えてから書いたので「朝飯前」とは言えないが、内容はそのレベル。</p>
<p>妙に真面目に書いてしまって、前提に無い条件にも対応はしている。</p>
<pre class="syntax-highlight">

<span class="synComment">/*</span>
<span class="synComment">caesar.c</span>
<span class="synComment">*/</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;string.h&#62;</span>

<span class="synType">void</span> caesar(<span class="synType">char</span> *buf, <span class="synType">char</span> * str)
{
<span class="synType">int</span> i;
<span class="synType">int</span> len;

<span class="synStatement">for</span>(i = <span class="synConstant">0</span>; str[i]; i++) {
<span class="synComment">// 設問の前提から外れるけど、チェックを入れておく。</span>
<span class="synStatement">if</span>(!isalpha(str[i])) {
buf[i] = str[i];
<span class="synStatement">continue</span>;
}
buf[i] = (tolower(str[i]) &#62; <span class="synConstant">'w'</span>) ? str[i] - <span class="synConstant">23</span> : str[i] + <span class="synConstant">3</span>;
}
buf[i] = <span class="synSpecial">'\0'</span>;
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
<span class="synType">int</span> i;
<span class="synType">char</span> * buf;

<span class="synStatement">for</span>(i = <span class="synConstant">1</span>; i &#60; argc; i++) {
buf = malloc(strlen(argv[i]) + <span class="synConstant">1</span>);
<span class="synStatement">if</span>(<span class="synConstant">NULL</span> == buf) <span class="synStatement">return</span> <span class="synConstant">EXIT_FAILURE</span>;
caesar(buf, argv[i]);
printf(<span class="synConstant">&#34;</span><span class="synSpecial">%s</span><span class="synConstant"> &#34;</span>, buf);
free(buf);
}
printf(<span class="synConstant">&#34;</span><span class="synSpecial">\n</span><span class="synConstant">&#34;</span>);<span class="synComment">// 勿体ないから putchar() とかでもいい。</span>
<span class="synStatement">return</span> <span class="synConstant">EXIT_SUCCESS</span>;
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-20T08:46:55+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111220#1324393500">
<title>[COM] #プログラム大喜利 内容不定Job実行系</title>
<link>http://d.hatena.ne.jp/big-bros/20111220#1324393500</link>
<description> Twitter 実はオブジェクト指向問題だったりする。 JavaやC++, Ruby などのオブジェクト指向言語であれば非常にすっきりと実装できたりする。 実はCでもできん事は無いのだけれども、スコープをファイル単位で分けねばならなかったりで結構しちめんどくさいw 下記回答は当初C</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/149137448490901505" target="_blank">Twitter</a></p>
</blockquote>
<p>実はオブジェクト指向問題だったりする。</p>
<p>JavaやC++, Ruby などのオブジェクト指向言語であれば非常にすっきりと実装できたりする。</p>
<p>実はCでもできん事は無いのだけれども、スコープをファイル単位で分けねばならなかったりで結構しちめんどくさいw</p>
<p>下記回答は当初C++のくせにまとめて書いていたが、やっぱり読みにくいというか、ヘッダはヘッダとしてあったほうがクラスの全容が把握しやすいと思われるため、分けることにした。</p>
<p>内容は分割前と同じ。</p>
<h4>CJobMgr.h</h4>
<pre class="syntax-highlight">
<span class="synPreProc">#ifndef CJobMgr_h</span>
<span class="synPreProc">#define CJobMgr_h</span>

<span class="synPreProc">#include </span><span class="synConstant">&#60;iostream&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;list&#62;</span>

<span class="synType">class</span> CJobMgr;

<span class="synComment">//! Job基底クラス</span>
<span class="synComment">/*!</span>
<span class="synComment">各Jobは、このクラスを派生させて実装する。</span>
<span class="synComment">*/</span>
<span class="synType">class</span> CJob
{
  <span class="synStatement">protected</span>:
CJob();

  <span class="synStatement">public</span>:
<span class="synType">virtual</span> ~CJob();

<span class="synType">virtual</span> <span class="synType">bool</span> watch() = <span class="synConstant">0</span>;<span class="synComment">// 監視メソッド: 監視条件の判定を記述する</span>
<span class="synType">virtual</span> <span class="synType">bool</span> exec() = <span class="synConstant">0</span>;<span class="synComment">// 実行メソッド: 実行する処理を記述する</span>
<span class="synType">virtual</span> <span class="synType">void</span> destroy() = <span class="synConstant">0</span>;<span class="synComment">// 破棄メソッド: 破棄処理を記述する</span>

  <span class="synStatement">protected</span>:
<span class="synComment">//! Job登録メソッド</span>
<span class="synType">bool</span> regist();

<span class="synComment">//! 破棄予約メソッド</span>
<span class="synType">bool</span> remove();
};

<span class="synType">class</span> CJobMgr
{
<span class="synStatement">friend</span> <span class="synType">class</span> CJob;
  <span class="synStatement">private</span>:
CJobMgr();
<span class="synType">virtual</span> ~CJobMgr();
  <span class="synStatement">public</span>:
<span class="synComment">//! インスタンス取得</span>
<span class="synType">static</span> CJobMgr&#38; getInstance();

<span class="synComment">//! 登録 Job 実行</span>
<span class="synType">void</span> exec_job();

  <span class="synStatement">private</span>:
<span class="synComment">//! 指定Jobの登録</span>
<span class="synType">bool</span> regist(CJob * pJob);

<span class="synComment">//! 指定Jobの削除予約</span>
<span class="synType">bool</span> remove(CJob * pJob);
<span class="synStatement">private</span>:
std::list&#60;CJob *&#62;m_lstJob;<span class="synComment">//!&#60; Jobリスト</span>
std::list&#60;CJob *&#62;m_lstRemove;<span class="synComment">//!&#60; 削除予約リスト</span>
};

<span class="synPreProc">#endif</span> <span class="synComment">// CJobMgr_h</span>
</pre>

<h4>CJobMgr.cpp</h4>
<pre class="syntax-highlight">

<span class="synPreProc">#include </span><span class="synConstant">&#34;CJobMgr.h&#34;</span>


CJob::CJob() {}
CJob::~CJob() {}

<span class="synComment">/*!</span>
<span class="synComment">\return Job登録が正常終了すればtrue, 異常終了すれば false</span>

<span class="synComment">Jobの初期化条件がJobごとに異なることが考えられるので、初期化メソッドは実装しないが、</span>
<span class="synComment">初期化の最後にこのメソッドを呼び、自身をマネージャに登録するという仕様。</span>
<span class="synComment">*/</span>
<span class="synType">bool</span>
CJob::regist()
{
<span class="synStatement">return</span> CJobMgr::getInstance().regist(<span class="synStatement">this</span>);
}

<span class="synComment">/*!</span>
<span class="synComment">\return 破棄予約に成功すれば true, 失敗すれば false</span>

<span class="synComment">Jobを破棄予約する。破棄予約されたJobはメインループの最後にまとめて破棄される。</span>
<span class="synComment">各Jobインスタンスに対し destroy() を呼んだ後、delete される。</span>
<span class="synComment">*/</span>
<span class="synType">bool</span>
CJob::remove()
{
<span class="synStatement">return</span> CJobMgr::getInstance().remove(<span class="synStatement">this</span>);
}




CJobMgr::CJobMgr() {}
CJobMgr::~CJobMgr() {}

<span class="synComment">/*!</span>
<span class="synComment">\return インスタンスへの参照</span>

<span class="synComment">ジョブマネージャは複数存在してはいけないので、singleton として実装する。</span>
<span class="synComment">*/</span>
CJobMgr&#38;
CJobMgr::getInstance()
{
<span class="synType">static</span> CJobMgr instance;
<span class="synStatement">return</span> instance;
}

<span class="synComment">/*!</span>
<span class="synComment">メインループの中で呼び出すべきメソッド。</span>
<span class="synComment">for(;;) {</span>
<span class="synComment">    CJobMgr::getInstance().exec_job();</span>
<span class="synComment">}</span>
<span class="synComment">のように呼べば良い。</span>

<span class="synComment">登録されている全てのJobに対し watch() を呼び、</span>
<span class="synComment">true を返したものについては exec() を呼び出す。</span>
<span class="synComment">その過程で自身を削除予約した者については、最後にまとめて破棄処理を行う。</span>
<span class="synComment">*/</span>
<span class="synType">void</span>
CJobMgr::exec_job()
{
std::list&#60;CJob *&#62;::iterator it;

<span class="synComment">// 削除予約リストをクリアする。</span>
m_lstRemove.clear();

<span class="synComment">// 登録されているJobを処理する</span>
<span class="synStatement">for</span>(it = m_lstJob.begin(); it != m_lstJob.end(); it++) {
CJob * pJob = *it;
<span class="synStatement">if</span>(pJob-&#62;watch()) pJob-&#62;exec();
}

<span class="synComment">// 削除予約されたものを削除する</span>
<span class="synStatement">for</span>(it = m_lstRemove.begin(); it != m_lstRemove.end(); it++) {
CJob * pJob = *it;
pJob-&#62;destroy();
m_lstJob.remove(pJob);
<span class="synStatement">delete</span> pJob;<span class="synComment">// インスタンスそのものを破棄</span>
}
}

<span class="synComment">/*!</span>
<span class="synComment">\param pJob  登録対象となるJobインスタンスのポインタ</span>
<span class="synComment">\return 登録が正常終了すればtrue, 異常終了の場合はfalse</span>

<span class="synComment">指定されたポインタのJobをマネージャに登録する。CJob::regist()内部から呼ばれる。</span>
<span class="synComment">privateメソッドだが、friend class である CJob からは呼べるため、</span>
<span class="synComment">Jobの実装者はマネージャの存在を意識する必要がなくなる。</span>

<span class="synComment">このようにする理由は、singleton の public メソッドはプログラム中の</span>
<span class="synComment">何処からでも呼べてしまうため。</span>
<span class="synComment">不正な呼び出しを防ぐ目的で「CJob以外から呼ぶことができない」状態を作り出している。</span>
<span class="synComment">*/</span>
<span class="synType">bool</span>
CJobMgr::regist(CJob * pJob)
{
<span class="synStatement">try</span> {
m_lstJob.push_back(pJob);
<span class="synStatement">return</span> <span class="synConstant">true</span>;
} <span class="synStatement">catch</span>(std::bad_alloc&#38; ex) {
<span class="synStatement">return</span> <span class="synConstant">false</span>;
}
}

<span class="synComment">/*!</span>
<span class="synComment">\param pJob  削除予約対象となるJobインスタンスのポインタ</span>
<span class="synComment">\return 予約が正常終了すればtrue, 異常終了の場合はfalse</span>

<span class="synComment">指定されたポインタのJobを、マネージャに対し削除予約する。CJob::remove()内部から呼ばれる。</span>
<span class="synComment">スコープに関しては regist(CJob*) と同様。</span>
<span class="synComment">*/</span>
<span class="synType">bool</span>
CJobMgr::remove(CJob * pJob)
{
<span class="synStatement">try</span> {
m_lstRemove.push_back(pJob);
<span class="synStatement">return</span> <span class="synConstant">true</span>;
} <span class="synStatement">catch</span>(std::bad_alloc&#38; ex) {
<span class="synStatement">return</span> <span class="synConstant">false</span>;
}
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-21T00:05:00+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111220#1324400001">
<title>[COM] #プログラム大喜利 内容不定Job実行系(わざわざCで書いてみる編)</title>
<link>http://d.hatena.ne.jp/big-bros/20111220#1324400001</link>
<description> Twitter 上の回答例で「実はCでも出来んことはない」と書いた以上Cでも書いてみる。 jobmgr.h #ifndef jobmgr_h #define jobmgr_h typedef struct JOBHDR { struct JOBHDR * prev; struct JOBHDR * next; struct JOBHDR * rmv_next; int (*func_watch)(void *); int (*func_</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/149137448490901505" target="_blank">Twitter</a></p>
</blockquote>
<p>上の回答例で「実はCでも出来んことはない」と書いた以上Cでも書いてみる。</p>
<h4>jobmgr.h</h4>
<pre class="syntax-highlight">

<span class="synPreProc">#ifndef jobmgr_h</span>
<span class="synPreProc">#define jobmgr_h</span>

<span class="synType">typedef</span> <span class="synType">struct</span> JOBHDR {
<span class="synType">struct</span> JOBHDR * prev;
<span class="synType">struct</span> JOBHDR * next;
<span class="synType">struct</span> JOBHDR * rmv_next;
<span class="synType">int</span>(*func_watch)(<span class="synType">void</span> *);
<span class="synType">int</span> (*func_exec)(<span class="synType">void</span> *);
<span class="synType">void</span> (*func_destroy)(<span class="synType">void</span> *);
} JOBHDR;


<span class="synType">void</span> job_init();

<span class="synType">void</span> * job_regist(<span class="synType">size_t</span> szWork,
<span class="synType">int</span> (*func_watch)(<span class="synType">void</span> *),
<span class="synType">int</span> (*func_exec)(<span class="synType">void</span> *),
<span class="synType">void</span> (*func_destroy)(<span class="synType">void</span> *));

<span class="synType">int</span> job_remove(<span class="synType">void</span> * pWork);

<span class="synType">void</span> job_exec(<span class="synType">void</span>);

<span class="synPreProc">#endif</span> <span class="synComment">/* jobmgr_h */</span>
</pre>

<h4>jobmgr.c</h4>
<pre class="syntax-highlight">

<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>

<span class="synPreProc">#include </span><span class="synConstant">&#34;jobmgr.h&#34;</span>

<span class="synType">typedef</span> <span class="synType">struct</span> {
JOBHDR * begin;
JOBHDR * end;
JOBHDR * remove;
} JOBLIST;

<span class="synType">static</span> JOBLIST jobList;

<span class="synType">void</span> * job_regist(<span class="synType">size_t</span> szWork,
<span class="synType">int</span> (*func_watch)(<span class="synType">void</span> *),
<span class="synType">int</span> (*func_exec)(<span class="synType">void</span> *),
<span class="synType">void</span> (*func_destroy)(<span class="synType">void</span> *))
{
JOBHDR * pWork;

<span class="synStatement">if</span>(szWork &#60; <span class="synStatement">sizeof</span>(JOBHDR)) <span class="synStatement">return</span> <span class="synConstant">NULL</span>;
<span class="synStatement">if</span>(<span class="synConstant">NULL</span> == (pWork = malloc(szWork))) <span class="synStatement">return</span> <span class="synConstant">NULL</span>;

pWork-&#62;func_watch = func_watch;
pWork-&#62;func_exec = func_exec;
pWork-&#62;func_destroy = func_destroy;

pWork-&#62;next = <span class="synConstant">NULL</span>;
<span class="synStatement">if</span>(<span class="synConstant">NULL</span> != (pWork-&#62;prev = jobList.end)) {
jobList.end-&#62;next = pWork;
} <span class="synStatement">else</span> {
jobList.begin = pWork;
}
jobList.end = pWork;
pWork-&#62;rmv_next = <span class="synConstant">NULL</span>;

<span class="synStatement">return</span> pWork;
}

<span class="synType">int</span> job_remove(<span class="synType">void</span> * pWork)
{
JOBHDR * jWork = (JOBHDR *)pWork;

jWork-&#62;rmv_next = jobList.remove;
jobList.remove = jWork;

<span class="synStatement">return</span> <span class="synConstant">1</span>;
}

<span class="synType">void</span> job_exec(<span class="synType">void</span>)
{
JOBHDR * pJob;
JOBHDR * pNxt;

jobList.remove = <span class="synConstant">NULL</span>;
<span class="synStatement">for</span>(pJob = jobList.begin; pJob; pJob = pJob-&#62;next) {
<span class="synStatement">if</span>(pJob-&#62;func_watch(pJob)) pJob-&#62;func_exec(pJob);
}
<span class="synComment">/* 破棄予約分の破棄 */</span>
pJob = jobList.remove;
<span class="synStatement">while</span>(pJob) {
pNxt = pJob-&#62;rmv_next;
<span class="synStatement">if</span>(pJob-&#62;prev) {
pJob-&#62;prev-&#62;next = pJob-&#62;next;
} <span class="synStatement">else</span> {
jobList.begin = pJob-&#62;next;
}
<span class="synStatement">if</span>(pJob-&#62;next) {
pJob-&#62;next-&#62;prev = pJob-&#62;prev;
} <span class="synStatement">else</span> {
jobList.end = pJob-&#62;prev;
}
pJob-&#62;func_destroy(pJob);
free(pJob);
pJob = pNxt;
}
}

<span class="synType">void</span> job_init(<span class="synType">void</span>)
{
jobList.begin = jobList.end = jobList.remove = <span class="synConstant">NULL</span>;
}
</pre>

<h4>count_job.c (上記を使ったJobの作例)</h4>
<pre class="syntax-highlight">

<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>

<span class="synPreProc">#include </span><span class="synConstant">&#34;jobmgr.h&#34;</span>

<span class="synType">typedef</span> <span class="synType">struct</span> {
JOBHDRheader;

<span class="synType">int</span>count;
} WORK;

<span class="synType">static</span> <span class="synType">int</span> my_watch(<span class="synType">void</span> * vpWork) {
WORK * pWork = vpWork;

pWork-&#62;count++;
<span class="synStatement">if</span>(pWork-&#62;count &#62; <span class="synConstant">100</span>) <span class="synStatement">return</span> <span class="synConstant">1</span>;
<span class="synStatement">return</span> <span class="synConstant">0</span>;
}

<span class="synType">static</span> <span class="synType">int</span> my_exec(<span class="synType">void</span> * vpWork)
{
WORK * pWork = vpWork;
pWork-&#62;count = <span class="synConstant">0</span>;
printf(<span class="synConstant">&#34;count 100</span><span class="synSpecial">\n</span><span class="synConstant">&#34;</span>);
<span class="synStatement">return</span> <span class="synConstant">1</span>;
}

<span class="synType">static</span> <span class="synType">void</span> my_destroy(<span class="synType">void</span> * vpWork)
{
WORK * pWork = vpWork;
<span class="synComment">/* 特にやることないな */</span>
}

<span class="synType">void</span> count_init(<span class="synType">void</span>)
{
WORK * pWork;

pWork = job_regist(<span class="synStatement">sizeof</span>(WORK), my_watch, my_exec, my_destroy);
pWork-&#62;count = <span class="synConstant">0</span>;
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-21T01:53:21+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111218#1324175959">
<title>[COM] #プログラム大喜利 出題その(2)</title>
<link>http://d.hatena.ne.jp/big-bros/20111218#1324175959</link>
<description> Twitter 正攻法で書くとこんな感じか。 /* my_cbrt.c */ #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;math.h&#62; #define CONV_REPEAT 30 double my_cbrt(int N) { double x = N; int i; for(i = 0; i &#60; CONV_REPEAT; i++) { x = sqrt(sqrt</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/askn37/status/148224417535770624" target="_blank">Twitter</a></p>
</blockquote>
<p>正攻法で書くとこんな感じか。</p>
<pre class="syntax-highlight">
<span class="synComment">/*</span>
<span class="synComment">my_cbrt.c</span>
<span class="synComment">*/</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;math.h&#62;</span>

<span class="synPreProc">#define CONV_REPEAT  </span><span class="synConstant">30</span>

<span class="synType">double</span> my_cbrt(<span class="synType">int</span> N)
{
<span class="synType">double</span> x = N;
<span class="synType">int</span> i;

<span class="synStatement">for</span>(i = <span class="synConstant">0</span>; i &#60; CONV_REPEAT; i++) {
x = sqrt(sqrt((<span class="synType">double</span>)N * x));
}

<span class="synStatement">return</span> x;
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
<span class="synType">int</span> n = atoi(argv[<span class="synConstant">1</span>]);<span class="synComment">/* コマンドライン引数から任意の数を得る流れは手抜き */</span>

<span class="synType">double</span> x = my_cbrt(n);
printf(<span class="synConstant">&#34;cbrt(</span><span class="synSpecial">%d</span><span class="synConstant">) = </span><span class="synSpecial">%f</span><span class="synConstant"> (^3 = </span><span class="synSpecial">%f</span><span class="synConstant">)</span><span class="synSpecial">\n</span><span class="synConstant">&#34;</span>, n, x, x * x * x);

<span class="synStatement">return</span> <span class="synConstant">EXIT_SUCCESS</span>;
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-18T11:39:19+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111218#1324181670">
<title>[COM] #プログラム大喜利 出題その(3)</title>
<link>http://d.hatena.ne.jp/big-bros/20111218#1324181670</link>
<description> Twitter やることは中学校で習うレベルなので、わざわざググる程のものでもなく出来る筈。 #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;math.h&#62; #define PARAM_R 200.0f #define PARAM_THETA (M_PI / 12.0) typedef struct { double x, y; }</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/148252571587448832" target="_blank">Twitter</a></p>
</blockquote>
<p>やることは中学校で習うレベルなので、わざわざググる程のものでもなく出来る筈。</p>
<pre class="syntax-highlight">
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;math.h&#62;</span>

<span class="synPreProc">#define PARAM_R  </span><span class="synConstant">200.0f</span>
<span class="synPreProc">#define PARAM_THETA  (</span><span class="synConstant">M_PI</span><span class="synPreProc"> / </span><span class="synConstant">12.0</span><span class="synPreProc">)</span>

<span class="synType">typedef</span> <span class="synType">struct</span> {
<span class="synType">double</span> x, y;
} VEC;

<span class="synComment">/*</span>
<span class="synComment"> * 角度の単位は [rad] で与える。</span>
<span class="synComment"> */</span>
<span class="synType">void</span> polar2rect(<span class="synType">double</span> r, <span class="synType">double</span> theta, VEC * retVector)
{
retVector-&#62;x = r * cos(theta);
retVector-&#62;y = r * sin(theta);
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
VEC result;

polar2rect(PARAM_R, PARAM_THETA, &#38;result);
printf(<span class="synConstant">&#34;(</span><span class="synSpecial">%f</span><span class="synConstant">, </span><span class="synSpecial">%f</span><span class="synConstant">)</span><span class="synSpecial">\n</span><span class="synConstant">&#34;</span>, result.x, result.y);
<span class="synStatement">return</span> <span class="synConstant">EXIT_SUCCESS</span>;
}
</pre>

<p>とっても簡単。初級問題。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-18T13:14:30+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111218#1324185706">
<title>[COM][SCIENCE] #プログラム大喜利 出題その(4)</title>
<link>http://d.hatena.ne.jp/big-bros/20111218#1324185706</link>
<description> Twitter これでむしろ必要なのは、プログラムを組む前に「言葉の意味を理解する能力」と「言葉が指すものについての知識」、その上で「式を組み立てる能力」だな。要求される仕様によっては、何をおいても基礎学力が必要という例でもある。 /* gso.c */ #include &#60;stdio</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/148260567889616896" target="_blank">Twitter</a></p>
</blockquote>
<p>これでむしろ必要なのは、プログラムを組む前に「言葉の意味を理解する能力」と「言葉が指すものについての知識」、その上で「式を組み立てる能力」だな。要求される仕様によっては、何をおいても基礎学力が必要という例でもある。</p>
<pre class="syntax-highlight">
<span class="synComment">/*</span>
<span class="synComment">gso.c</span>
<span class="synComment">*/</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;math.h&#62;</span>

<span class="synPreProc">#define G </span><span class="synConstant">6.673e-11</span>

<span class="synType">double</span> GSOheight(<span class="synType">double</span> M, <span class="synType">double</span> r, <span class="synType">double</span> p)
{
<span class="synStatement">return</span> cbrt((M * G * p * p) / (<span class="synConstant">4.0</span> * <span class="synConstant">M_PI</span> * <span class="synConstant">M_PI</span>)) - r;
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
<span class="synType">double</span> h = GSOheight(<span class="synConstant">5.974e24</span>, <span class="synConstant">6378.137e3</span>, <span class="synConstant">24</span> * <span class="synConstant">60</span> * <span class="synConstant">60</span> * <span class="synConstant">364.25</span> / <span class="synConstant">365.25</span>);

printf(<span class="synConstant">&#34;GSOheight: </span><span class="synSpecial">%f</span><span class="synConstant">[km]</span><span class="synSpecial">\n</span><span class="synConstant">&#34;</span>, h / <span class="synConstant">1000.0</span>);
}
</pre>

<p>これは解説が要るかもしれんので書いてみる。</p>
<blockquote>

<ul>
<li>求めるものは「静止軌道高度」。</li>
<li>「静止軌道」は「中心天体の自転と同じ周期を持ち、天体表面から見て一点に留まっているようにみえる衛星の軌道」のこと。</li>
<li>静止軌道は必ず「赤道上空の円軌道」になる。</li>
<li>「赤道上空の円軌道」の「地上高度」は、円軌道の「半径」から「天体の赤道半径」を引いたものになる。</li>
<li>円軌道においては、中心天体の引力と、公転による遠心力が釣り合っている。</li>
<li>天体の引力：<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?F_g~=~\frac{GMm}{r^2}" class="tex" alt="F_g = ￥frac{GMm}{r^2}"> (G は「万有引力定数」)</li>
<li>遠心力：<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?F_p~=~\frac{mv^2}{r}" class="tex" alt="F_p = ￥frac{mv^2}{r}"></li>
<li>つまり、<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\frac{GMm}{r^2}~=~\frac{mv^2}{r}" class="tex" alt="￥frac{GMm}{r^2} = ￥frac{mv^2}{r}"> が成り立ち、<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?r=\frac{GM}{v^2}" class="tex" alt="r=￥frac{GM}{v^2}"></li>
<li>円軌道の「長さ」は円周の値なので <img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?~l=2\pi~r" class="tex" alt=" l=2￥pi r"></li>
<li>この軌道を速度 v で一周する時間が周期 p なので、<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?~p~=~\frac{2\pi~r}{v}" class="tex" alt=" p = ￥frac{2￥pi r}{v}"></li>
<li>つまり、連立方程式</li>
</ul>
<p><img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\begin{eqnarray}\\~\begin{cases}\\~r=\frac{GM}{v^2}~&~\\~p=\frac{2~\pi~r}{v}~&\\~\end{cases}~\\~\end{eqnarray}" class="tex" alt="￥begin{eqnarray}￥￥ ￥begin{cases}￥￥ r=￥frac{GM}{v^2} &#38; ￥￥ p=￥frac{2 ￥pi r}{v} &#38;￥￥ ￥end{cases} ￥￥ ￥end{eqnarray}"> </p>
<p>を、rについて解けば、中心天体の質量と周期から、静止軌道の半径を求める式が得られる。何を求めるかさえ分かれば、式自体は中学校の算数レベル。中学校で教えないものとしては立方根が出てくることぐらいか。</p>

<ul>
<li>求めた静止軌道半径と、天体の赤道半径をどうするかは先に述べた通り。</li>
</ul>
</blockquote>
<p>物理定数 G の値ぐらいは Wikipedia にも載ってるし Google でもすぐ調べがつくので、その程度のことは即座に調べられるのも現代のプログラマに要求される能力の一つ。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-18T14:21:46+09:00</dc:date>
<dc:subject>COM</dc:subject>
<dc:subject>SCIENCE</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111218#1324218310">
<title>[COM] #プログラム大喜利 出題その(5)</title>
<link>http://d.hatena.ne.jp/big-bros/20111218#1324218310</link>
<description> Twitter 誤答のため削除。 </description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/askn37/status/148260258341584896" target="_blank">Twitter</a></p>
</blockquote>
<p>誤答のため削除。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-18T23:25:10+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111218#1324223094">
<title>[COM] #プログラム大喜利 出題その(5) 再回答</title>
<link>http://d.hatena.ne.jp/big-bros/20111218#1324223094</link>
<description> 上記と同じ問題を再回答。 #!/usr/bin/perl my %hash = ( ’B’ =&#62; 1, ’K’ =&#62; 2**10, ’M’ =&#62; 2**20, ’G’ =&#62; 2**30, ’T’ =&#62; 2**40 ); while(&#60;STDIN&#62;) { /^￥s*([0-9￥.]*)([KMGTB])/; $sz = $1 * $hash{$2}; eval(&#34;s/^￥￥s*[0-9￥.]*[KMGTB]/&#34;</description>

<content:encoded><![CDATA[
<div class="section">
<p>上記と同じ問題を再回答。</p>
<pre class="syntax-highlight">
<span class="synPreProc">#!/usr/bin/perl</span>

<span class="synStatement">my</span> <span class="synIdentifier">%hash</span> = ( <span class="synConstant">'B'</span> =&#62; <span class="synConstant">1</span>, <span class="synConstant">'K'</span> =&#62; <span class="synConstant">2</span>**<span class="synConstant">10</span>, <span class="synConstant">'M'</span> =&#62; <span class="synConstant">2</span>**<span class="synConstant">20</span>, <span class="synConstant">'G'</span> =&#62; <span class="synConstant">2</span>**<span class="synConstant">30</span>, <span class="synConstant">'T'</span> =&#62; <span class="synConstant">2</span>**<span class="synConstant">40</span> );

<span class="synStatement">while</span>(<span class="synIdentifier">&#60;STDIN&#62;</span>) {
<span class="synStatement">/</span><span class="synConstant">^</span><span class="synSpecial">\s*(</span><span class="synConstant">[0-9</span><span class="synSpecial">\.</span><span class="synConstant">]</span><span class="synSpecial">*)([KMGTB])</span><span class="synStatement">/</span>; <span class="synIdentifier">$sz</span> = <span class="synIdentifier">$1</span> * <span class="synIdentifier">$hash</span>{<span class="synIdentifier">$2</span>};
<span class="synStatement">eval</span>(<span class="synConstant">&#34;s/^</span><span class="synSpecial">\\</span><span class="synConstant">s*[0-9</span><span class="synSpecial">\.</span><span class="synConstant">]*[KMGTB]/&#34;</span>.<span class="synIdentifier">$sz</span>.<span class="synConstant">&#34;/&#34;</span>);
<span class="synStatement">print</span> <span class="synIdentifier">$_</span>;
}
<span class="synConstant">1</span>;
</pre>

<p>上記が filter.pl ならば、</p>
<pre class="syntax-highlight">
$ <span class="synStatement">du</span> <span class="synSpecial">-h</span> * <span class="synStatement">|</span> ./filter.pl <span class="synStatement">|</span> <span class="synStatement">sort</span> <span class="synSpecial">-n</span> <span class="synSpecial">-k</span> <span class="synConstant">1</span>,<span class="synConstant">1</span>
</pre>

<p>でいけるはず。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-19T00:44:54+09:00</dc:date>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111217#1324078662">
<title>[SF][COM] プログラム大喜利</title>
<link>http://d.hatena.ne.jp/big-bros/20111217#1324078662</link>
<description> Twitter こんなツイートをした以上は自分が書かないと怒られそうなので書いてみる。 #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; void select_char(char * buf, int pos) { int i, c; if(pos == 9) { buf[pos] = ’￥0’; printf(&#34;%s￥n&#34;, buf); return; }</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://twitter.com/#!/big_bros/status/147811465980674048" target="_blank">Twitter</a></p>
</blockquote>
<p>こんなツイートをした以上は自分が書かないと怒られそうなので書いてみる。</p>
<pre class="syntax-highlight">
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>

<span class="synType">void</span> select_char(<span class="synType">char</span> * buf, <span class="synType">int</span> pos)
{
<span class="synType">int</span> i, c;

<span class="synStatement">if</span>(pos == <span class="synConstant">9</span>) {
buf[pos] = <span class="synSpecial">'\0'</span>;
printf(<span class="synConstant">&#34;</span><span class="synSpecial">%s\n</span><span class="synConstant">&#34;</span>, buf);
<span class="synStatement">return</span>;
}

<span class="synComment">// 2文字目までは連続のチェック不要</span>
<span class="synStatement">if</span>(pos &#60; <span class="synConstant">2</span>) {
<span class="synStatement">for</span>(i = <span class="synConstant">'A'</span>; i &#60;= <span class="synConstant">'Z'</span>; i++) {
buf[pos] = i;
select_char(buf, pos + <span class="synConstant">1</span>);
}
<span class="synStatement">return</span>;
}

<span class="synComment">// 直前二つが同じ文字の場合は、踏んではいけない文字を決め、</span>
<span class="synComment">// その直前までとその直後からについて処理する。ループの中でif文を使いたくないので。</span>
c = <span class="synConstant">'A'</span>;
<span class="synStatement">if</span>(buf[pos - <span class="synConstant">1</span>] == buf[pos - <span class="synConstant">2</span>]) {
c = buf[pos - <span class="synConstant">1</span>];
<span class="synStatement">for</span>(i = <span class="synConstant">'A'</span>; i &#60; c; i++) {
buf[pos] = i;
select_char(buf, pos + <span class="synConstant">1</span>);
}
c++;
}
<span class="synStatement">for</span>(i = c ; i &#60;= <span class="synConstant">'Z'</span>; i++) {
buf[pos] = i;
select_char(buf, pos + <span class="synConstant">1</span>);
}
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
<span class="synType">char</span> buf[<span class="synConstant">10</span>];

select_char(buf, <span class="synConstant">0</span>);
<span class="synStatement">return</span> <span class="synConstant">EXIT_SUCCESS</span>;
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-17T08:37:42+09:00</dc:date>
<dc:subject>SF</dc:subject>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111217#1324128104">
<title>[SF][COM] #プログラム大喜利 (その2)</title>
<link>http://d.hatena.ne.jp/big-bros/20111217#1324128104</link>
<description> 考えてみリゃループの中で if 文使ってなくても、跳んだ先の関数内でif分岐してりゃ分岐の処理数は同じなんだよな。それだったら最初からループの中でやったほうが速い。 #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; void select_char(char * buf, int pos) { </description>

<content:encoded><![CDATA[
<div class="section">
<p>考えてみリゃループの中で if 文使ってなくても、跳んだ先の関数内でif分岐してりゃ分岐の処理数は同じなんだよな。それだったら最初からループの中でやったほうが速い。</p>
<pre class="syntax-highlight">
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdio.h&#62;</span>
<span class="synPreProc">#include </span><span class="synConstant">&#60;stdlib.h&#62;</span>

<span class="synType">void</span> select_char(<span class="synType">char</span> * buf, <span class="synType">int</span> pos)
{
<span class="synType">int</span> i;

<span class="synStatement">if</span>(pos == <span class="synConstant">9</span>) {
buf[pos] = <span class="synSpecial">'\0'</span>;
printf(<span class="synConstant">&#34;</span><span class="synSpecial">%s\n</span><span class="synConstant">&#34;</span>, buf);
<span class="synStatement">return</span>;
}

<span class="synStatement">for</span>(i = <span class="synConstant">'A'</span>; i &#60; <span class="synConstant">'Z'</span>; i++) {
<span class="synStatement">if</span>(pos &#62;= <span class="synConstant">2</span> &#38;&#38; buf[pos - <span class="synConstant">1</span>] == buf[pos - <span class="synConstant">2</span>] &#38;&#38; buf[pos - <span class="synConstant">1</span>] == i) <span class="synStatement">continue</span>;
buf[pos] = i;
select_char(buf, pos + <span class="synConstant">1</span>);
}
}

<span class="synType">int</span> main(<span class="synType">int</span> argc, <span class="synType">char</span> **argv)
{
<span class="synType">char</span> buf[<span class="synConstant">10</span>];

select_char(buf, <span class="synConstant">0</span>);
<span class="synStatement">return</span> <span class="synConstant">EXIT_SUCCESS</span>;
}
</pre>

</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-17T22:21:44+09:00</dc:date>
<dc:subject>SF</dc:subject>
<dc:subject>COM</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/big-bros/20111216#1324009367">
<title>[SF][COM] 90億の神の御名 新訳</title>
<link>http://d.hatena.ne.jp/big-bros/20111216#1324009367</link>
<description> 2007-02-23 - 帰ってきた人生戦闘詳報 2007年ごろにこんなお題でプログラムチャレンジを行ったのだけど、2009年に出たクラークのベスト版では本の表題にもなっている。 90億の神の御名 (ザ・ベスト・オブ・アーサー・C・クラーク 2) (ハヤカワ文庫SF) 作者: アーサー・C・ク</description>

<content:encoded><![CDATA[
<div class="section">
<blockquote>
<p><a href="http://d.hatena.ne.jp/big-bros/20070223#1172203841" target="_blank">2007-02-23 - 帰ってきた人生戦闘詳報</a></p>
</blockquote>
<p>2007年ごろにこんなお題でプログラムチャレンジを行ったのだけど、2009年に出たクラークのベスト版では本の表題にもなっている。</p>
<p></p>
<div class="hatena-asin-detail">
  <a href="http://www.amazon.co.jp/dp/4150117195/?tag=hatena_st1-22&ascsubtag=d-daw5"><img src="http://ecx.images-amazon.com/images/I/41tMde%2BeZTL._SL160_.jpg" class="hatena-asin-detail-image" alt="90億の神の御名 (ザ・ベスト・オブ・アーサー・C・クラーク 2) (ハヤカワ文庫SF)" title="90億の神の御名 (ザ・ベスト・オブ・アーサー・C・クラーク 2) (ハヤカワ文庫SF)"></a>
  <div class="hatena-asin-detail-info">
    <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/dp/4150117195/?tag=hatena_st1-22&ascsubtag=d-daw5">90億の神の御名 (ザ・ベスト・オブ・アーサー・C・クラーク 2) (ハヤカワ文庫SF)</a></p>
    <ul>
      
      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%B5%A1%BC%A1%A6C%A1%A6%A5%AF%A5%E9%A1%BC%A5%AF" class="keyword">アーサー・C・クラーク</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C2%BC%CD%BB" class="keyword">中村融</a>,<a href="http://d.hatena.ne.jp/keyword/%B4%E4%B6%BF%BD%C5%CE%CF%2BT%2EK" class="keyword">岩郷重力+T.K</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%F5%C1%D2%B5%D7%BB%D6%A1%A6%C2%BE" class="keyword">浅倉久志・他</a></li>
      
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%E1%C0%EE%BD%F1%CB%BC" class="keyword">早川書房</a></li>
      
      <li><span class="hatena-asin-detail-label">発売日:</span> 2009/07/30</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
      <li><span class="hatena-asin-detail-label">購入</span>: 3人 <span class="hatena-asin-detail-label">クリック</span>: 15回</li>
      <li><a href="http://d.hatena.ne.jp/asin/4150117195" target="_blank">この商品を含むブログ (17件) を見る</a></li>
    </ul>
  </div>
  <div class="hatena-asin-detail-foot"></div>
</div>
<p></p>
<p>あれから4年以上経つが、今の俺ならどんなコードを書くだろうか。</p>
</div>
]]></content:encoded>
<dc:creator>big-bros</dc:creator>
<dc:date>2011-12-16T13:22:47+09:00</dc:date>
<dc:subject>SF</dc:subject>
<dc:subject>COM</dc:subject>
</item>
</rdf:RDF>

