<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>ナンクル力学系</title>
 <link href="http://arataka.github.io/atom.xml" rel="self"/>
 <link href="http://arataka.github.io/"/>
 <updated>2015-05-15T19:35:08+00:00</updated>
 <id>http://arataka.github.io/</id>
 <author>
   <name>Takafumi Arakaki</name>
   <email>aka.tkf@gmail.com</email>
 </author>

 
 <entry>
   <title>興奮・抑制均衡入門 (理論神経科学チュートリアル) のα版を公開します</title>
   <link href="http://arataka.github.io/2015/05/15/balance-tutorial-ja.html"/>
   <updated>2015-05-15T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2015/05/15/balance-tutorial-ja</id>
   <content type="html">&lt;h1 id=&quot;section&quot;&gt;興奮・抑制均衡入門 (理論神経科学チュートリアル) のα版を公開します&lt;/h1&gt;

&lt;p&gt;このページから読めます: &lt;a href=&quot;http://balance-tutorial-ja.readthedocs.org&quot;&gt;興奮・抑制均衡入門&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;まえがきに&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;理工学系の学部三年生くらいから読める, 理論神経科学のトピックの紹介を目指して書いています.  生物・神経科学や大学院レベルの数学・物理の知識は前提としない予定です.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;って書いてますがあくまで予定です…  今のところまだちゃんと用語の解説をしていなかったりするので, 理論神経科学の基本的な知識が無いと常にググり続けないと読めないかもしれません.&lt;/p&gt;

&lt;p&gt;内容は, ほぼ &lt;a href=&quot;http://dx.doi.org/10.1162/089976698300017214&quot;&gt;van Vreeswijk &amp;amp; Sompolinsky (1998)&lt;/a&gt; “Chaotic balanced state in a model of cortical circuits” の解説です.  論文に書いてない部分を埋めたり, タイポを修正したり, ロジックを再構成して分かりやすくしたり (※個人的な意見です), 基礎的な部分も付録で導いたりしています.  技術的には漸近解析, マスター方程式, 平均場近似の応用例をまとめて学べる素材 (になり得るん) じゃないかと思います (この辺, 物理学科の外に居ると学ぶのに苦労するのでは?).&lt;/p&gt;

&lt;p&gt;まだまだ書いてない部分も多いですが, それが埋まったら興奮・抑制均衡の最近の発展も紹介したいです.  例えば
&lt;a href=&quot;http://dx.doi.org/10.1126/science.1179850&quot;&gt;Renart et al. (2010)&lt;/a&gt; “The asynchronous state in cortical circuits” とか
&lt;a href=&quot;http://dx.doi.org/10.1523/JNEUROSCI.1677-11.2011&quot;&gt;Roxin et al. (2011)&lt;/a&gt; “On the Distribution of Firing Rates in Networks of Cortical Neurons”
とか.
ただ, いつ書けるかも分からないのでこの方面に興味があれば &lt;a href=&quot;http://dx.doi.org/10.1016/j.conb.2014.01.017&quot;&gt;Wolf et al. (2014)&lt;/a&gt; の素晴らしいレビューから始めるのをおすすめします.
まだチュートリアルでは書けていない, 実験やシミュレーションとの関係も載っています.&lt;/p&gt;

&lt;p&gt;このチュートリアル書いてみて実はあやふやだったり間違って理解したりしていた部分が分かって来たので, やっぱりロジックを自分の言葉で再構成するまでは理解したとは言えないのだなあと再確認しました.
あと, 用語を日本語に翻訳するのって難しい.
&lt;small&gt;なんど英語で書けば良かったと思ったことか…&lt;/small&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>matplotlib を Flask から使う方法</title>
   <link href="http://arataka.github.io/2011/10/19/mpl-on-flask.html"/>
   <updated>2011-10-19T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/10/19/mpl-on-flask</id>
   <content type="html">&lt;h1 id=&quot;matplotlib--flask-&quot;&gt;matplotlib を Flask から使う方法&lt;/h1&gt;

&lt;p&gt;この辺を参考にしたら簡単にできました:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://matplotlib.sourceforge.net/faq/howto_faq.html#matplotlib-in-a-web-application-server&quot;&gt;Matplotlib in a web application server
— Howto — Matplotlib v1.0.1 documentation
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://flask.pocoo.org/snippets/32/&quot;&gt;Upload a StringIO object with send_file | Flask (A Python Microframework)
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://flask.pocoo.org/docs/api/#flask.send_file&quot;&gt;flask.send_file — API — Flask 0.8 documentation
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;コード:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/1299670.js?file=mplonflask.py&quot;&gt;
&lt;/script&gt;

&lt;p&gt;&lt;code&gt;/image.png&lt;/code&gt; に直接アクセスすると画像が表示されるかわりにダウンロードされてしまうんだけど、なんでだろう。
Google chrome でも Firefox でもそうなってしまった。&lt;/p&gt;

&lt;p&gt;簡単に画像がブラウザから見られるのは良いんだけど、プロファイルとってみると savefig に結構な時間を食われてしまっていたので、頻繁にグラフを書き換えるような場合はキャッシュディレクトリ作って普通に画像をファイルとして吐くのが良いと思う。&lt;/p&gt;

&lt;p&gt;本当は
&lt;a href=&quot;http://werkzeug.pocoo.org/docs/contrib/cache/#cache-systems&quot;&gt;Cache System
&lt;/a&gt;
を使えれば良いんだろうけど、
&lt;a href=&quot;http://werkzeug.pocoo.org/docs/contrib/cache/#werkzeug.contrib.cache.SimpleCache&quot;&gt;SimpleCache
&lt;/a&gt;
は pickle 可能なやつしかキャッシュできないらしい…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>ENP DAYS 1日目 - PhDコースが始まりました</title>
   <link href="http://arataka.github.io/2011/09/07/enp-days-1.html"/>
   <updated>2011-09-07T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/09/07/enp-days-1</id>
   <content type="html">&lt;h1 id=&quot;enp-days-1---phd&quot;&gt;ENP DAYS 1日目 - PhDコースが始まりました&lt;/h1&gt;

&lt;p&gt;昨日書くつもりだけど書けなかったのでブログの日付を手動で設定しつつ
簡単に書いておこう。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ENP (&lt;a href=&quot;http://www.paris-neuroscience.fr/enp-uk/calls-for-proposals/index.php&quot;&gt;Ecole des Neurosciences de Paris-Ile de France
&lt;/a&gt;)
って所で神経科学の PhDコースやります。&lt;/li&gt;
  &lt;li&gt;入学式とか無いので何をもってPhDコースの始まりとするのか謎だけど、
初めのほうにある行事がこれなのできっともう始まっているんだろう。&lt;/li&gt;
  &lt;li&gt;PhDコースと言いつつ、6ヶ月の lab rotation をしてから大学院に
入学なので、まだ謎の身分ですw&lt;/li&gt;
  &lt;li&gt;6ヶ月だと思っていたら、ガイダンスのあとに同期のやつがシステムが謎だ、
もしかしたら1年 lab rotation やるんじゃないのか、とか言ってて、早くも
混乱してきたw ただ、2012年からシステム変えるよとか言う話がガイダンス
であったのでこいつはそれとごっちゃにしたんじゃないかという気もしてきた。
2日目にちゃんと聞いておこうw&lt;/li&gt;
  &lt;li&gt;ENP DAYS はこのPhDコースに居る生徒とラボのPIたちが集まる行事。&lt;/li&gt;
  &lt;li&gt;1日目は lab rotation を終えた人たちとPhDコースが終了間近な
人たちのプレゼンがあった。&lt;/li&gt;
  &lt;li&gt;PhDコース終わるころにはこのくらい年をとるんだなと分かり易いw&lt;/li&gt;
  &lt;li&gt;computational なやつと統計的なツールを駆使して解析する感じのやつは
まあまあ分かるんだけど、分子レベル/遺伝子レベルまでくる基礎的な
やつ(大半がこれだった)はちょっとというか全然わからなくて勉強不足を
再認識してもうヤバい。&lt;/li&gt;
  &lt;li&gt;1日目はオフィシャルな行事のあと、生徒会?(って書くと高校生みたいだ)
を決めるよーという PhD student だけの集まりがあってなんか盛り上がってて
おもしろかった。&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>hg out で待たされるのが苦痛なのでローカルにキャッシュしてくれる Mercurial 拡張を書いた</title>
   <link href="http://arataka.github.io/2011/09/06/hg-cached-outgoing.html"/>
   <updated>2011-09-06T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/09/06/hg-cached-outgoing</id>
   <content type="html">&lt;h1 id=&quot;hg-out--mercurial-&quot;&gt;hg out で待たされるのが苦痛なのでローカルにキャッシュしてくれる Mercurial 拡張を書いた&lt;/h1&gt;

&lt;h2 id=&quot;hg-out-&quot;&gt;&lt;code&gt;hg out&lt;/code&gt; の不満点&lt;/h2&gt;

&lt;p&gt;Git より Mercurial のほうが好きだけど、 Git のほうが勝っていると
感じる点は、この &lt;code&gt;git status&lt;/code&gt; の出力。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% git status
# On branch master
# Your branch is ahead of &#39;origin/master&#39; by 1 commit.
#
nothing to commit (working directory clean)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;この出力を見れば、 push する必要があるかどうか一目瞭然で素晴らしい。
しかもこれ、今まで何を push したかローカルリポジトリが覚えているらしく、
origin/master にアクセスせずにこの出力を返してくれる。&lt;/p&gt;

&lt;p&gt;Mercurial で同じ事をするには &lt;code&gt;hg out&lt;/code&gt; を使うんだけど、これは
行き先のリポジトリにアクセスしているっぽいので非常にまたされる。
確かにそのほうが正確な結果が分かるかもしれないけど、てっとり
早く答えが知りたいときもあるじゃん!! という訳で書いた。&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;インストール/使い方&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://bitbucket.org/tkf/hgcachedoutgoing/&quot;&gt;tkf / hgcachedoutgoing / overview — Bitbucket
&lt;/a&gt;
から
&lt;a href=&quot;https://bitbucket.org/tkf/hgcachedoutgoing/src/tip/cout.py&quot;&gt;&lt;code&gt;cout.py&lt;/code&gt;
&lt;/a&gt;
をダウンロードして、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[extensions]
cout = /path/to/cout.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;を &lt;code&gt;~/.hgrc&lt;/code&gt; に追加すると使えるはず。&lt;/p&gt;

&lt;p&gt;適当なリポジトリに行って&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hg cout
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;と打つと、 push しなければいけない change set があるかどうか教えてくれる。
デフォルトの path がどこかのリモートマシーンの場合、一度目はそこにアクセス
するので遅いけど、二度目からはキャッシュを使うので、一瞬で結果が出るはず。
&lt;code&gt;hg push&lt;/code&gt; する度にキャッシュを更新する hook を勝手に加える仕様なので、
一人で使うようのリポジトリとかだとほぼ &lt;code&gt;hg out&lt;/code&gt; の代わりに使えるんじゃないで
しょうか。&lt;/p&gt;

&lt;p&gt;初めての Mercurial 拡張なのと、リポジトリを見れば分かるけどテストが
皆無なのでバグが結構あるはず。&lt;/p&gt;

&lt;p&gt;参考:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mercurial.selenic.com/wiki/WritingExtensions&quot;&gt;WritingExtensions - Mercurial
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mercurial.selenic.com/wiki/MercurialApi&quot;&gt;MercurialApi - Mercurial
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://stackoverflow.com/questions/4274517/mercurial-extension-with-no-default-options&amp;gt;&quot;&gt;python - Mercurial Extension with no/default options - Stack Overflow
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;section-1&quot;&gt;おまけ&lt;/h2&gt;

&lt;p&gt;以下のコードを適当な名前で保存して Mercurial リポジトリ内で実行すると、
Mercurial をハックするのに必要なモジュールをインポートしつつ、
Mercurial リポジトリのインスタンス(コマンド関数に与えられる引数)
もロードしてくれた状態で ipython が始まるのですこぶる便利。&lt;/p&gt;

&lt;p&gt;Mercurialに限らず、スクリプトから ipython を実行するのっていろいろと応用
ききそう。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;IPython&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_ns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mercurial.hg&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;hg&lt;/span&gt;
    &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mercurial.ui&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mercurial&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;repo&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&amp;#39;hg&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&amp;#39;ui&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&amp;#39;repo&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;repo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;embedshell&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IPython&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Shell&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IPShellEmbed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;embedshell&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;local_ns&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_ns&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;参考:
&lt;a href=&quot;https://mybravenewworld.wordpress.com/2007/11/27/how-to-embed-an-ipython-shell-in-your-application/&quot;&gt;How to embed an IPython shell in your application | Oh Brave New World!
&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>単純固有値ってなんだっけ</title>
   <link href="http://arataka.github.io/2011/09/05/simple-eigenvalue.html"/>
   <updated>2011-09-05T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/09/05/simple-eigenvalue</id>
   <content type="html">&lt;h1 id=&quot;section&quot;&gt;単純固有値ってなんだっけ&lt;/h1&gt;

&lt;p&gt;最近とある文献を読んでいたら &lt;strong&gt;単純固有値&lt;/strong&gt; という言葉が出てきて、
「ああ縮退してない固有値って意味なんだろうな」と思いつつ、
そして文脈からもそれっぽいんだけど、不安なのでちょっとググってみた。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.sci.u-toyama.ac.jp/~fkubo/mathemat/math0024.htm&amp;gt;&quot;&gt;Online Applied Analysis with MATHEMATICA
&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;得られた固有値が互いに異なることを確認せよ． 即ち，固有値は
&lt;strong&gt;単純固有値&lt;/strong&gt; しかない．&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1336943908&amp;gt;&quot;&gt;非対称行列の左固有ベクトルと右固有ベクトルの直交性について - Yahoo!知恵袋
&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;a) 固有値が半単純な場合（重複度と同じだけ固有ベクトルが採れる場合）
   […]
b) 固有値が単純でも半単純でもない場合（重複度と同じだけ固有ベクトル
   が採れない場合）&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://www.geocities.jp/existenzueda/eigenvalue.htm&quot;&gt;固有値についてーページランクベクトルとペロン・フロベニウスの定理
&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;一般に、ペロン・フロベニウスの定理は、次の内容とされています。
非負の行列Ａが、既約であれば、 […]
② 絶対値最大の固有値は、Ａの固有方程式の単純根である。
（ｒは、 &lt;strong&gt;単純固有値&lt;/strong&gt; である。）&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;あんまり情報ねぇ… 「○○の時、固有値が単純だといいます」的な
定義がどこかに載っていることを期待していたのに。
ググってすぐ情報が出てこないとちょっとずつ不安になってくる。
←情報化社会の弊害。&lt;/p&gt;

&lt;p&gt;英語訳は 単純 = simple であってるよな? と思って調べたけど、
これまた情報が少ない。一応、&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jglobal.jst.go.jp/public/20090422/200902050372803443&quot;&gt;J-GLOBAL - Analysis of dynamica・・・ 【文献】
&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Analysis of dynamical bifurcations in the case of &lt;strong&gt;nonsimple&lt;/strong&gt; eigenvalues.
[…]
固有値が &lt;strong&gt;単純でない&lt;/strong&gt; 場合の動的２分岐の解析&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;というのを見つけたので多分当たっている。&lt;/p&gt;

&lt;p&gt;“simple eigenvalue” の定義は簡単に見つかった:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://tutorial.math.lamar.edu/Classes/LinAlg/EVals_Evects.aspx&quot;&gt;Pauls Online Notes : Linear Algebra - Eigenvalues and Eigenvectors
&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Definition 3&lt;/strong&gt;: Suppose \(A\) is an \(n \times n\)
matrix and that \(\lambda_1, \lambda_2, …, \lambda_n\) is
the complete list of all the eigenvalues of \(A\) including
repeats.  If \(\lambda\) occurs exactly once in this list then
we call a &lt;strong&gt;simple eigenvalue&lt;/strong&gt;.  If \(\lambda\) occurs
\(k \ge 2\) times in the list we say that has &lt;strong&gt;multiplicity&lt;/strong&gt; of
\(k\).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;… という訳で、 &lt;strong&gt;単純固有値&lt;/strong&gt; = &lt;strong&gt;simple eigenvalue&lt;/strong&gt; =
&lt;strong&gt;縮退していない固有値&lt;/strong&gt; でOKな模様。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;追記。&lt;/strong&gt; 他の呼び方についても知ってるだけ書いてみるか。
&lt;strong&gt;単純ではない&lt;/strong&gt;、と同様の表現は、&lt;strong&gt;退化&lt;/strong&gt;、&lt;strong&gt;重解&lt;/strong&gt;、&lt;strong&gt;重根&lt;/strong&gt;、
(&lt;strong&gt;代数的&lt;/strong&gt;)&lt;strong&gt;重複度&lt;/strong&gt;が2以上。
“重複している” みたいな表現も、もしかしたらあるのかも。&lt;/p&gt;

&lt;strike&gt;洋書で勉強してると、
たまーに日本語の文献読んだ時に用語分からなくてつれーわー&lt;/strike&gt;

&lt;p&gt;嘘ですぅぅぅぅ勉強不足ですぅぅぅひぃぃぃぃ。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Networks of the Brain (Sporns) が面白い。神経科学またはネットワーク理論好きな人にお勧め。</title>
   <link href="http://arataka.github.io/2011/08/31/brain-networks-podcast.html"/>
   <updated>2011-08-31T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/08/31/brain-networks-podcast</id>
   <content type="html">&lt;h1 id=&quot;networks-of-the-brain-sporns-&quot;&gt;Networks of the Brain (Sporns) が面白い。神経科学またはネットワーク理論好きな人にお勧め。&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0262014696/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0262014696&quot;&gt;&lt;img src=&quot;http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;amp;Format=_SL110_&amp;amp;ASIN=0262014696&amp;amp;MarketPlace=JP&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;tag=toshouldeofgi-22&amp;amp;ServiceVersion=20070822&quot; alt=&quot;Networks of the Brain (Sporns)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=0262014696&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0262014696/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0262014696&quot;&gt;Networks of the Brain (Sporns)
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;次はちょっとネットワーク理論あたりを触れておきたいと思っていたら
&lt;a href=&quot;https://plus.google.com/u/0/106551265799367505827/posts/HLRFxfayKKC&quot;&gt;David Ball - Google+ - If you like Graph Theory and Neuroscience…
&lt;/a&gt;
なるページで紹介されていた、
&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0262014696/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0262014696&quot;&gt;Networks of the Brain (Sporns)
&lt;/a&gt;
という面白そうな本を発見した。
初めの3章読んだけどなかなか良い感じ。&lt;/p&gt;

&lt;p&gt;Google+のリンクにもある通り、約1時間のポッドキャスト
(&lt;a href=&quot;http://www.brainsciencepodcast.com/bsp/brain-networks-with-olaf-sporns-bsp-74.html&quot;&gt;Brain Networks with Olaf Sporns (BSP 74) - Home - Brain Science Podcast
&lt;/a&gt;)
で著者へのインタビューが聴ける。 Transcript もあるのが素晴らしい。
この本の要約になっているので、まずはこれを聴いてみると良いかも。&lt;/p&gt;

&lt;p&gt;インタビューで面白かった点は、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;脳のネットワークは著者の知る限り Small-world 構造になっていて、
モジュラー性と機能の統合を兼ね備えている。
(これ、あんまり不思議は無いと思うけど定量的に分かってきたというのは
大きいはず。)&lt;/li&gt;
  &lt;li&gt;脳の3次元構造が大切。 ランダムなネットワークだとそもそも頭蓋骨に
収まりきらない。数キロの大きさになってしまう。
これがネットワークのトポロジーを決定していて、
もしかしたらこの拘束から自然に Small-world になっているのかも。&lt;/li&gt;
  &lt;li&gt;diffusion imaging のデータを解析していたら高密度の connection
がある領域(medial parietal cortex 内らしい)を発見した。
この領域は休息状態でも代謝が活発に行われていることなどが知られていて、
著者はここに大きなハブがあるのではと考えているらしい。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;などなど。あとは、 degeneracy
が functional homeostasis だと言ってた部分も面白かった
けど、これが脳のネットワーク理論とどう関係してるのかはちょっと
分からなかった。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/Networks-Brain-Olaf-Sporns/dp/0262014696&quot;&gt;Amazon.com のページ
&lt;/a&gt;
を見ていたら、&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“In Networks of the Brain, Olaf Sporns synthesizes two of the most
exciting topics in science today and links the latest breakthroughs
to their deep historical roots.  A graceful, authoritative, and
fascinating book.” Steven Strogatz, Schurman Professor of Applied
Mathematics, Cornell University, and author of Sync&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;… とあって、Strogatz氏(Small-world network の提唱者の一人。著書の
&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4152086262/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=4152086262&quot;&gt;SYNC
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4152086262&quot; alt=&quot;&quot; /&gt;
は日本語訳もあって有名。)
もお気に入りみたいだ。&lt;/p&gt;

&lt;p&gt;著者曰く、数式なしでイメージが沸くように解説した、というのが
若干不満だけど(数式あるほうがイメージ沸くじゃん!!)、
概観するにはいい感じの本だろうと思うのでまったりと読んでいくつもり。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>8月は少し広めに勉強していたので読んだ本をまとめる</title>
   <link href="http://arataka.github.io/2011/08/31/books-i-read-in-aug.html"/>
   <updated>2011-08-31T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/08/31/books-i-read-in-aug</id>
   <content type="html">&lt;h1 id=&quot;section&quot;&gt;8月は少し広めに勉強していたので読んだ本をまとめる&lt;/h1&gt;

&lt;p&gt;ラボが夏休みに入ると自分のペースでがっつり勉強しても良いんじゃないか、
という気になり色々と手を広げてみました。&lt;/p&gt;

&lt;h2 id=&quot;thermodynamics-of-chaotic-systems-an-introduction-beck--schlgl&quot;&gt;Thermodynamics of Chaotic Systems: An Introduction (Beck &amp;amp; Schlögl)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0521484510?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0521484510&quot;&gt;&lt;img src=&quot;http://ec2.images-amazon.com/images/I/41MFK9QG4WL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU09_.jpg&quot; alt=&quot;Thermodynamics of Chaotic Systems: An Introduction (Beck &amp;amp; Schlögl)
&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;詳しくは
&lt;a href=&quot;../23/thermo-chaos-ja.html&quot;&gt;SRB測度と自然不変測度の関係を初等的な数学で(略)
&lt;/a&gt;
にも書いた。
&lt;a href=&quot;http://tkf.bitbucket.org/thermo-chaos-ja/index.html&quot;&gt;カオスの熱力学 (勉強中)&lt;/a&gt;
でこの本を参考にしてオレオレ議論を進めた部分をまとめた。&lt;/p&gt;

&lt;h2 id=&quot;statistical-physics-of-spin-glasses-information-processing-nishimori&quot;&gt;Statistical Physics of Spin Glasses Information Processing (Nishimori)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0198509413/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0198509413&quot;&gt;&lt;img src=&quot;http://ec2.images-amazon.com/images/I/41-WdI8q62L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU09_.jpg&quot; alt=&quot;Statistical Physics of Spin Glasses Information Processing (Nishimori)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=0198509413&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;この本は、ラボの理論系セミナーで出てきた replica trick
(&lt;a href=&quot;http://ibisforest.org/index.php?%E3%83%AC%E3%83%97%E3%83%AA%E3%82%AB%E6%B3%95&quot;&gt;レプリカ法 - 機械学習の「朱鷺の杜Wiki」
&lt;/a&gt;
← 分野は違うけどやってることは同じ)
がその時はよく分からなくて悔しかったので、3章まで読んだ。
まあまあエグい(面倒だけどやれば出来る)計算が多くて楽しかったw。
↑のリンクにもあるけど、自然数に成り立つからと言って \( n \to 0 \)
の計算に使っちゃう物理なノリが大好きです(ぉぃ)。&lt;/p&gt;

&lt;p&gt;本当は、後の方の章にある perceptron の記憶容量なんかが専門に近い
(と言えば近い)部分なんだけど、まあノリ分かったし、必要な時にやればいいや。&lt;/p&gt;

&lt;h2 id=&quot;introduction-to-lebesgue-integration-wwl-chen&quot;&gt;Introduction to Lebesgue Integration (WWL Chen)&lt;/h2&gt;

&lt;p&gt;これは、
&lt;a href=&quot;http://rutherglen.science.mq.edu.au/wchen/lnilifolder/lnili.html&quot;&gt;ここから手に入る
&lt;/a&gt;
online book。&lt;/p&gt;

&lt;p&gt;あれ。なんでこれ読んだんだっけ? あ、そうだ。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;↑の Beck &amp;amp; Schlögl で良く分からない箇所があるけど、
Equilibrium States and the Ergodic Theory of Anosov Diffeomorphisms (Bowen)
読めば分かりそうだ:&lt;/p&gt;

    &lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/3540776052/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=3540776052&quot;&gt;&lt;img src=&quot;http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;amp;Format=_SL110_&amp;amp;ASIN=3540776052&amp;amp;MarketPlace=JP&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;tag=toshouldeofgi-22&amp;amp;ServiceVersion=20070822&quot; alt=&quot;Equilibrium States and the Ergodic Theory of Anosov Diffeomorphisms (Bowen)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=3540776052&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;数学が激しすぎるな… weak-* topology てなんぞー。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;お、ラボにあった Functional Analysis (Reed &amp;amp; Simon)
に weak-* topology 載ってるから、こいつで勉強しよう。&lt;/p&gt;

    &lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0125850506/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0125850506&quot;&gt;&lt;img src=&quot;https://images-na.ssl-images-amazon.com/images/I/51QwEU2KgbL._SL100_.jpg&quot; alt=&quot;I: Functional Analysis (Reed &amp;amp; Simon)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=0125850506&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Preliminaries が読めない&amp;gt;&amp;lt;!
Lebesgue 積分の説明があっさりしすぎてて、昔ちょっとやったはずなのに
思い出せない。ちょっとやっただけじゃダメだったか…&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;…って流れだったな。&lt;/p&gt;

&lt;p&gt;この本、恐ろしく平易に書かれているのですぐに読めるのですごくお勧め。
ただし、メジャーな測度論から Lebesgue 積分に入る方法ではなく、
積分から測度に入っていく方法をとっているので、他の解析学の本とセット
で使おうとすると相性が悪い。 &lt;strong&gt;って読んだ後に気づいた（笑）。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;この講義ノート
(&lt;a href=&quot;http://sss.sci.ibaraki.ac.jp/teaching/integral/integral2007.pdf&quot;&gt;ルベーグ積分速講 (山上 滋)
&lt;/a&gt;)
が多分同じスタンスで、こんなことが書いてある:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;翻って、もうひとつの方向性である「積分から測度」ですが、 […]
「積分の計算・評価が効率的かつ安全にできれば、測度論はあってもなくても
良い」といった利用者には、福音となり得るものでしょう。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;section-1&quot;&gt;脱線: 関数解析とか実解析あたり、知ってたほうが良いんだろうか&lt;/h3&gt;

&lt;p&gt;… というのが最近の悩みだったりする。
上の Bowen 本が読めなかったのもそうだし、去年は遅延微分方程式の解析
の論文を読もうとして結構苦労したし。ただ、このあたりの数学に強く
なったからと言って、どれほど神経科学におけるモデリング能力が上がる
のかは結構謎なんだよなあ。必要な論文が読めないのは困るけど、去年
は上手く回避出来たし。ただ、これからもし必要になるんだったら PhD
の初期で知ってたほうが絶対に良いよな…。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://explainingmaths.wordpress.com/g14fun-functional-analysis-2009-10/&quot;&gt;Screencasts on Functional Analysis | Explaining mathematics
&lt;/a&gt;
にある、 screencasts をみながらちょくちょく勉強するのも面白い
んじゃないかと考えたりもしている。&lt;/p&gt;

&lt;h2 id=&quot;real-analysis-royden&quot;&gt;Real analysis (Royden)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0135113555/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0135113555&quot;&gt;&lt;img src=&quot;http://ec5.images-amazon.com/images/I/51a6UkXXYbL._SL500_AA300_.jpg&quot; alt=&quot;Real analysis (Royden)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=0135113555&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;この本は3章くらいピックアップして読んで、 Bowen 本に挑戦しようと
思ったけど芋づる式に分からない所が出てきて前の方の章に引き戻されて
いくので、危険を察して今は読まないことにしたw&lt;/p&gt;

&lt;p&gt;多分、この本を読んでるあたりで
&lt;a href=&quot;../23/thermo-chaos-ja.html&quot;&gt;SRB測度と自然不変測度の関係を初等的な数学で(略)
&lt;/a&gt;
にある初等的な方法を思いついたので、今は良いか、という気分になったのだと
思われる。
ただ、↑に書いた、実解析どうしようかなーという悩みがあるし、
読もうかな…読みたいな…しかし時間が…。&lt;/p&gt;

&lt;h2 id=&quot;section-2&quot;&gt;確率と確率過程の基礎 (森 真)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/432001717X/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=432001717X&quot;&gt;&lt;img src=&quot;http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;amp;Format=_SL110_&amp;amp;ASIN=432001717X&amp;amp;MarketPlace=JP&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;tag=toshouldeofgi-22&amp;amp;ServiceVersion=20070822&quot; alt=&quot;確率と確率過程の基礎 (森 真)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=432001717X&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;決定論的な系はまあまあ勉強していたけど確率過程は苦手だった
(しかも理論神経科学はどっちもよく使う!)
のでざっくり読めそうなこの本で勉強した。&lt;/p&gt;

&lt;p&gt;こんなこと&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;これ読み終わった。確率過程は無勉強だったけど、物理で使える程度には分
かったかな。最後のほうの章は、数式にミスが増えてきて、「ああ、書いて
て疲れちゃったんだな」とか思いながら読んでた。 &amp;gt; 確率と確率過程の基礎:
森 真: 本 http://amzn.to/pWq4yf
— &lt;a href=&quot;http://twitter.com/#!/tkf/status/107441818123247616&quot;&gt;Twitter / @tkf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…や、こんなこと&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;エルゴード定理の証明が雑過ぎて読めなかったので、これに挑戦したけど2ペー
ジ目でダメだったw &amp;gt; [math/0608251] Easy and nearly simultaneous
proofs of the Ergodic … http://bit.ly/n8GurI
— &lt;a href=&quot;http://twitter.com/#!/tkf/status/107442849615851521&quot;&gt;Twitter / @tkf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;なんであれ全部自明なんだよ！みたいな。
— &lt;a href=&quot;http://twitter.com/#!/tkf/status/107443001076355073&quot;&gt;Twitter / @tkf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…を考えながら読んでた。&lt;/p&gt;

&lt;p&gt;ちなみに、 エルゴード定理の証明は
&lt;a href=&quot;http://www.math.harvard.edu/~knill/teaching/math144_1994/probability.pdf&quot;&gt;Probability and Stochastic Processes with Applications (Oliver Knil)
&lt;/a&gt;
(←PDF) を読んだらまあまあ理解できた。
まあまあなのは、いくつか理解出来ない部分があったのと、
書いてあることが理解出来ないから自分で別ルート見つけたけどこれは
あってるか自信ないぞ、という部分があったということ。
この辺の基礎的な数理物理っぽい部分はあんまりありがたみが今は理解
出来ないので、またふらりと気になった時までお預けということで。&lt;/p&gt;

&lt;p&gt;しかし、確率過程勉強してても気になる部分は力学系関連だというw&lt;/p&gt;

&lt;h2 id=&quot;section-3&quot;&gt;おまけ&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mathematik.uni-muenchen.de/~georgii/papers/Dresden.pdf&quot;&gt;Probabilistic aspects of entropy (Hans-Otto Georgii)
&lt;/a&gt;
にあった、ノイマンがシャノンにしたエントロピーに関するエピソード:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When Shannon had invented his quantity and consulted
von Neumann how to call it, von Neumann replied:
“Call it entropy. It is already in use under that name
and besides, it will give you a great edge in debates
because nobody knows what entropy is anyway.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;に感動した。
Maxwell’s Demon: Entropy, Information, Computing (H. S. Leff)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0750300574/ref=as_li_ss_il?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0750300574&quot;&gt;&lt;img src=&quot;http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;amp;Format=_SL110_&amp;amp;ASIN=0750300574&amp;amp;MarketPlace=JP&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;tag=toshouldeofgi-22&amp;amp;ServiceVersion=20070822&quot; alt=&quot;Maxwell&#39;s Demon: Entropy, Information, Computing (H. S. Leff)
&quot; /&gt;
&lt;/a&gt;
&lt;img src=&quot;http://www.assoc-amazon.jp/e/ir?t=&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=0750300574&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;からの孫引きです。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>CA certificate が invalid だと Mercurial に怒られたけど、実は google code がリポジトリのリンクを変えていたのが原因だった。</title>
   <link href="http://arataka.github.io/2011/08/30/googlecode-url.html"/>
   <updated>2011-08-30T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/08/30/googlecode-url</id>
   <content type="html">&lt;h1 id=&quot;ca-certificate--invalid--mercurial--google-code-&quot;&gt;CA certificate が invalid だと Mercurial に怒られたけど、実は google code がリポジトリのリンクを変えていたのが原因だった。&lt;/h1&gt;

&lt;p&gt;Mercurial には
&lt;a href=&quot;http://mercurial.selenic.com/wiki/Subrepository&quot;&gt;subrepository&lt;/a&gt;
といって、リポジトリをどんどんネストしていく便利な機能があるんだけど
それ関連でハマったことのメモ。&lt;/p&gt;

&lt;p&gt;ついさっき、 google code に置いてあるリポジトリを subrepository
として持っているリポジトリで &lt;code&gt;hg push&lt;/code&gt; とやると、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pushing subrepo XXX to https://XXX.googlecode.com/hg
abort: invalid certificate for XXX with fingerprint XX:XX:...(略)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;と怒られてしまう問題に遭遇。&lt;/p&gt;

&lt;p&gt;CA certificate 関連だと、この辺&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mercurial.selenic.com/wiki/CACertificates&quot;&gt;CACertificates - Mercurial
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://golang.org/doc/install.html&quot;&gt;Getting Started - The Go Programming Language
&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bitbucket.org/tortoisehg/thg/issue/63/cannot-pull-push-to-https-server-with-self&quot;&gt;tortoisehg / thg / issues / #63 - Cannot pull/push to https server
with self-signed certificate — Bitbucket
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…を参考にすれば解決するかな、と思って&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hg push --insecure
hg push --config web.cacerts=
hg push --config web.cacerts=/etc/ssl/certs/ca-certificates.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とかを色々試していたけど上手くいかない。&lt;/p&gt;

&lt;p&gt;これ、実は google code の URL が&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;https://XXX.googlecode.com/hg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;から&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;https://code.google.com/p/XXX/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;に変わっていたのが原因。なので、 &lt;code&gt;.hgsub&lt;/code&gt; の&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;XXX = https://XXX.googlecode.com/hg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;の行を&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;XXX = https://code.google.com/p/XXX/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;に変更すればOK!&lt;/p&gt;

&lt;p&gt;なんて分かりにくいエラーメッセージなんだ…
そして google code はいつの間に URL 変わったんだ…&lt;/p&gt;

&lt;p&gt;という訳で、 CA certificate 関連で怒られていると思いきや、 URL
が変わっているだけ、ってことがあるので気をつけたいですね!!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>SRB測度と自然不変測度の関係を初等的な数学で導けたのでカオスの熱力学の勉強中ノートを公開してみる</title>
   <link href="http://arataka.github.io/2011/08/23/thermo-chaos-ja.html"/>
   <updated>2011-08-23T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/08/23/thermo-chaos-ja</id>
   <content type="html">&lt;h1 id=&quot;srb&quot;&gt;SRB測度と自然不変測度の関係を初等的な数学で導けたのでカオスの熱力学の勉強中ノートを公開してみる&lt;/h1&gt;

&lt;p&gt;[&lt;img src=&quot;http://ec2.images-amazon.com/images/I/41MFK9QG4WL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU09_.jpg&quot; alt=&quot;Thermodynamics of Chaotic Systems: An Introduction (Beck &amp;amp; Schlögl)
&quot; /&gt;
][http://www.amazon.co.jp/gp/product/0521484510?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0521484510]&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://tkf.bitbucket.org/thermo-chaos-ja/index.html&quot;&gt;カオスの熱力学 (勉強中)&lt;/a&gt;
にて絶賛公開中。&lt;/p&gt;

&lt;p&gt;Beck &amp;amp; Schlögl の
&lt;a href=&quot;http://www.amazon.co.jp/gp/product/0521484510?ie=UTF8&amp;amp;tag=toshouldeofgi-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=7399&amp;amp;creativeASIN=0521484510&quot;&gt;Thermodynamics of Chaotic Systems: An Introduction
&lt;/a&gt;
に&lt;a href=&quot;http://arataka.wordpress.com/2009/02/25/mathematics-methods-of-statistical-mechanics/&quot;&gt;出会ってから
&lt;/a&gt;
早くも二年 (早い!)。
自分のやってる研究に関係無いこともあってなかなか気合を入れて読む機会
が無かったのだけど、ラボが夏休みに入って良い機会だし、と思ってここ
二週間くらいでちょくちょく読んでみた。&lt;/p&gt;

&lt;p&gt;この本、現代数学に疎くてもカオスについてかなり学べるし、(統計)熱力学的な方法を
ちゃんと勉強したこと無いからどこかでやらないとなーと思っていた自分には、
一石二鳥の本だった。&lt;/p&gt;

&lt;p&gt;ただ、この本の19章の議論の結構骨になっている部分で、「論文の結果を載せて
終わり」になっている部分があり、議論が完結していなくてとてもむずむず
していてしょうがなかった。仕方ないなーちょっと数学やりなおしてから再挑戦
かなーと思いつつ、最後の頼みの綱の前ラボの数学者の方にお伺いのメールを
送ってやりとりをしていたところ、自己解決してしまった。忙しいのにいっぱい
メールしてすいません＞＜!（ぉぃ。 やっぱり最初にクマさんぬいぐるみメソッド
を使うべきだったか…。&lt;/p&gt;

&lt;p&gt;問題だった部分は Gibbs 測度 と
&lt;a href=&quot;http://tkf.bitbucket.org/thermo-chaos-ja/gibbs-measures-and-srb-measures.html#perron-frobenius&quot;&gt;Perron-Frobenius 演算子との関係
&lt;/a&gt;
と、
&lt;a href=&quot;http://tkf.bitbucket.org/thermo-chaos-ja/gibbs-measures-and-srb-measures.html#srb&quot;&gt;SRB 測度 と 自然不変測度
&lt;/a&gt;
の関係。
リンク先に、これらの関係を初等的な数学で導く方法を書いています。
数学やってる人からだと怒られそうだけど、これくらい感覚的に分かっていない
と納得出来ないんだよなあ。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>実験データの整理用 wiki NEOrg v0.0.1 をリリースしました</title>
   <link href="http://arataka.github.io/2011/06/03/neorg-0.0.1.html"/>
   <updated>2011-06-03T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/06/03/neorg-0.0.1</id>
   <content type="html">&lt;h1 id=&quot;wiki-neorg-v001-&quot;&gt;実験データの整理用 wiki NEOrg v0.0.1 をリリースしました&lt;/h1&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm6.static.flickr.com/5261/5792936436_f8826c97e6_z.jpg&quot; alt=&quot;neorg-normal-page by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792936436/]&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pypi.python.org/pypi/neorg/0.0.1&quot;&gt;Python Package Index : neorg&lt;/a&gt;
からインストール出来ます。
まだまだかなりバギーなアルファ版ですが、私が使ってる限りバグは減っていく(はず)です。&lt;/p&gt;

&lt;p&gt;NEOrg (Numerical Simulation Organizer) は reStructuredText で書ける wiki です。
(reStructuredText については
&lt;a href=&quot;http://ja.wikipedia.org/wiki/ReStructuredText&quot;&gt;reStructuredText - Wikipedia&lt;/a&gt;
を見てください。
&lt;a href=&quot;http://sphinx.shibu.jp/&quot;&gt;Sphinx&lt;/a&gt;
のマークアップに使われてることで有名です。)&lt;/p&gt;

&lt;p&gt;reStructuredText にはディレクティブという特殊なマークアップがあります。
こんな感じです。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;directive-name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; argument(s)
   &lt;span class=&quot;nc&quot;&gt;:option:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;parameter&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:another_option:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;another_parameter&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;NEOrg は reStructuredText の基本的なディレクティブ以外に
特別なディレクティブを定義することで、
実験データを効率的に整理出来るようにしました。&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;サンプルに使ったなんちゃって実験データ&lt;/h2&gt;

&lt;p&gt;リサージュ曲線の x 軸周期, y 軸周期, 位相差を変えたグラフとそのグラフを
書くために使ったパラメタが&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lissajous/
 |-- period_x_0.20_period_y_0.20_phase_0.10/
 |   |-- data.yml
 |   `-- fig.png
 |-- period_x_0.20_period_y_0.20_phase_0.15/
 |   |-- data.yml
 |   `-- fig.png
 ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;というディレクトリ構成で保存されています。&lt;/p&gt;

&lt;h2 id=&quot;grid-images&quot;&gt;パラメタに沿って結果のグラフを並べる - &lt;code&gt;grid-images&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grid-images&lt;/code&gt; ディレクティブを使えばパラメタに沿って実験結果の画像を
並べることが出来ます。&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm6.static.flickr.com/5029/5792371931_ab3bfe79bf_z.jpg&quot; alt=&quot;neorg-grid-images by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792371931/]&lt;/p&gt;

&lt;p&gt;この表は、こんなふうに &lt;code&gt;grid-images&lt;/code&gt; ディレクティブを使って出力しました。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;grid-images&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; &lt;span class=&quot;ge&quot;&gt;*_phase_0.25/*&lt;/span&gt;.yml
   &lt;span class=&quot;nc&quot;&gt;:base:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;lissajous&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:image:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fig.png&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:param:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;period_x period_y&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;データを保存しているディレクトリから &lt;code&gt;lissajous/*_phase_0.25/*.yml&lt;/code&gt;
にマッチするファイルを選んできて、 &lt;code&gt;period_x&lt;/code&gt; と &lt;code&gt;period_y&lt;/code&gt;
を使ってソートし、同じディレクトリにある &lt;code&gt;fig.png&lt;/code&gt; を表示しています。&lt;/p&gt;

&lt;p&gt;ちなみに、パラメタは3種類以上選ぶことも可能で、こんな感じで入れ子になった
表として表示されます:&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm4.static.flickr.com/3127/5792371793_dcff925c02.jpg&quot; alt=&quot;neorg-grid-images by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792371793/]&lt;/p&gt;

&lt;p&gt;ソース:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;grid-images&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; &lt;span class=&quot;ge&quot;&gt;*/*&lt;/span&gt;.yml
   &lt;span class=&quot;nc&quot;&gt;:base:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;lissajous&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:image:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fig.png&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:param:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;period_x period_y phase&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;(一番右の入れ子になった表が少し小さくなってしまうのは
CSS どこかでミスってるからですね。 どこだろう…)&lt;/p&gt;

&lt;h2 id=&quot;table-data-and-image&quot;&gt;結果のグラフとデータを一緒に並べる - &lt;code&gt;table-data-and-image&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;実験に使ったパラメタと結果を一緒に見たい時ってありますよね。
そういう時に使うディレクティブです。&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm6.static.flickr.com/5103/5792372055_8bd35bb9a6_z.jpg&quot; alt=&quot;neorg-table-data-and-image by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792372055/]&lt;/p&gt;

&lt;p&gt;ソース:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;table-data-and-image&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; &lt;span class=&quot;ge&quot;&gt;*_period_y_0.20_phase_0.25/*&lt;/span&gt;.yml
   &lt;span class=&quot;nc&quot;&gt;:base:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;lissajous&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:image:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fig.png&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:data:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;*&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:sort:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;period_x&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:image-width:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;0:150px&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:widths:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;6 1&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:link:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;%(relpath)s&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;データを保存しているディレクトリから
&lt;code&gt;lissajous/*_period_y_0.20_phase_0.25/*.yml&lt;/code&gt; にマッチするファイルを
探してきて、全てのデータを表示し(&lt;code&gt;:data: *&lt;/code&gt;)、同時に同ディレクトリ下
にある &lt;code&gt;fig.png&lt;/code&gt; というファイルを表示しています。&lt;/p&gt;

&lt;h2 id=&quot;dictdiff&quot;&gt;データファイルの差分を表示する - &lt;code&gt;dictdiff&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;実験したのは良いけどどのパラメタを変えたんだっけ、って場合があります
よね。
そういう時に一発で分かるように差分のみを出力するディレクティブです。&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm6.static.flickr.com/5228/5792371655_dc2a7ed934_z.jpg&quot; alt=&quot;neorg-dictdiff by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792371655/]&lt;/p&gt;

&lt;p&gt;ソース:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;dictdiff&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; &lt;span class=&quot;ge&quot;&gt;*_phase_0.25/*&lt;/span&gt;.yml
   &lt;span class=&quot;nc&quot;&gt;:base:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;lissajous&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:sort:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;phase_x phase_y&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:exclude:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;datadir&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;データファイルを保存しているディレクトリから
&lt;code&gt;lissajous/*_phase_0.25/*.yml&lt;/code&gt; にマッチするファイルを
探してきて、 &lt;code&gt;datadir&lt;/code&gt; 以外のキーで異なる値を持つデータを、
&lt;code&gt;phase_x&lt;/code&gt; と &lt;code&gt;phase_y&lt;/code&gt; でソートして表示しています。&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;テンプレートページ&lt;/h2&gt;

&lt;p&gt;ディレクティブ以外の NEOrg の重要な機能にテンプレートページがあります。
テンプレートページとはそのURLに &lt;code&gt;_temp_&lt;/code&gt; を含むページです。
例えば、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/my/page/_temp_/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;はテンプレートページで、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/my/page/2011-06-03-094741/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;という URL でアクセスすると、自動的に &lt;code&gt;/my/page/_temp_/&lt;/code&gt; が呼び出されて
新しいページが動的に生成されます。
生成されたページは、例えばこんな感じになります:&lt;/p&gt;

&lt;p&gt;[&lt;img src=&quot;http://farm6.static.flickr.com/5264/5792376775_37dd9714a3_b.jpg&quot; alt=&quot;neorg-template-page by takafumi_a, on Flickr
&quot; /&gt;
][http://www.flickr.com/photos/arataka/5792376775/]&lt;/p&gt;

&lt;p&gt;このページは、 &lt;code&gt;lissajous/period_x_0.50_period_y_0.20_phase_0.25/&lt;/code&gt;
にアクセスした時にテンプレートページ &lt;code&gt;lissajous/_temp_/&lt;/code&gt;
から生成されました。
テンプレートページの中身は以下です。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rst&quot; data-lang=&quot;rst&quot;&gt;&lt;span class=&quot;gh&quot;&gt;Result of ``{{ args[0] }}``&lt;/span&gt;
&lt;span class=&quot;gh&quot;&gt;==============================================================&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;table-data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; /*.yml
   &lt;span class=&quot;nc&quot;&gt;:data:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;*&lt;/span&gt;
   &lt;span class=&quot;nc&quot;&gt;:trans:&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;find-images&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt; *.png
   &lt;span class=&quot;nc&quot;&gt;:base:&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;{{ path }}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;ソース中にある &lt;code&gt;{{ args[0] }}&lt;/code&gt; と &lt;code&gt;{{ path }}&lt;/code&gt;
は、ページが生成される時に&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{{ args[0] }} --&amp;gt; period_x_0.50_period_y_0.20_phase_0.25
{{ path }}    --&amp;gt; lissajous/period_x_0.50_period_y_0.20_phase_0.25/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;のように置換され、上のようなページが表示されます。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Sphinx/Docutils で表計算をするための拡張 reStructuredSpreadsheet を書きました</title>
   <link href="http://arataka.github.io/2011/05/17/rstspreadsheet-0.1.html"/>
   <updated>2011-05-17T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/17/rstspreadsheet-0.1</id>
   <content type="html">&lt;h1 id=&quot;sphinxdocutils--restructuredspreadsheet-&quot;&gt;Sphinx/Docutils で表計算をするための拡張 reStructuredSpreadsheet を書きました&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://pypi.python.org/pypi/rstspreadsheet/&quot;&gt;Python Package Index : rstspreadsheet&lt;/a&gt;
にあります。
ここに書いてある例が出来ることのすべてです。
セルの値を計算する式は Python で書きます。
なので、 Python で出来ることは全てできます!!
ただしエラー処理をまったくやっていないので注意して使ってね☆(ぉ&lt;/p&gt;

&lt;p&gt;(危なっかしいのでちゃんとエラー処理してくれ…とか要望あればコメントください。)&lt;/p&gt;

&lt;p&gt;ちょとしたレポートを書く時に sphinx は便利で、
&lt;a href=&quot;http://matplotlib.sourceforge.net/sampledoc/extensions.html#inserting-matplotlib-plots&quot;&gt;matplotlib の plot directive&lt;/a&gt;
を使うとレポートのビルドとプロットを一緒にやってくれてすごく嬉しい。
ただ、理論式に色々と値をぶちこんでみるときに使えそうな拡張が無かった。
なので作りましたとさ。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Docutils の table node を作る例</title>
   <link href="http://arataka.github.io/2011/05/15/docutils-table.html"/>
   <updated>2011-05-15T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/15/docutils-table</id>
   <content type="html">&lt;h1 id=&quot;docutils--table-node-&quot;&gt;Docutils の table node を作る例&lt;/h1&gt;

&lt;p&gt;Docutils は python のドキュメントを書くのに使われているのに、
そのドキュメント自体はあまり書かれてなくて
&lt;a href=&quot;http://docutils.sourceforge.net/docs/howto/rst-directives.html&quot;&gt;“Use the Source, Luke!” なんておっしゃる&lt;/a&gt;
のでがんばってソースを読まないと使い方がよく分からない。&lt;/p&gt;

&lt;p&gt;勝手に table を作ってくれるオレオレ directive を作りたいなーと思ったので書いてみた例です。
&lt;code&gt;my-table-2x2&lt;/code&gt; という何の意味もない directive を作ってみました。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/973504.js&quot;&gt;
&lt;/script&gt;

</content>
 </entry>
 
 <entry>
   <title>MathJax を導入。</title>
   <link href="http://arataka.github.io/2011/05/14/try-mathjax.html"/>
   <updated>2011-05-14T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/14/try-mathjax</id>
   <content type="html">&lt;h1 id=&quot;mathjax-&quot;&gt;MathJax を導入。&lt;/h1&gt;

&lt;p&gt;MathJax は、
&lt;code&gt;\\( \exp(i \pi) = -1 \\)&lt;/code&gt; と書くと \( \exp(i \pi) = -1 \) が、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$$
  I(t) := \lim_{\Delta t \to 0} \frac{1}{\Delta t}
  \int_{t}^{t+\Delta t} J \sum_{f} \delta(s - t^{(f)}) ds
$$
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;と書くと&lt;/p&gt;

&lt;script type=&quot;math/tex; mode=display&quot;&gt;
  I(t) := \lim_{\Delta t \to 0} \frac{1}{\Delta t}
  \int_{t}^{t+\Delta t} J \sum_{f} \delta(s - t^{(f)}) ds
&lt;/script&gt;

&lt;p&gt;が表示されるライブラリー!!&lt;/p&gt;

&lt;p&gt;(もうひとつの displayed math 用の表記 &lt;code&gt;\[...\]&lt;/code&gt; は markdown
のマークアップとかぶって使えなかった。)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mathjax.org/docs/1.1/platforms/index.html&quot;&gt;インストール方法&lt;/a&gt;
は
&lt;a href=&quot;https://github.com/arataka/arataka.github.com/commit/8d1767b48230e0d7beab36ccbfdb319601a050d1&quot;&gt;恐ろしく簡単&lt;/a&gt;
でした。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mathjax.org/resources/browser-compatibility/&quot;&gt;大抵のブラウザ&lt;/a&gt;
で動いて、
&lt;a href=&quot;http://www.mathjax.org/demos/scaling-math/&quot;&gt;数式がスケール&lt;/a&gt;
して、
&lt;a href=&quot;http://www.mathjax.org/demos/copy-and-paste/&quot;&gt;コピペ&lt;/a&gt;
出来るらしいです。
すげー。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Python と Haskell の import の書き方対応表</title>
   <link href="http://arataka.github.io/2011/05/09/python-haskell-import-matrix.html"/>
   <updated>2011-05-09T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/09/python-haskell-import-matrix</id>
   <content type="html">&lt;h1 id=&quot;python--haskell--import-&quot;&gt;Python と Haskell の import の書き方対応表&lt;/h1&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Python&lt;/th&gt;
      &lt;th&gt;Haskell&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;from Module import *&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;import Module&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;from Module import func1, func2&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;import Module (func1, func2)&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;&lt;code&gt;import Module hiding (func)&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;import Module&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;import qualified Module&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code&gt;import Module as M&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;import qualified Module as M&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;かな?
(&lt;a href=&quot;http://learnyouahaskell.com/modules&quot;&gt;Learn You a Haskell for Great Good! - Modules&lt;/a&gt;)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Numpy の浮動小数点エラーの扱い方を選ぶための nose プラグイン</title>
   <link href="http://arataka.github.io/2011/05/05/nose-numpyseterr-0.1.html"/>
   <updated>2011-05-05T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/05/nose-numpyseterr-0.1</id>
   <content type="html">&lt;h1 id=&quot;numpy--nose-&quot;&gt;Numpy の浮動小数点エラーの扱い方を選ぶための nose プラグイン&lt;/h1&gt;

&lt;p&gt;折角シミュレーション用プログラムのテストを書いても浮動小数点エラーを見逃してしまっていたら悲しいですよね。
というわけで、書きました:
&lt;a href=&quot;http://pypi.python.org/pypi/nose-numpyseterr&quot;&gt;Python Package Index : nose-numpyseterr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;インストール方法:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;easy_install nose-numpyseterr  # または、
pip install nose-numpyseterr
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;section&quot;&gt;使い方&lt;/h2&gt;

&lt;p&gt;Numpy の浮動小数点エラーの取扱いは
&lt;a href=&quot;http://docs.scipy.org/doc/numpy/reference/generated/numpy.seterr.html&quot;&gt;numpy.seterr — NumPy Manual (DRAFT)&lt;/a&gt;
を見てください。&lt;/p&gt;

&lt;p&gt;多分デフォルトでは &lt;code&gt;&#39;ignore&#39;&lt;/code&gt; か &lt;code&gt;&#39;print&#39;&lt;/code&gt; です。
手元の Ubuntu だと &lt;code&gt;all=&#39;ignore&#39;&lt;/code&gt; で、野良ビルドした numpy だと &lt;code&gt;under&lt;/code&gt; だけ &lt;code&gt;&#39;ignore&#39;&lt;/code&gt; で他は &lt;code&gt;&#39;print&#39;&lt;/code&gt; でした(何で違うんだろ??)。
浮動小数点エラーの取扱いが &lt;code&gt;&#39;ignore&#39;&lt;/code&gt; だと、例えば&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;numpy&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_divide&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;
    &lt;span class=&quot;mf&quot;&gt;1.0&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;numpy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;を &lt;code&gt;test_divide.py&lt;/code&gt; という名前で保存して テストすると&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% nosetests test_divide.py
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;のように何事もなかったかのようにパスするはずです。&lt;/p&gt;

&lt;p&gt;テストはパスして欲しいけど、浮動小数点エラーが起こったかどうかは確認したい場合は、 &lt;code&gt;--npe-all=print&lt;/code&gt; をつけます:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% nosetests --npe-all=print test_divide.py
Warning: divide by zero encountered in divide
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;もうちょい詳しい情報が知りたいなら、 &lt;code&gt;--npe-all=warn&lt;/code&gt; を使います。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% nosetests --npe-all=warn test_divide.py
test_divide.py:4: RuntimeWarning: divide by zero encountered in divide
  1.0 / numpy.array([0])
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ただ、同じ場所のエラーは一度しか表示されません。&lt;/p&gt;

&lt;p&gt;Python のエラーとして扱って欲しい場合は &lt;code&gt;--npe-all=raise&lt;/code&gt; を使います。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% nosetests --npe-all=raise test_divide.py
E
======================================================================
ERROR: test_divide.test_divide
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;.../lib/python2.6/site-packages/nose/case.py&quot;, line 186, in runTest
    self.test(*self.arg)
  File &quot;.../test_divide.py&quot;, line 4, in test_divide
    1.0 / numpy.array([0])
FloatingPointError: divide by zero encountered in divide

----------------------------------------------------------------------
Ran 1 test in 0.017s

FAILED (errors=1)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;あとは
&lt;a href=&quot;http://pypi.python.org/pypi/nose-pudb/&quot;&gt;nose-pudb&lt;/a&gt;
で
&lt;a href=&quot;http://pypi.python.org/pypi/pudb&quot;&gt;pudb&lt;/a&gt;
に落としてデバッグすれば良いんじゃないでしょうか。&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;中身&lt;/h2&gt;

&lt;p&gt;驚くほどシンプルですw&lt;/p&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/nose-numpyseterr/src/e4981340d1b5/nosenumpyseterr.py?embed=t&quot;&gt;
&lt;/script&gt;

&lt;h2 id=&quot;section-2&quot;&gt;落とし穴&lt;/h2&gt;

&lt;p&gt;単純な実装なので、テストコードの中で &lt;code&gt;numpy.seterr&lt;/code&gt; を使っていると多分上手くうごきません。
もうちょっと書き足せばどうにかなるはずなので、直してよ!って人がいたらコメント等で連絡下さい。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>パラメタの組み合わせを一気に走らせるメタコマンド (マルチプロセス対応)</title>
   <link href="http://arataka.github.io/2011/05/04/meta-command-with-multiprocessing.html"/>
   <updated>2011-05-04T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/05/04/meta-command-with-multiprocessing</id>
   <content type="html">&lt;h1 id=&quot;section&quot;&gt;パラメタの組み合わせを一気に走らせるメタコマンド (マルチプロセス対応)&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://d.hatena.ne.jp/ny23/20110416/p1&quot;&gt;メタコマンド実行スクリプトを Python で書いてみた - ny23の日記&lt;/a&gt;
に触発されて、使ってたスクリプトをちょっと強化したバージョン(&lt;code&gt;metarun.py&lt;/code&gt;)を晒してみる。&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;使い方&lt;/h2&gt;

&lt;p&gt;こんな感じでパラメタの全組み合わせ(直積)を走らせてくれる。
&lt;code&gt;--dry-run&lt;/code&gt; (&lt;code&gt;-n&lt;/code&gt;) オプションで実際に走らせるコマンドを表示してみる:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% metarun.py --dry-run echo param-a=1,2 param-b=x,y
echo --param-a 1 --param-b x
echo --param-a 1 --param-b y
echo --param-a 2 --param-b x
echo --param-a 2 --param-b y
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;実際に走らせるとこんな感じ:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% metarun.py echo param-a=1,2 param-b=x,y          
echo --param-a 1 --param-b x
--param-a 1 --param-b x
echo --param-a 1 --param-b y
--param-a 1 --param-b y
echo --param-a 2 --param-b x
--param-a 2 --param-b x
echo --param-a 2 --param-b y
--param-a 2 --param-b y
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;元のコマンドも表示される仕様でウザいけど気にしない（ぉ&lt;/p&gt;

&lt;p&gt;&lt;code&gt;--format&lt;/code&gt; (&lt;code&gt;-f&lt;/code&gt;) オプションで、 &lt;code&gt;%(a)s&lt;/code&gt; みたいな Python の文字列フォーマットが使える。
パラメタにあわせてデータを吐く場所を変える時とかに使う。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;metarun.py -nf &#39;python script.py -a %(a)s -b %(b)s --data=data/%(b)s%(a)s&#39; a=1,2 b=x,y
python script.py -a 1 -b x --data=data/x1
python script.py -a 1 -b y --data=data/y1
python script.py -a 2 -b x --data=data/x2
python script.py -a 2 -b y --data=data/y2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;複数プロセスを使うときは、 &lt;code&gt;--processes&lt;/code&gt; (&lt;code&gt;-p&lt;/code&gt;) オプションでプロセス数を指定。
普通に動かすと3秒かかるジョブが、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% time tools/metarun.py -f &#39;sleep %(sec)s&#39; sec=1,1,1
sleep 1
sleep 1
sleep 1
tools/metarun.py -f &#39;sleep %(sec)s&#39; sec=1,1,1
0.09s user 0.03s system 3% cpu 3.123 total
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;-p 3&lt;/code&gt; をつけると1秒で終わりました!:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% time tools/metarun.py -f &#39;sleep %(sec)s&#39; sec=1,1,1 -p 3
sleep 1
sleep 1
sleep 1
tools/metarun.py -f &#39;sleep %(sec)s&#39; sec=1,1,1 -p 3
0.10s user 0.07s system 14% cpu 1.143 total
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;この例だとジョブの数とプロセス数が等しいけど、ジョブの数が多い場合でも
&lt;a href=&quot;http://docs.python.org/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool&quot;&gt;multiprocessing.Pool&lt;/a&gt;
が勝手に空いたプロセスでどんどんジョブを実行してくれるはず。
multiprocessing モジュールすばらしい!!&lt;/p&gt;

&lt;h2 id=&quot;metarunpy&quot;&gt;&lt;code&gt;metarun.py&lt;/code&gt;&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/953918.js?file=metarun.py&quot;&gt;
&lt;/script&gt;

</content>
 </entry>
 
 <entry>
   <title>icc でコンパイルした共有ライブラリって gcc でコンパイルされたプログラムから使えないのか!</title>
   <link href="http://arataka.github.io/2011/04/28/icc-so-cannot-used-from-gcc-python.html"/>
   <updated>2011-04-28T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/28/icc-so-cannot-used-from-gcc-python</id>
   <content type="html">&lt;h1 id=&quot;icc--gcc-&quot;&gt;icc でコンパイルした共有ライブラリって gcc でコンパイルされたプログラムから使えないのか!&lt;/h1&gt;

&lt;p&gt;つまり普通の gcc でコンパイルされた Python からは、拡張モジュールとしても ctypes を通しても使えないってことかー!&lt;/p&gt;

&lt;p&gt;… という訳で、&lt;a href=&quot;../27/strange-ctypes-icc-segfault.html&quot;&gt;昨日悩んでいた問題&lt;/a&gt;は解決してしまった模様。
&lt;a href=&quot;http://stackoverflow.com/questions/5809337/segfault-occurs-when-my-shared-library-is-optimized-by-icc-o3-or-o2-and-used-vi&quot;&gt;numpy - Segfault occurs when my shared library is optimized by icc -O3 or -O2 and used via Python ctypes - Stack Overflow&lt;/a&gt;
で質問したらtalonmiesさんという方が瞬殺してくれました。ありがとう!
Stack Overflow 初めて使ったけど、良いシステムですね。&lt;/p&gt;

&lt;p&gt;この問題はシミュレーションやってる人には結構深刻だよなあ。
解決するにはふたつ方法がある:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Python とか Numpy とか、関連するモジュールを全部 icc でビルドする。&lt;/li&gt;
  &lt;li&gt;シミュレーションプログラムを単体で動くように全部書き換えて Python とはパイプやファイル経由でデータをやりとりする。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;どっちも厳しいな…
前者(1)はそもそもコンパイル通せるのかという問題と、コンパイラが違うバージョンのPythonをどう共存させるかって問題がある。
prefix オプションで違う場所にインストールする感じになるんだろうか。
あとその場合って virtualenv で管理出来るんだろうか。&lt;/p&gt;

&lt;p&gt;後者(2)はそもそもその方法をやるのが嫌でPythonのC拡張やらctypesやらに手を出してきた経緯があるので、この便利さを知ったあとでそっちに戻るのは悲しい。
堅実な方法ではあるのだけど。&lt;/p&gt;

&lt;p&gt;残る疑問は、Stack Overflowでもコメントに書いたけど以下の2点:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;gcc とは関係なく実行出来るはずの pypy がなんで C のライブラリを読み込む ctypes を実装出来ているのか。
(&lt;a href=&quot;http://codespeak.net/pypy/dist/pypy/doc/ctypes-implementation.html&quot;&gt;PyPy’s ctypes implementation — PyPy v1.5-alpha documentation&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;gcc とは関係なく実行出来るはずの Haskell のライブラリを Python の ctypes から読み込むことが出来るのはなぜか。
(&lt;a href=&quot;http://wiki.python.org/moin/PythonVsHaskell&quot;&gt;PythonVsHaskell - PythonInfo Wiki&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://ja.wikipedia.org/wiki/Executable_and_Linkable_Format&quot;&gt;ELF&lt;/a&gt; やら
&lt;a href=&quot;http://ja.wikipedia.org/wiki/Application_Binary_Interface&quot;&gt;ABI&lt;/a&gt; やら
知らなかったキーワードが出てきたので、もうちょっと調べる必要がありそうだ。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>icc で最適化(-O2)かけた共有ライブラリを ctypes から使うと segfault してしまうことがあって困っている</title>
   <link href="http://arataka.github.io/2011/04/27/strange-ctypes-icc-segfault.html"/>
   <updated>2011-04-27T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/27/strange-ctypes-icc-segfault</id>
   <content type="html">&lt;h1 id=&quot;icc--o2-ctypes--segfault-&quot;&gt;icc で最適化(-O2)かけた共有ライブラリを ctypes から使うと segfault してしまうことがあって困っている&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;追記&lt;/strong&gt;: &lt;a href=&quot;../28/icc-so-cannot-used-from-gcc-python.html&quot;&gt;icc でコンパイルした共有ライブラリって gcc でコンパイルされたプログラムから使えないのか!&lt;/a&gt; ということで一応解決(=どうにもなならないことが分かったw)。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;この不具合が出るコードは最適化なしの icc や、 gcc だと最適化していても、そんな不具合は出ないしユニットテストも通しているので、自分のコードにあるバグでは無い気がする。&lt;/p&gt;

&lt;p&gt;ちなみに不具合起こすコードセットは
&lt;a href=&quot;https://bitbucket.org/tkf/ctypes_icc/src&quot;&gt;tkf / ctypes_icc / source – Bitbucket&lt;/a&gt;
で管理しています。&lt;/p&gt;

&lt;p&gt;自分のコードのミスでは無いとは思っていても、糞みたいなミスのせいだと良いなあ、だれか指摘してくれないかなあ、とか淡い期待を抱いています←ぉぃ&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;悩みどころ&lt;/h2&gt;

&lt;p&gt;このコードは、今研究で使っているシミュレーション用のコードを icc で動くか試していたら出会ってしまったもの。
そのコードは ctypes を直接使わずに
&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc-ja/index.html&quot;&gt;RailGun&lt;/a&gt;
を使っていたので、RailGunなしでこの挙動を再現しようとして作ったのが↓のコードです。&lt;/p&gt;

&lt;p&gt;悩みどころなのは、&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ユニットテストは通しているとはいえ、 segfault するようなコードで研究続けるのが凄く気持ち悪い。&lt;/li&gt;
  &lt;li&gt;マシンによって segfault したりしなかったりして再現性が無いので python か intel にバグ報告するのも躊躇する。自分のマシンでしか起こらないような不具合って報告しても良いものか…。&lt;/li&gt;
  &lt;li&gt;cypesを介さないでCだけでプログラムを書くとこの不具合が再現できないので、valgrindというツールを使おうとしたんだけどCPython側の処理がうじゃうじゃでてきてついていけない。&lt;/li&gt;
  &lt;li&gt;最適化かけないと起こらない不具合なのでデバッガ(idb/gdb)で見ても意味不明…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…などなど。
もっとCのスキルがあれば、あとは機械語読めたりすれば、頑張りようがあるんだろうか。&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;ソース&lt;/h2&gt;

&lt;p&gt;以下の &lt;code&gt;strange.c&lt;/code&gt; と &lt;code&gt;run.py&lt;/code&gt; を準備して&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;icc -O3  -Wall -std=c99 -shared strange.c -o libstrange.so
python run.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ってやると、 segfault を起こす (マシンもある)。&lt;/p&gt;

&lt;h3 id=&quot;strangec&quot;&gt;&lt;code&gt;strange.c&lt;/code&gt;&lt;/h3&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/ctypes_icc/src/456006b3ceaa/strange.c?embed=t&quot;&gt;
&lt;/script&gt;

&lt;h3 id=&quot;runpy&quot;&gt;&lt;code&gt;run.py&lt;/code&gt;&lt;/h3&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/ctypes_icc/src/456006b3ceaa/run.py?embed=t&quot;&gt;
&lt;/script&gt;

&lt;h2 id=&quot;icc--o23--segfault&quot;&gt;&lt;code&gt;icc -O{2,3}&lt;/code&gt; だと segfault&lt;/h2&gt;

&lt;p&gt;コンパイラとフラグを網羅的に変えて試すと、 &lt;code&gt;python run.py&lt;/code&gt; の終了コードは&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gcc -O0: 0
gcc -O1: 0
gcc -O2: 0
gcc -O3: 0
icc -O0: 0
icc -O1: 0
icc -O2: 139
icc -O3: 139
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;という感じなので、どうやら &lt;code&gt;icc -O{2,3}&lt;/code&gt; のみで segfault が起こるみたい。&lt;/p&gt;

&lt;h2 id=&quot;section-2&quot;&gt;マシン毎で違う挙動&lt;/h2&gt;

&lt;p&gt;3つのPCでの挙動を調べたらそれぞれ違っていたので、比較のためにスペックと挙動をまとめてみるとこんな感じになった:&lt;/p&gt;

&lt;table&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th&gt;デスクトップA&lt;/th&gt;
    &lt;th&gt;ラップトップ&lt;/th&gt;
    &lt;th&gt;デスクトップB&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;このポストのコード&lt;/th&gt;
    &lt;td&gt;不具合でる&lt;/td&gt;
    &lt;td&gt;でない&lt;/td&gt;
    &lt;td&gt;でない&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;シミュレーション用のコード&lt;/th&gt;
    &lt;td&gt;不具合でる&lt;/td&gt;
    &lt;td&gt;不具合でる&lt;/td&gt;
    &lt;td&gt;でない&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;&lt;code&gt;uname -m&lt;/code&gt;&lt;/th&gt;
    &lt;td&gt;i868&lt;/td&gt;
    &lt;td&gt;i868&lt;/td&gt;
    &lt;td&gt;x86_64&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;OS (&lt;code&gt;lsb_release -a&lt;/code&gt;)&lt;/th&gt;
    &lt;td&gt;Ubuntu 10.04.2 LTS&lt;/td&gt;
    &lt;td&gt;Ubuntu 10.10&lt;/td&gt;
    &lt;td&gt;Scientific Linux SL release 5.5 (Boron)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;icc version&lt;/th&gt;
    &lt;td&gt;12.0.0 20101006&lt;/td&gt;
    &lt;td&gt;12.0.3 20110309&lt;/td&gt;
    &lt;td&gt;12.0.0 20101006&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;Python version&lt;/th&gt;
    &lt;td&gt;2.6.5&lt;/td&gt;
    &lt;td&gt;2.6.6&lt;/td&gt;
    &lt;td&gt;2.6.5&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;Numpy version&lt;/th&gt;
    &lt;td&gt;1.3.0&lt;/td&gt;
    &lt;td&gt;1.3.0&lt;/td&gt;
    &lt;td&gt;1.5.0b1&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
</content>
 </entry>
 
 <entry>
   <title>PythonとCで数値計算をやる人のためのライブラリ RailGun v0.1.6 をリリースしてついでに日本語ドキュメントを充実させました</title>
   <link href="http://arataka.github.io/2011/04/17/railgun-v0.1.6.html"/>
   <updated>2011-04-17T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/17/railgun-v0.1.6</id>
   <content type="html">&lt;h1 id=&quot;pythonc-railgun-v016-&quot;&gt;PythonとCで数値計算をやる人のためのライブラリ RailGun v0.1.6 をリリースしてついでに日本語ドキュメントを充実させました&lt;/h1&gt;

&lt;p&gt;RailGun ってなんだ、っ人てはとりあず
&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc-ja/index.html&quot;&gt;ドキュメント&lt;/a&gt;
の一番上にある例を見てみて下さい!&lt;/p&gt;

&lt;p&gt;色々と機能が強化されています:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;メモリのアロケーションをC拡張で書き直してかなり高速化されました。&lt;/li&gt;
  &lt;li&gt;Cの構造体メンバと関数をグループ分け(サブセット)出来るようにしました。
これで、デバッグ用のみに巨大な配列を用意したいけど普段はそんなにメモリ
使いたくない! みたいなケースに対応出来ます。&lt;/li&gt;
  &lt;li&gt;Cの構造体のメンバに別の(あるいは自分の)構造体またはそのポインタを
使えるようになりました。これでかなり自由度が上がったはずです。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc-ja/index.html&quot;&gt;日本語ドキュメント&lt;/a&gt;
を充実させました。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ドキュメントは、分かりにくい所が多いのでサンプルを増やしていきたいです。
Matplotlib の sphinx 拡張を使って自動的にサンプルページにグラフを埋め込める
ようになった
(&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc/samples/index.html&quot;&gt;Samples — RailGun documentation&lt;/a&gt;)
のが楽しいので、にこれからどんどん追加されていく、はず。&lt;/p&gt;

&lt;p&gt;ご意見・バグレポート等あればコメントまで!!&lt;/p&gt;

&lt;p&gt;リンク:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc-ja/index.html&quot;&gt;RailGunのドキュメントへようこそ! — RailGun documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://tkf.bitbucket.org/railgun-doc/index.html&quot;&gt;Welcome to RailGun’s documentation! — RailGun documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bitbucket.org/tkf/railgun/src&quot;&gt;tkf / railgun / source – Bitbucket&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bitbucket.org/tkf/railgun/issues&quot;&gt;tkf / railgun / issues – Bitbucket&lt;/a&gt; (バグ報告)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://pypi.python.org/pypi/railgun/&quot;&gt;Python Package Index : railgun&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>GitHubのページを開くためのコマンド</title>
   <link href="http://arataka.github.io/2011/04/17/open-github-from-terminal.html"/>
   <updated>2011-04-17T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/17/open-github-from-terminal</id>
   <content type="html">&lt;h1 id=&quot;github&quot;&gt;GitHubのページを開くためのコマンド&lt;/h1&gt;

&lt;p&gt;Gitのワーキングディレクトリに居る時にGitHubのプロジェクトページを開くためのコマンドです。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;gith&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;$(git remote -v 2&amp;gt;/dev/null | grep &amp;#39;github.com&amp;#39; | head -1)&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;URL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;https://&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$P&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; sed -r &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
        -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;s|.*[\t ](.*)[\t ].*|\1|&amp;#39;&lt;/span&gt; -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;s|\.git$||&amp;#39;&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
        -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;s|https?://||&amp;#39;&lt;/span&gt; -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;s|:|/|&amp;#39;&lt;/span&gt; -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;s|^[a-z]*@||&amp;#39;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;[[&lt;/span&gt; -n &lt;span class=&quot;nv&quot;&gt;$URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; gnome-open &lt;span class=&quot;nv&quot;&gt;$URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;No GitHub path found!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ubuntu 上の zsh で動きます． bash でも動くと思いますが、未確認。
&lt;code&gt;gnome-open&lt;/code&gt; の部分を変更すれば、Macとかでも動くはず。&lt;/p&gt;

&lt;p&gt;元ネタ: &lt;a href=&quot;http://hgtip.com/tips/advanced/2009-10-08-open-bitbucket-from-bash/&quot;&gt;Open BitBucket from Bash / hg tip&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Anything.elライクなCUIのzaw.zshやcanythingをMendeleyやgistyやz(もしくはj)と使う設定</title>
   <link href="http://arataka.github.io/2011/04/14/zaw-zsh-or-canything-with-mendeley-gisty-and-j-z.html"/>
   <updated>2011-04-14T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/14/zaw-zsh-or-canything-with-mendeley-gisty-and-j-z</id>
   <content type="html">&lt;h1 id=&quot;anythingelcuizawzshcanythingmendeleygistyzj&quot;&gt;Anything.elライクなCUIのzaw.zshやcanythingをMendeleyやgistyやz(もしくはj)と使う設定&lt;/h1&gt;

&lt;p&gt;こんなの↓をやる設定です
(zaw.zsh で Mendely で管理している論文PDFを選んでいる様子):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/j39yVxLpdSRnq_vXG17k8w?feat=embedwebsite&quot;&gt;&lt;img src=&quot;https://lh5.googleusercontent.com/_SAwQBQ7QF-E/TaXBwp6tnKI/AAAAAAAAAZw/D4aXfeWLKKg/s800/zaw-mendeley.gif&quot; alt=&quot;zaw-mendeley.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;シェル環境で使える anything.el ライクな環境は
zaw.zsh と canything のふたつがある (もっとあるかも?)。&lt;/p&gt;

&lt;h2 id=&quot;zawzsh&quot;&gt;zaw.zsh&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://u7fa9.org/memo/HEAD/archives/2011-02/2011-02-22_1.rst&quot;&gt;zsh でも anything.el っぽいの - memo&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/nakamuray/zaw&quot;&gt;nakamuray/zaw - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/kei_q/20110309/1299681144&quot;&gt;zshのanything.elやunite.vimっぽい機能を実現するzaw.zshの簡単な紹介と、予めsourceを指定したキーバインドを設定する方法 - kei_qメモ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://d.hatena.ne.jp/hchbaw/20110302/1299072457&quot;&gt;zaw.zshでgit show-branchの出力を眺めつつコミットを選択したい。 - hchbaw記&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;zsh の魔術(ウィジェット)なのでカスタマイズするのにとっつきにくかった。&lt;/p&gt;

&lt;p&gt;設定は、ウィジェットを定義したファイルを source すればOK。
例えば、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;source path/to/zaw-mendeley.zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;を &lt;code&gt;.zshrc&lt;/code&gt; で &lt;code&gt;zaw.zsh&lt;/code&gt; を source したあとの行に加える。&lt;/p&gt;

&lt;h2 id=&quot;canything&quot;&gt;canything&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://filmlang.org/soft/canything&quot;&gt;canything: CUIでAnything&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/keiji/canything&quot;&gt;keiji/canything - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;パイプで受け渡しができて使いやすい&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;候補を出力するコマンド&amp;gt; | canything | &amp;lt;絞り込んだ結果を受け取るコマンド&amp;gt;`
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;という具合に使える。&lt;/p&gt;

&lt;strike&gt;
ただ、空白をあけて複数の単語で絞り込み、っていう使い方が出来ないのが難点。
&lt;/strike&gt;

&lt;p&gt;→ 修正されたようです!
コメントで作者さんからAND検索が出来るようになったと教えてもらいました
(2011-05-11 追記)。&lt;/p&gt;

&lt;p&gt;使い方は &lt;a href=&quot;http://filmlang.org/soft/canything&quot;&gt;canything: CUIでAnything&lt;/a&gt; にある。
例えば、 &lt;code&gt;.zshrc&lt;/code&gt; で下に書いてある &lt;code&gt;ja&lt;/code&gt; とか &lt;code&gt;gy&lt;/code&gt; ようなシェル関数を定義すれば良い。&lt;/p&gt;

&lt;h2 id=&quot;mendeley-pdf&quot;&gt;Mendeley で管理しているPDFファイルを絞り込んで開く&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mendeley.com/&quot;&gt;Mendeley&lt;/a&gt;
は論文を管理してくれるソフトウェア+ウェブサービス。
ローカルにあるディレクトリにPDFを著者名や年や論文名を含めた
ファイル名で保存してくれるので、それを使って絞り込める。
一番上の画像でやってるのがそれ。&lt;/p&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-mendeley.zsh?embed=t&quot;&gt;
&lt;/script&gt;

&lt;p&gt;→
&lt;a href=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-mendeley.zsh&quot;&gt;Bitbucket で &lt;code&gt;zaw-mendeley.zsh&lt;/code&gt; のソースを見る&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;gisty-&quot;&gt;gisty で管理しているリポジトリのワーキングディレクトリに一覧から選んで移動&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/swdyh/gisty&quot;&gt;gisty&lt;/a&gt;は、 &lt;a href=&quot;https://gist.github.com/&quot;&gt;Gist&lt;/a&gt;
の管理をしてくれるコマンド。
(&lt;a href=&quot;http://d.hatena.ne.jp/swdyh/20081207/1228655198&quot;&gt;gistコマンドよりちょっと便利なgisty - SWDYH&lt;/a&gt;)
&lt;code&gt;gist list&lt;/code&gt; ってやればリポジトリ一覧を見せてくれるんだけど、
ディレクトリ名がランダムで分かりにくいのでanythingライクに絞り込めると便利。&lt;/p&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-gisty.zsh?embed=t&quot;&gt;
&lt;/script&gt;

&lt;p&gt;→
&lt;a href=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-gisty.zsh&quot;&gt;Bitbucket で &lt;code&gt;zaw-gisty.zsh&lt;/code&gt; のソースを見る&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;canything バージョン:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;gy&lt;span class=&quot;o&quot;&gt;(){&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;choice&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;`gisty list | canything`&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$?&lt;/span&gt; -eq &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
	&lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;gitdir&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$choice&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; cut -d&lt;span class=&quot;s2&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt; -f1&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
	&lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;destpath&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$GISTY_DIR&lt;/span&gt;/&lt;span class=&quot;nv&quot;&gt;$gitdir&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; -n &lt;span class=&quot;s2&quot;&gt;&amp;quot;$gitdir&amp;quot;&lt;/span&gt; -a -d &lt;span class=&quot;s2&quot;&gt;&amp;quot;$destpath&amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
	    &lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$destpath&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id=&quot;z-j-&quot;&gt;z (もしくはj) を使って、よく使うディレクトリへ一覧から選んで移動&lt;/h2&gt;

&lt;p&gt;z/j はよく行くディレクトリに一発でジャンプできるコマンド。
過去に行ったディレクトリを記録しててくれて、その頻度からジャンプ先を勝手に選んでくれる。
例えば、 &lt;code&gt;~/repos/arataka.github.com/&lt;/code&gt; なるディレクトリでよく作業をしているなら、 &lt;code&gt;z arataka&lt;/code&gt; とやれば一発でそこに行ける。
このコマンドにも anything ライクに使えるようにした。&lt;/p&gt;

&lt;p&gt;ちなみに、 z/j には色々なバージョンがある(下)。
z が最新バージョンで、特別な設定なしでも zsh で使えるので、使うなら z が良いはず。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/rupa/z&quot;&gt;rupa/z - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/rupa/j2&quot;&gt;rupa/j2 - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/rupa/j/&quot;&gt;rupa/j - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://d.hatena.ne.jp/hchbaw/20110224/zawzsh&quot;&gt;zaw.zshでディレクトリスタックを選択したい。 - hchbaw記&lt;/a&gt;
とやりたいことは似ているけど、ディレクトリスタックだとそのセッション以外で行ったディレクトリにアクセス出来ないのが難点。
z/j だと過去に行ったディレクトリならどこへでも行けるし、よく使うものほど上に来るので使いやすいと思う。&lt;/p&gt;

&lt;script src=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-z.zsh?embed=t&quot;&gt;
&lt;/script&gt;

&lt;p&gt;→
&lt;a href=&quot;https://bitbucket.org/tkf/zaw-sources/src/tip/zaw-z.zsh&quot;&gt;Bitbucket で &lt;code&gt;zaw-z.zsh&lt;/code&gt; のソースを見る&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;canything バージョン:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;ja&lt;span class=&quot;o&quot;&gt;(){&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;local &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;destpath&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;j 2&amp;gt;&lt;span class=&quot;p&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; sed -n -e &lt;span class=&quot;s1&quot;&gt;&amp;#39;2,$p&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; sed &lt;span class=&quot;s1&quot;&gt;&amp;#39;s/^[0-9\\. ]*//&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; tac &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; canything&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$?&lt;/span&gt; -eq &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; -a -n &lt;span class=&quot;s2&quot;&gt;&amp;quot;$destpath&amp;quot;&lt;/span&gt; -a -d &lt;span class=&quot;s2&quot;&gt;&amp;quot;$destpath&amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
	&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$destpath&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Read It LaterにURLをまとめてポストするPythonスクリプト</title>
   <link href="http://arataka.github.io/2011/04/13/python-script-to-post-urls-to-read-it-later.html"/>
   <updated>2011-04-13T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/13/python-script-to-post-urls-to-read-it-later</id>
   <content type="html">&lt;h1 id=&quot;read-it-laterurlpython&quot;&gt;Read It LaterにURLをまとめてポストするPythonスクリプト&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://readitlaterlist.com/&quot;&gt;Read It Later&lt;/a&gt;
は、AndroidやiPhoneから色々なページをオフラインで読めるようにしてくれる
サービス/アプリ。
まとめてタグ付けしたり投稿したりが面倒なのでコマンドラインから投稿できる
スクリプト書きましたよ!&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;準備&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/915752&quot;&gt;tkf’s gist: 915752 — Gist&lt;/a&gt;
から &lt;code&gt;ril.py&lt;/code&gt; を落とす。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bitbucket.org/Surgo/ril/&quot;&gt;Surgo / RIL / overview – Bitbucket&lt;/a&gt;
をインストールする。
&lt;code&gt;readitlater/&lt;/code&gt;ディレクトリをPythonがモジュールとして認識できるところにおく。
面倒だったら、 &lt;code&gt;ril.py&lt;/code&gt; と同じディレクトリにおく。&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://readitlaterlist.com/api/signup/&quot;&gt;Read It Later: Developer API: Signup&lt;/a&gt;
で API Key を取る。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;section-1&quot;&gt;使い方&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;ril.py -a &amp;lt;API_KEY&amp;gt; -u &amp;lt;USER_NAME&amp;gt; -p &amp;lt;PASS_WORD&amp;gt; --tags &amp;lt;TAG_1,TAG_2,..&amp;gt; &amp;lt;URL_FILE&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;もし、 &lt;code&gt;&amp;lt;API_KEY&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;USER_NAME&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;PASS_WORD&amp;gt;&lt;/code&gt; がなければプロンプト
が出てくるのでそこから入力。
パスワードはコマンドラインから入れないほうがいいかも。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;URL_FILE&amp;gt;&lt;/code&gt; は、一行ごとにURLが入っているテキスト:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;https://gist.github.com/915752
https://bitbucket.org/Surgo/ril/
http://arataka.github.com/2011/04/13/python-script-to-post-urls-to-read-it-later.html
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;URLのあとにスペースを空ければタイトルも入れられる:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;https://gist.github.com/915752 tkf&#39;s gist: 915752 — Gist
https://bitbucket.org/Surgo/ril/ Surgo / RIL / overview – Bitbucket
http://arataka.github.com/2011/04/13/python-script-to-post-urls-to-read-it-later.html Read It LaterにURLをまとめてポストするPythonスクリプト
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;タイトルは入れないと Read It Later にアクセスしたときにURLがタイトル代わりに
表示されちゃうので入れておいたほうが良い。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;URL_FILE&amp;gt;&lt;/code&gt; を省略すると標準入力から読み込みます。
その他のオプションについては &lt;code&gt;ril.py --help&lt;/code&gt; を見てね!&lt;/p&gt;

&lt;h2 id=&quot;rilpy-&quot;&gt;&lt;code&gt;ril.py&lt;/code&gt; の中身&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/915752.js?file=ril.py&quot;&gt;
&lt;/script&gt;

</content>
 </entry>
 
 <entry>
   <title>GithubのJekyllでLaTeX数式が出せるか試してみたけど出来なかった</title>
   <link href="http://arataka.github.io/2011/04/13/jekyll-with-latex-math.html"/>
   <updated>2011-04-13T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/13/jekyll-with-latex-math</id>
   <content type="html">&lt;h1 id=&quot;githubjekylllatex&quot;&gt;GithubのJekyllでLaTeX数式が出せるか試してみたけど出来なかった&lt;/h1&gt;

&lt;p&gt;$x^{n}+y^{n} \neq z^{n}$ for $n \geq 3$&lt;/p&gt;

&lt;p&gt;[ 
\sum&lt;em&gt;{n=1}^\infty \frac{1}{n} 
\text{ is divergent, but } 
\lim&lt;/em&gt;{n \to \infty} \sum_{i=1}^n \frac{1}{i} - \ln n \text{exists.} 
]&lt;/p&gt;

&lt;script type=&quot;math/tex; mode=display&quot;&gt; \beth \Subset \bigtriangleup \bumpeq \ggg \pitchfork &lt;/script&gt;

&lt;p&gt;… できない&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>MercurialやGitのコミット頻度などを可視化するPythonスクリプトを書いてみた</title>
   <link href="http://arataka.github.io/2011/04/11/visualizing-git-and-hg-commit-activity.html"/>
   <updated>2011-04-11T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/11/visualizing-git-and-hg-commit-activity</id>
   <content type="html">&lt;h1 id=&quot;mercurialgitpython&quot;&gt;MercurialやGitのコミット頻度などを可視化するPythonスクリプトを書いてみた&lt;/h1&gt;

&lt;p&gt;いくつかのオープンソースなソフトがあった時は，開発が活発なほうを選びたい．
&lt;a href=&quot;http://code.google.com/&quot;&gt;Google Code&lt;/a&gt; とかだと activity を出してくれてりするけど，&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;同じ activity の測り方で比較したい．&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;そもそも activity 表示してくれてないサイトだと比較できない．&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;今は盛り上がってるよ，じゃなくて継続的に盛り上がってるか知りたい．&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;などなど問題があるので，自力でやってみた．&lt;/p&gt;

&lt;p&gt;その出力が↓にあるNumpyのリポジトリの activity (一日あたりのコミット数)の推移．
2006年あたりから盛り上がってるねーということが分かる．&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/arataka/5610051566/&quot;&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5303/5610051566_08c5ca8a96.jpg&quot; alt=&quot;repo-act-numpy by takafumi_a, on Flickr&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ちなみに時刻が並んでいるデータ(点過程って言えば正確かな?)だったら何でもパイプ経由で食わせられるので，他の用途にも使えるはず．&lt;/p&gt;

&lt;p&gt;今回使うスクリプト(&lt;code&gt;datehist.py&lt;/code&gt;)は
&lt;a href=&quot;https://gist.github.com/913543&quot;&gt;tkf’s gist: 913543 — Gist&lt;/a&gt;
からダウンロード出来ます．
このポストの一番下にも載っけてあります．Numpyとmatplotlibが必要です．&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;使い方&lt;/h2&gt;

&lt;p&gt;Activity を測りたいリポジトリのワーキングディレクトリで，以下を実行．
MercurialやGit以外の方法は使ってないので知らない…:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;hg log --template &lt;span class=&quot;s1&quot;&gt;&amp;#39;{date}\\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; datehist.py
git log --format&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;%at&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; datehist.py&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;datehist.py&lt;/code&gt; に食わす標準入力 (&lt;code&gt;hg log&lt;/code&gt; や &lt;code&gt;git log&lt;/code&gt; の出力)はこんな感じ．
コミットがあった時間の unix time を一行ごとにひたすら吐いてくれる．:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1298586880
1298516219
1298426531
1298426393
1298418897
1298407083
1298387222
1298387170
1295910432
(...以下略)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;引数 &lt;code&gt;-t&lt;/code&gt; (省略可)で出力グラフのタイトルを与えられるので，ワーキングディレクトリのあるフルパスをタイトルに使いたければ&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;hg log --template &lt;span class=&quot;s1&quot;&gt;&amp;#39;{date}\\n&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; datehist.py -t &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;hg root&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
git log --format&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;%at&amp;#39;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;|&lt;/span&gt; datehist.py -t &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;git rev-parse --show-toplevel&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;でOK.&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;応用例: 分散バグ管理システムはどれが元気あるかを調べてみた&lt;/h2&gt;

&lt;p&gt;比較したのは，次の4つのプロジェクト&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.digitalgemstones.com/projects/b/&quot;&gt;b&lt;/a&gt; (Mercurialのプラグイン)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://bugseverywhere.org/be/show/HomePage&quot;&gt;Bugs Everywhere&lt;/a&gt; (Python製)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://ditz.rubyforge.org/&quot;&gt;Ditz&lt;/a&gt; (Ruby製)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://pitz.tplus1.com/&quot;&gt;pitz&lt;/a&gt; (DitzをPythonで書き直し)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/arataka/5588561616/&quot;&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5144/5588561616_2ae2ee5c2f.jpg&quot; alt=&quot;screenshot-2011-04-04-185810 by takafumi_a, on Flickr&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;結論: どれもあんまり元気ないなあ…&lt;/p&gt;

&lt;p&gt;とりあえず，もろもろの理由から b を使ってみることにした．&lt;/p&gt;

&lt;h2 id=&quot;datehistpy--&quot;&gt;&lt;code&gt;datehist.py&lt;/code&gt; の 改善点&lt;/h2&gt;

&lt;p&gt;この方法だと，いちいちローカルに clone 作る必要があるのが難点．
リモートのリポジトリのログを見る方法って探せばありそう(←探せ)だし，
そうすればwebアプリ的な感じにも出きるよね．
誰かやってくれないかなあ（ぉぃ&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;追記 (2011-04-12)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Mercurialだと無理みたい:&lt;br /&gt;
&lt;a href=&quot;http://mercurial.selenic.com/wiki/FAQ#FAQ.2BAC8-CommonProblems.How_can_I_do_a_.22hg_log.22_of_a_remote_repository.3F&quot;&gt;4.23. How can I do a “hg log” of a remote repository? - FAQ - Mercurial&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Gitも無理そう:&lt;br /&gt;
&lt;a href=&quot;http://git.661346.n2.nabble.com/git-log-of-remote-repositories-td4899042.html&quot;&gt;git - git log of remote repositories.&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;datehistpy&quot;&gt;datehist.py&lt;/h2&gt;

&lt;p&gt;何か変更あれば，最新版は
&lt;a href=&quot;https://gist.github.com/913543&quot;&gt;tkf’s gist: 913543 — Gist&lt;/a&gt;
にあげときます．&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/913543.js?file=datehist.py&quot;&gt;
&lt;/script&gt;

</content>
 </entry>
 
 <entry>
   <title>google-diff-match-patchを使って文章の差分を単語単位でとるCLIプログラムを書いた</title>
   <link href="http://arataka.github.io/2011/04/02/using-google-diff-match-patch.html"/>
   <updated>2011-04-02T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/02/using-google-diff-match-patch</id>
   <content type="html">&lt;h1 id=&quot;google-diff-match-patchcli&quot;&gt;google-diff-match-patchを使って文章の差分を単語単位でとるCLIプログラムを書いた&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/arataka/5584640439/&quot;&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5026/5584640439_08e2ded198_z.jpg&quot; alt=&quot;oogle-diff-match-patch by takafumi_a, on Flickr&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…と言っても実は
&lt;a href=&quot;http://code.google.com/p/google-diff-match-patch/&quot;&gt;google-diff-match-patch&lt;/a&gt;
っていうライブラリを使えば簡単にできるって話で、そのデモサイト:
&lt;a href=&quot;http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html&quot;&gt;Diff, Match and Patch: Demo of Diff&lt;/a&gt;
と同じことが出来るCLIを書いただけ。要Python。&lt;/p&gt;

&lt;p&gt;Python無かったりインストール面倒な人は、デモサイトの出力結果をHTMLメールにコピペして使えば良いんじゃないかな。&lt;/p&gt;

&lt;p&gt;あと、自分で確認できれば良い時は wdiff っていうコマンドを使えば単語単位で diff がとれる。&lt;code&gt;--terminal&lt;/code&gt; オプションをつければ見易くなるのでおすすめ。Ubuntuなら &lt;code&gt;sudo apt-get install wdiff wdiff-doc&lt;/code&gt; でインストール出来る。&lt;/p&gt;

&lt;h2 id=&quot;google-diff-match-patch-&quot;&gt;google-diff-match-patch をダウンロードしてインストール&lt;/h2&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;wget http://google-diff-match-patch.googlecode.com/files/diff_match_patch_20110217.zip
unzip diff_match_patch_20110217.zip
cp diff_match_patch_20110217/python/diff_match_patch.py ~/pymodules/ &lt;span class=&quot;c&quot;&gt;#任意&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;~/pymodules/&lt;/code&gt; は &lt;code&gt;$PYTHONPATH&lt;/code&gt; に設定されている適当なディレクトリ。
面倒なら次にダウンロードするスクリプト(&lt;code&gt;gdmp.py&lt;/code&gt;)と同じディレクトリに置けばOK。&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;文章の差分をとる方法&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://gist.github.com/899325&quot;&gt;Command line tool for google-diff-match-patch — Gist&lt;/a&gt;
をダウンロードして使う。これが、今回書いたやつ。&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;wget https://gist.github.com/raw/899325/gdmp.py
python gdmp.py FILE1 FILE2 -o diff.html&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;これでdiff.htmlに差分が出力されるので、ブラウザで開いてHTMLメールに張り付けるなりファイルをそのままメールするなりすれば良い。&lt;/p&gt;

&lt;p&gt;LaTeXファイルを扱う時は、 &lt;code&gt;detex&lt;/code&gt; でLaTeXコマンドを消してから差分をとれば良い。zshなら、&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;python gdmp.py &amp;lt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;detex -l FILE1.tex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &amp;lt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;detex -l FILE2.tex&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; -o diff.html&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;でOK。&lt;/p&gt;

&lt;p&gt;論文とかを人に添削してもらう時に、どこを変更したかを分かりやすく伝えたい時が
ある。ワードなり使ってれば良いんだろうけど、LaTeXや普通のテキストファイルを
扱ってくれるプログラムが見つからなかったので書いてみた、という話でした。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Jekyll でブログ書いてみる</title>
   <link href="http://arataka.github.io/2011/04/02/first-post.html"/>
   <updated>2011-04-02T00:00:00+00:00</updated>
   <id>http://arataka.github.io/2011/04/02/first-post</id>
   <content type="html">&lt;h1 id=&quot;jekyll-&quot;&gt;Jekyll でブログ書いてみる&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://blog.envylabs.com/2009/08/publishing-a-blog-with-github-pages-and-jekyll&quot;&gt;Publishing a Blog with GitHub Pages and Jekyll « Envy Labs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://github.com/mojombo/mojombo.github.com&quot;&gt;mojombo’s mojombo.github.com at master - GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mojombo/jekyll/wiki&quot;&gt;Home - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 

</feed>
