<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>rokujyouhitomaのぷろぐらま日誌</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/" />
    <link rel="self" type="application/atom+xml" href="http://www.rokujyouhitoma.com/javapg/atom.xml" />
    <id>tag:www.rokujyouhitoma.com,2008-03-02:/javapg//1</id>
    <updated>2010-02-20T08:01:19Z</updated>
    <subtitle>何もプログラミングできないぷろぐらま。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>

<entry>
    <title>カスタムテンプレートタグとかテンプレートの拡張とか</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2010/02/post-21.html" />
    <id>tag:www.rokujyouhitoma.com,2010:/javapg//1.184</id>

    <published>2010-02-20T07:44:04Z</published>
    <updated>2010-02-20T08:01:19Z</updated>

    <summary> 		 			Djangoでadminのカスタムテンプレートタグとかテンプレート...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="Django" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>Djangoでadminのカスタムテンプレートタグとかテンプレートの拡張とかでハマった点を情報展開しとく。あと備忘録用。</p><br />
			<h4> テンプレートのディレクトリ構成は？</h4><br />
			<p>過去にdjango-jaで議論してたのを参考に下記の構成で。</p><br />
			<p>（ごめんなさい。議論のページをロストしました...。）</p><br />
<pre><br />
&#60;project-dir&#62;<br />
|-- &#60;app-dir&#62;<br />
|    |-- templates<br />
|    |   `-- admin<br />
|    |       `-- &#60;app-dir&#62; ※アプリケーションディレクトリと同名。<br />
|    |           `-- &#42;.html アプリのadminテンプレートに対しての拡張。<br />
|    `-- templatetags<br />
|        |-- __init__.py Pythonライブラリとして認識させるため必須。<br />
|        `-- &#42;.py カスタムテンプレートタグのコード。<br />
`-- templates<br />
     `-- admin<br />
         `-- &#42;.html adminテンプレート全体に対しての拡張。<br />
</pre></p>

<p>			<br></p>

<p>			<br></p>

<p>			<h5> テンプレートディレクトリをsettings.pyに登録する。</h5><br />
			<p>settings.pyのTEMPLATE_DIRSに登録する。登録するのは２つ。</p><br />
			<ul><br />
				<li> '/path/to/django/&#60;project-dir&#62;/templates'</li><br />
				<li> '/path/to/django/&#60;project-dir&#62;/&#60;app-dir&#62;/templates'</li><br />
			</ul><br />
			<p>/path/to/django/という絶対パスが入ってしまうのだけど、これ回避する策ないかな...。</p><br />
			<br></p>

<p>			<br></p>

<p>			<h5> カスタムテンプレートタグディレクトリをsettings.pyに登録する。</h5><br />
			<p>settings.pyのINSTALLED_APPSに登録する。</p><br />
			<ul><br />
				<li> '&#60;project-dir&#62;.&#60;app-dir&#62;.templatetags'</li><br />
			</ul><br />
			<p>あるいは、カスタムテンプレートタグのコードファイルがextras.pyだとしたら、</p><br />
			<ul><br />
				<li> '&#60;project-dir&#62;.&#60;app-dir&#62;.templatetags.extras'</li><br />
			</ul><br />
			<p>これも、INSTALLED_APPSに登録するより賢い方法を模索中。</p><br />
			<h4> あとは...</h4><br />
			<p>あとはDjangoの翻訳ドキュメントにのっとり拡張すればいいよ。他にハマリどころはないはず。</p><br />
			<br></p>

<p>			<h4> 参考</h4><br />
			<ul><br />
				<li> <a href="http://djangoproject.jp/doc/ja/1.0/howto/custom-template-tags.html#id8" target="_blank">カスタムテンプレートタグを書く</a></li><br />
				<li> <a href="http://www.ibm.com/developerworks/jp/opensource/library/os-django-admin/index.html" target="_blank">Django の admin をカスタマイズする</a></li><br />
			</ul><br />
			<h4> 参考書籍</h4><br />
			<p>django-jaの翻訳ドキュメントとともに下記書籍を参考にしました。</p><br />
			<p>	<div class="hatena-asin-detail"></p><br />
			<p>		<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048672096/rokujyouhit04-22/"><img alt="開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)" src="http://ecx.images-amazon.com/images/I/51q-uR4G72L._SL160_.jpg" title="開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)" class="hatena-asin-detail-image"></a></p><br />
			<p>		<div class="hatena-asin-detail-info"></p><br />
			<p>			<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048672096/rokujyouhit04-22/">開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)</a></p></p><br />
			<p>    <ul><br />
			      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%FD%C5%C4%C2%D9" class="keyword">増田泰</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%B5%EF%CE%C9%B2%F0" class="keyword">中居良介</a>,<a href="http://d.hatena.ne.jp/keyword/%CF%AA%CC%DA%C0%BF" class="keyword">露木誠</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%BE%B8%B6%CB%AD" class="keyword">松原豊</a></li><br />
			      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC%A1%A6%A5%E1%A5%C7%A5%A3%A5%A2%A5%EF%A1%BC%A5%AF%A5%B9" class="keyword">アスキー・メディアワークス</a></li><br />
			      <li><span class="hatena-asin-detail-label">発売日:</span> 2008/06/19</li><br />
				  <li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><br />
			      <li><span class="hatena-asin-detail-label">購入</span>: 10人 <span class="hatena-asin-detail-label">クリック</span>: 84回</li><br />
			      <li><a target="_blank" href="http://d.hatena.ne.jp/asin/4048672096">この商品を含むブログ (36件) を見る</a></li><br />
			    </ul></p><br />
			<p>  </div></p><br />
			<p></div></p><br />
			<h4> 余談</h4><br />
			<p>業務はPHPが中心だったのだけど、Djangoのadmin利用してサクっと管理画面作ったら暗黙的にDjango採用OKという社内空気。</p><br />
			<p>Tracは着任当初にSubversionとともに導入してプラグイン作ったり。Sphinxは使い始めでこのあと他のアプリに組み込む予定。</p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>PythonでPitを使ってみる</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2010/01/pythonpit.html" />
    <id>tag:www.rokujyouhitoma.com,2010:/javapg//1.183</id>

    <published>2010-01-24T15:07:51Z</published>
    <updated>2010-02-20T08:01:18Z</updated>

    <summary> 		 			Pitがいいよって言われたので使ってみる。 			 Pitのインス...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>Pitがいいよって言われたので使ってみる。</p><br />
			<h4> Pitのインストール</h4><br />
<pre class="syntax-highlight"><br />
sudo easy_install pit<br />
</pre></p>

<p>			<h4> PitをPythonインタプリタから実行</h4><br />
<pre class="syntax-highlight"><br />
<span class="synPreProc">from</span> pit <span class="synPreProc">import</span> Pit<br />
foo = Pit.get('<span class="synConstant">foo</span>', {'<span class="synConstant">require</span>':{'<span class="synConstant">bar</span>':'<span class="synConstant">bar-value</span>','<span class="synConstant">baz</span>':'<span class="synConstant">baz-value</span>'}})<br />
</pre></p>

<p>			<p>上記を実行すると、環境変数に設定されたエディタde開かれる。</p><br />
			<p>環境変数EDITORが設定されてない場合は設定する。</p><br />
			<h5> ./bash_profileへ環境変数EDITORの設定</h5><br />
			<p>環境変数EDITORをbashに設定するとこんな感じ。</p><br />
<pre class="syntax-highlight"><br />
export EDITOR=&#34;emacs&#34;<br />
#export EDITOR=&#34;vi<br />
</pre></p>

<p>			<p>PitをPythonインタプリタから実行される。~/.pitディレクトリが作成される。</p><br />
			<p>あとでデータを弄りたいときは、YAML形式の</p><br />
<pre class="syntax-highlight"><br />
~/.pit/default.yaml<br />
</pre></p>

<p>			<p>を修正すればよい。</p><br />
			<h4> Pythonから呼び出してみる。</h4><br />
<pre class="syntax-highlight"><br />
<span class="synPreProc">from</span> pit <span class="synPreProc">import</span> Pit<br />
foo = Pit.get('<span class="synConstant">foo</span>')<br />
<span class="synStatement">print</span> foo['<span class="synConstant">bar</span>']<br />
<span class="synStatement">print</span> foo['<span class="synConstant">baz</span>']<br />
</pre></p>

<p>			<p>結構使い易い。</p><br />
			<h4> 参考</h4><br />
			<ul><br />
				<li> <a href="http://d.hatena.ne.jp/a2c/20081016/1224097042" target="_blank">Pythonでの、Pitの使い方　世界一わかりやすいムービー付き</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/jYoshiori/20080623/1214219490" target="_blank">Pit リリースしました。</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/CortYuming/20090113/p1" target="_blank">清楚なクライアントでクロスポストしてみる</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/jitsu102/20100105/1262701811" target="_blank">アカウントやパスワード情報をハードコーディングしない方法(use Config::Pit)</a></li><br />
			</ul></p>

<p>		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>2010</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2010/01/2010.html" />
    <id>tag:www.rokujyouhitoma.com,2010:/javapg//1.182</id>

    <published>2010-01-02T09:58:56Z</published>
    <updated>2010-02-20T08:01:18Z</updated>

    <summary> 		 			新年あけましておめでとうございます。今年も宜しくお願い申し上げます...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>新年あけましておめでとうございます。今年も宜しくお願い申し上げます。</p><br />
			<br></p>

<p>			<p>さてはて2009年が終わってしまったので今年の抱負とともに。</p><br />
			<h4> 今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む) その2</h4><br />
			<h5> 以前の記事</h5><br />
			<p><a href="http://d.hatena.ne.jp/rokujyouhitoma/20090509#1241839639" target="_blank">今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む)</a></p><br />
			<h5> 社会人4年生</h5><br />
			<p>4年目にして初めて触った言語は以下の通り。</p><br />
			<ul><br />
				<li> シェルスクリプト</li><br />
				<li> HTML5</li><br />
				<li> ActionScript</li><br />
				<li> Jython（Python）</li><br />
				<li> Go</li><br />
				<li> Erlang</li><br />
				<li> Haskell</li><br />
				<li> Scala</li><br />
			</ul><br />
			<p>ActionScriptはMingライブラリを利用し、Pythonから呼び出したりした。</p><br />
			<p>Jythonいいね。Pythonで書けるのにSwingを使えるのに感動した。ただ、JavaのクラスファイルにJython2.5ではできないっぽいのが残念。</p><br />
			<p>GoはGoogleのドキュメントを読んだり、インストールした程度。</p><br />
			<p>ErlangとHaskellもHello World!程度。Scalaも似たようなもの。</p><br />
			<p>業務としては、PythonでGUIアプリとか、JavaScriptでSNSのアプリとか。あとPHPが多かった。</p><br />
			<p>たまにSwingでアプリを作ったり。</p><br />
			<h5> 社会人5年生（抱負含む）</h5><br />
			<p>明日から社会人5年生。抱負も含めて。</p><br />
			<p>業務予定としては、GAEでPython使ったり、JavaScriptをごりごり書いたり。場合によってはPHP。</p><br />
			<p>あとは、調査と自主学習、勉強会で様々な言語を触るかもね。</p><br />
			<p>JavaのSwingが良かったから、もっと触ってみる。</p><br />
			<p>勉強会はjava-jaとかPythonのつながりで出る予定。あとはSICP-lite。</p><br />
			<br></p>

<p>			<p>Ozのドキュメント翻訳とかTracプラグインを片付けたりもしないと...。</p><br />
			<br></p>

<p>			<p>情報処理の資格を春に一つ受験。これが実は最優先。なはず。</p><br />
			<br></p>

<p>			<p>よし。2010年始動開始！</p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[Jython][Mac][備忘録]Jython。</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/jythonmacjython.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.181</id>

    <published>2009-12-28T01:43:28Z</published>
    <updated>2010-02-20T08:01:17Z</updated>

    <summary> 		 			昨日Rhinoを試したので、今日はJython。 			 Rhin...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>昨日Rhinoを試したので、今日はJython。</p><br />
			<h4> Rhinoについて</h4><br />
			<p>Rhinoのシェルは好感触。JavaScript大好き♪Swingも少し触ってもたけどよさげ。</p><br />
			<br></p>

<p>			<p>ただ、jscによるコンパイル後のclassファイルが、なぜかRhinoのシェルでしか処理できないくてしょぼくれてた...。</p><br />
			<p>なぜJavaコマンドで実行できない...??</p><br />
			<p>もうちょっと調査する。</p><br />
			<br></p>

<p>			<h4> 環境</h4><br />
			<p>MacOS 10.5</p><br />
			<h4> 本題のJythonインストール</h4><br />
<pre class="syntax-highlight"><br />
wget http://downloads.sourceforge.net/jython/jython_installer-2.5.1.jar<br />
</pre></p>

<p>			<h5> wgetがない場合</h5><br />
			<p>以前書いた記事が参考になるかも。macportsから入れるのもありだと思われる。</p><br />
			<p><a href="http://www.rokujyouhitoma.com/javapg/2008/01/mac_os_x_105wget.html" target="_blank">Mac OS X 10.5にwgetを入れる。</a></p><br />
<pre class="syntax-highlight"><br />
java -jar jython_installer-2.5.1.jar<br />
</pre></p>

<p>			<p>インストール先は$HOME/opt/。</p><br />
			<h5> リンクを貼る</h5><br />
<pre class="syntax-highlight"><br />
cd ~/opt<br />
ln -s jython2.5.1 jython<br />
ln -s ~/opt/jython/jython ~/bin/jython<br />
</pre></p>

<p>			<h5> .profileにaliasをつける</h5><br />
			<p>リンク貼るのもいいけど、.profileに設定するのもあり。</p><br />
<pre><br />
alias jython=&#34;$HOME/bin/jython&#34;<br />
</pre></p>

<p>			<br></p>

<p>			<p>さて、jythonが入ったのだけど、こいつはclassファイルを吐き出すことができるのだろうか？</p><br />
			<p>調査する。</p><br />
			<br></p>

<p>			<h4> 参考</h4><br />
			<p><a href="http://d.hatena.ne.jp/jYoshiori/20080427/1209313700" target="_blank">MacでJython</a></p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[Mac][Rhino][JavaScript]MacでRhino</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/macrhinojavascriptmacrhino.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.180</id>

    <published>2009-12-27T13:09:55Z</published>
    <updated>2010-02-20T08:01:17Z</updated>

    <summary> 		 			真のJavaScripterならRhino使うだろーってことでRh...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>真のJavaScripterならRhino使うだろーってことでRhinoの設定。</p><br />
			<h4> クラスパスを通す</h4><br />
			<p>ホームにrhinoのディレクトリを置く。そしてクラスパスを通す。</p><br />
<pre class="syntax-highlight"><br />
export CLASSPATH=~/rhino1_7R2/js.jar<br />
</pre></p>

<p>			<h4> .profileに設定（bashなら.bash_profile）</h4><br />
			<p>jsの対話shellとコンパイラを設定しとく。</p><br />
<pre class="syntax-highlight"><br />
export CLASSPATH=~/rhino1_7R2/js.jar<br />
alias js=&#34;java org.mozilla.javascript.tools.shell.Main&#34;<br />
alias jsc=&#34;java org.mozilla.javascript.tools.jsc.Main&#34;<br />
</pre></p>

<p>		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[VirtualBox][Android]VirtualBoxでAndroidを動かしてみる。</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/virtualboxandroidvirtualboxand.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.179</id>

    <published>2009-12-27T08:35:01Z</published>
    <updated>2010-02-20T08:01:17Z</updated>

    <summary> 		 			 LiveAndroid.isoを用意 			Androidのライ...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<h4> LiveAndroid.isoを用意</h4><br />
			<p>Androidのライブ版isoを準備する。最新はバージョン0.3。</p><br />
			<p>配布元は<a href="http://code.google.com/p/live-android/" target="_blank">live-android</a>。</p><br />
			<p><a href="http://live-android.googlecode.com/files/liveandroidv0.3.iso.001" target="_blank">liveandroidv0.3.iso.001</a>と<a href="http://live-android.googlecode.com/files/liveandroidv0.3.iso.002" target="_blank">liveandroidv0.3.iso.002</a>をダウンロード。</p><br />
			<br></p>

<p>			<p>2つのファイルに分かれているので、catコマンドで結合。</p><br />
<pre class="syntax-highlight"><br />
cat liveandroidv0.3.iso.001 liveandroidv0.3.iso.002 &#62; liveandroidv0.3.iso <br />
</pre></p>

<p>			<p>これでisoファイルの用意完了。</p><br />
			<h5> 余談：md5チェックサム</h5><br />
			<p>md5チェックサムかけようとしたんだけど、そもそも自分でファイル結合してるし、</p><br />
			<p>値は配布されてないし、、、意味ないねｗ</p><br />
<pre class="syntax-highlight"><br />
rokujyouhitomajp$ openssl md5 liveandroidv0.3.iso <br />
MD5(liveandroidv0.3.iso)= e0c5c305f78cd958dbaea3716c82296f<br />
</pre></p>

<p>			<h4> VirtualBoxで起動してみる。</h4><br />
			<p>実際にAndroidをVirtualBoxで起動してみる。</p><br />
			<p><a href="http://f.hatena.ne.jp/rokujyouhitoma/20091227172732" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/r/rokujyouhitoma/20091227/20091227172732.png" alt="f:id:rokujyouhitoma:20091227172732p:image" title="f:id:rokujyouhitoma:20091227172732p:image" class="hatena-fotolife"></a></p><br />
			<h4> だが</h4><br />
			<p>だがしかし。Androidの開発用実機端末を持っているので、必要ないってなー。</p><br />
			<h4> live-android</h4><br />
			<p><a href="http://code.google.com/p/live-android/" target="_blank">live-android</a></p><br />
			<h4> 参考</h4><br />
			<p>下記サイトで見かけたので、触ってみたくなった。</p><br />
			<p>僕の好奇心を刺激してくれてありがとう♪</p><br />
			<p><a href="http://blog.livedoor.jp/yagasuri/archives/52499138.html" target="_blank">VirtualBoxでAndroidを動かしてみる</a></p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[備忘録][Subversion]Subversionの無視リストとかEmacsの設定とか</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/subversionsubversionemacs.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.178</id>

    <published>2009-12-25T06:10:01Z</published>
    <updated>2010-02-20T08:01:17Z</updated>

    <summary> 		 			SubversionクライアントはEclipseプラグインやTor...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>SubversionクライアントはEclipseプラグインやTortoiseSVNを利用しているが、</p><br />
			<p>svnコマンドで使う機会があったため備忘録として。</p><br />
			<br></p>

<p>			<h4> 無視ファイルの追加。</h4><br />
<pre class="syntax-highlight"><br />
svn propedit svn:ignore .<br />
</pre></p>

<p>			<p>上記を実行すると、下記エラーが表示される。</p><br />
<pre><br />
svn: 環境変数 SVN_EDITOR, VISUAL, EDITOR のどれも設定されていなく、実行時の設定オプション &#39;editor-cmd&#39; も見つかりません<br />
</pre></p>

<p>			<h4> EmacsとSVNの連携</h4><br />
			<p>EmacsとSubverisonの連携。Emacsないと無理です。</p><br />
<pre class="syntax-highlight"><br />
export SVN_EDITOR=&#39;emacs -nw&#39;<br />
</pre></p>

<p>			<p>viだと、</p><br />
<pre class="syntax-highlight"><br />
export SVN_EDITOR=&#39;vi&#39;<br />
</pre></p>

<p>			<h4> 改めて、無視ファイルの追加。</h4><br />
<pre class="syntax-highlight"><br />
svn propedit svn:ignore .<br />
</pre></p>

<p>			<p>上記コマンドでEmacsが開かれるので、改行ごとに無視ファイルを記載する。</p><br />
			<h5> 無視ファイル記載例</h5><br />
<pre><br />
&#42;.&#42;~<br />
&#42;.log<br />
</pre></p>

<p>			<p>これで解決。</p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>PythonでSSHとかSCPとかを自動化</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/pythonsshscp.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.177</id>

    <published>2009-12-17T13:47:35Z</published>
    <updated>2010-02-20T08:01:16Z</updated>

    <summary> 		 			ちょいとSCPでファイルを取ってきたり、置いたりしないといけなかっ...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="Python" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>ちょいとSCPでファイルを取ってきたり、置いたりしないといけなかったので。</p><br />
			<h4> Pexpect</h4><br />
			<p>Pexpectというライブラリを利用。</p><br />
			<p>コマンドを自動化できる。一番良いのはpasswordを聞かれるのを自動で答えてくれること。</p><br />
			<h5> SCP</h5><br />
			<p>SCPのサンプルコード。らくちん。</p><br />
<pre class="syntax-highlight"><br />
<span class="synPreProc">import</span> pexpect</p>

<p>SERVER = &#34;<span class="synConstant">www.rokujyouhitoma.com</span>&#34;<br />
USER = &#34;<span class="synConstant">rokujyouhitoma</span>&#34;<br />
SOMEDIR = &#34;<span class="synConstant">~</span>&#34;<br />
PASSWORD = &#34;<span class="synConstant">bar_password</span>&#34;<br />
UPLOADDIR = &#34;<span class="synConstant">baz_dir</span>&#34;</p>

<p><span class="synStatement">if</span> __name__ == &#34;<span class="synConstant">__main__</span>&#34;:<br />
    scp = pexpect.spawn('<span class="synConstant">scp -r %s@%s:%s %s</span>' % (USER, SERVER, SOMEDIR, UPLOADDIR))<br />
    scp.expect('<span class="synConstant">.ssword:*</span>')<br />
    scp.sendline(PASSWORD)<br />
    scp.interact()<br />
</pre></p>

<p>			<p>ま、問題はこんな危険なコードが流失したらだなぁー。</p><br />
			<h5> SSH</h5><br />
			<p>同様にSSHのサンプルコードを。</p><br />
<pre class="syntax-highlight"><br />
<span class="synPreProc">import</span> pexpect</p>

<p>SERVER = &#34;<span class="synConstant">www.rokujyouhitoma.com</span>&#34;<br />
USER = &#34;<span class="synConstant">rokujyouhitoma</span>&#34;<br />
PASSWORD = &#34;<span class="synConstant">bar_password</span>&#34;</p>

<p><span class="synStatement">if</span> __name__ == &#34;<span class="synConstant">__main__</span>&#34;:<br />
    foo = pexpect.spawn('<span class="synConstant">ssh %s@%s</span>' % (USER, SERVER))<br />
    foo.expect('<span class="synConstant">.*ssword:</span>')<br />
    scp.sendline(PASSWORD)<br />
    foo.interact()<br />
</pre></p>

<p>			<br></p>

<p>			<p>重要なことなのでもう一度。危険だから、使い方には注意して下さい。</p><br />
			<br></p>

<p>			<p>ま、あれだな。引数でパスワードを取るように変えるしか考えつかないけど・・・。</p><br />
			<h4> 追記</h4><br />
			<p>「pitを使えばパスワードを隠蔽化できるよ」ってTwitterで教えてもらいました。後で試す。</p><br />
			<h4> 公式</h4><br />
			<ul><br />
				<li> <a href="http://www.noah.org/wiki/Pexpect" target="_blank">Pexpect</a></li><br />
			</ul><br />
			<h4> 参考</h4><br />
			<ul><br />
				<li> <a href="http://www.palovick.com/code/python/python-ssh-client.php" target="_blank">Python SSH SCP and Expect Example Script</a></li><br />
				<li> <a href="http://kb.iu.edu/data/agye.html" target="_blank">In Unix, how do I use the scp command to securely transfer files between two computers?</a></li><br />
				<li> <a href="http://www.jp.redhat.com/support/errata/RHEA/RHEA-2008-0452J.html" target="_blank">新規パッケージ：pexpect</a></li><br />
			</ul></p>

<p>		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[備忘録]CentOSにPython2.6を入れる</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/centospython26.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.176</id>

    <published>2009-12-06T08:40:54Z</published>
    <updated>2010-02-20T08:01:16Z</updated>

    <summary> 		 			 環境 			CentOS release 5.4 (Final)...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<h4> 環境</h4><br />
			<p>CentOS release 5.4 (Final)</p><br />
			<br></p>

<p>			<p>事前にzlib-develをインストールしとく。</p><br />
<pre class="syntax-highlight"><br />
yum install -y zlib-devel<br />
</pre></p>

<p>			<h4> Python2.6</h4><br />
<pre class="syntax-highlight"><br />
wget http://python.org/ftp/python/2.6/Python-2.6.tgz<br />
tar xvzf Python-2.6.tgz<br />
cd Python-2.6<br />
./configure --enable-shared<br />
</pre></p>

<p>			<h4> Modules/Setup</h4><br />
			<p>コメントを外す。</p><br />
<pre><br />
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz<br />
</pre></p>

<p>			<h4> make, make install</h4><br />
			<p>通常のmake, make install</p><br />
<pre class="syntax-highlight"><br />
make<br />
make install<br />
</pre></p>

<p>			<p>これでOKなはずだけど、Pythonをコマンドから実行すると、エラーが出る。</p><br />
			<p>なので、libpython2.6.soとlibpython2.6.so.1.0を/usr/libへ。</p><br />
<pre class="syntax-highlight"><br />
cp libpython2.6.so libpython2.6.so.1.0 /usr/lib/<br />
/sbin/ldconfig<br />
</pre></p>

<p>			<h4> バージョンを確認する</h4><br />
			<p>正しくインストールされたかバージョンを確認する。</p><br />
<pre class="syntax-highlight"><br />
python -V<br />
</pre></p>

<p>			<h4> 参考</h4><br />
			<ul><br />
				<li> <a href="http://d.hatena.ne.jp/tohae/20081009/1223568809" target="_blank">CentOS5にpython2.6+Django+mod_python+色々の環境を整える - とはえ領域</a></li><br />
			</ul></p>

<p>		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>Sphinxのインストールログを念のため</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/sphinx.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.105</id>

    <published>2009-12-06T07:41:53Z</published>
    <updated>2009-12-06T07:47:46Z</updated>

    <summary>Sphinxインストールログを念のため残しとく。 setuptoolsが何を入れ...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    <category term="sphinxpython" label="Sphinx Python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p>Sphinxインストールログを念のため残しとく。</p>
<p>setuptoolsが何を入れてるかきになるし。</p>
<p>Sphinxのインストールは下記参考のこと。</p>
<p><a href="http://d.hatena.ne.jp/rokujyouhitoma/20091206">Sphinxを使って日本語PDFを出力する  - rokujyouhitomaの日記</a></p>

<pre class="prettyprint">
[*(ry* Sphinx-0.6.3]# python setup.py install

---------------------------------------------------------------------------
This script requires setuptools version 0.6c9 to run (even to display
help).  I will attempt to download it for you (from
http://pypi.python.org/packages/2.6/s/setuptools/), but
you may need to enable firewall access for this script first.
I will start the download in 15 seconds.

(Note: if this machine does not have network access, please obtain the file

   http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg

and place it in this directory before rerunning this script.)
---------------------------------------------------------------------------
Downloading http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg
running install
running bdist_egg
running egg_info
writing requirements to Sphinx.egg-info/requires.txt
writing Sphinx.egg-info/PKG-INFO
writing top-level names to Sphinx.egg-info/top_level.txt
writing dependency_links to Sphinx.egg-info/dependency_links.txt
writing entry points to Sphinx.egg-info/entry_points.txt
reading manifest file 'Sphinx.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'doc/_build'
writing manifest file 'Sphinx.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/sphinx
copying sphinx/errors.py -> build/lib/sphinx
copying sphinx/cmdline.py -> build/lib/sphinx
copying sphinx/roles.py -> build/lib/sphinx
copying sphinx/__init__.py -> build/lib/sphinx
copying sphinx/quickstart.py -> build/lib/sphinx
copying sphinx/highlighting.py -> build/lib/sphinx
copying sphinx/theming.py -> build/lib/sphinx
copying sphinx/config.py -> build/lib/sphinx
copying sphinx/setup_command.py -> build/lib/sphinx
copying sphinx/jinja2glue.py -> build/lib/sphinx
copying sphinx/application.py -> build/lib/sphinx
copying sphinx/addnodes.py -> build/lib/sphinx
copying sphinx/environment.py -> build/lib/sphinx
copying sphinx/builder.py -> build/lib/sphinx
copying sphinx/search.py -> build/lib/sphinx
creating build/lib/sphinx/writers
copying sphinx/writers/__init__.py -> build/lib/sphinx/writers
copying sphinx/writers/latex.py -> build/lib/sphinx/writers
copying sphinx/writers/text.py -> build/lib/sphinx/writers
copying sphinx/writers/html.py -> build/lib/sphinx/writers
creating build/lib/sphinx/locale
copying sphinx/locale/__init__.py -> build/lib/sphinx/locale
creating build/lib/sphinx/pycode
copying sphinx/pycode/nodes.py -> build/lib/sphinx/pycode
copying sphinx/pycode/__init__.py -> build/lib/sphinx/pycode
creating build/lib/sphinx/ext
copying sphinx/ext/refcounting.py -> build/lib/sphinx/ext
copying sphinx/ext/autodoc.py -> build/lib/sphinx/ext
copying sphinx/ext/jsmath.py -> build/lib/sphinx/ext
copying sphinx/ext/__init__.py -> build/lib/sphinx/ext
copying sphinx/ext/doctest.py -> build/lib/sphinx/ext
copying sphinx/ext/pngmath.py -> build/lib/sphinx/ext
copying sphinx/ext/ifconfig.py -> build/lib/sphinx/ext
copying sphinx/ext/graphviz.py -> build/lib/sphinx/ext
copying sphinx/ext/coverage.py -> build/lib/sphinx/ext
copying sphinx/ext/inheritance_diagram.py -> build/lib/sphinx/ext
copying sphinx/ext/intersphinx.py -> build/lib/sphinx/ext
copying sphinx/ext/todo.py -> build/lib/sphinx/ext
copying sphinx/ext/mathbase.py -> build/lib/sphinx/ext
creating build/lib/sphinx/directives
copying sphinx/directives/desc.py -> build/lib/sphinx/directives
copying sphinx/directives/__init__.py -> build/lib/sphinx/directives
copying sphinx/directives/other.py -> build/lib/sphinx/directives
copying sphinx/directives/code.py -> build/lib/sphinx/directives
creating build/lib/sphinx/builders
copying sphinx/builders/htmlhelp.py -> build/lib/sphinx/builders
copying sphinx/builders/__init__.py -> build/lib/sphinx/builders
copying sphinx/builders/latex.py -> build/lib/sphinx/builders
copying sphinx/builders/text.py -> build/lib/sphinx/builders
copying sphinx/builders/qthelp.py -> build/lib/sphinx/builders
copying sphinx/builders/changes.py -> build/lib/sphinx/builders
copying sphinx/builders/linkcheck.py -> build/lib/sphinx/builders
copying sphinx/builders/html.py -> build/lib/sphinx/builders
creating build/lib/sphinx/util
copying sphinx/util/tags.py -> build/lib/sphinx/util
copying sphinx/util/inspect.py -> build/lib/sphinx/util
copying sphinx/util/pycompat.py -> build/lib/sphinx/util
copying sphinx/util/console.py -> build/lib/sphinx/util
copying sphinx/util/__init__.py -> build/lib/sphinx/util
copying sphinx/util/compat.py -> build/lib/sphinx/util
copying sphinx/util/stemmer.py -> build/lib/sphinx/util
copying sphinx/util/smartypants.py -> build/lib/sphinx/util
copying sphinx/util/jsdump.py -> build/lib/sphinx/util
copying sphinx/util/texescape.py -> build/lib/sphinx/util
copying sphinx/util/docstrings.py -> build/lib/sphinx/util
copying sphinx/util/png.py -> build/lib/sphinx/util
creating build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/grammar.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/token.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/literals.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/__init__.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/parse.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/pgen.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/driver.py -> build/lib/sphinx/pycode/pgen2
copying sphinx/pycode/pgen2/tokenize.py -> build/lib/sphinx/pycode/pgen2
creating build/lib/sphinx/ext/autosummary
copying sphinx/ext/autosummary/generate.py -> build/lib/sphinx/ext/autosummary
copying sphinx/ext/autosummary/__init__.py -> build/lib/sphinx/ext/autosummary
creating build/lib/sphinx/texinputs
copying sphinx/texinputs/Makefile -> build/lib/sphinx/texinputs
copying sphinx/texinputs/fncychap.sty -> build/lib/sphinx/texinputs
copying sphinx/texinputs/howto.cls -> build/lib/sphinx/texinputs
copying sphinx/texinputs/manual.cls -> build/lib/sphinx/texinputs
copying sphinx/texinputs/python.ist -> build/lib/sphinx/texinputs
copying sphinx/texinputs/sphinx.sty -> build/lib/sphinx/texinputs
copying sphinx/texinputs/tabulary.sty -> build/lib/sphinx/texinputs
creating build/lib/sphinx/themes
creating build/lib/sphinx/themes/basic
copying sphinx/themes/basic/defindex.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/genindex-single.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/genindex-split.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/genindex.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/layout.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/modindex.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/opensearch.xml -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/page.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/search.html -> build/lib/sphinx/themes/basic
copying sphinx/themes/basic/theme.conf -> build/lib/sphinx/themes/basic
creating build/lib/sphinx/themes/basic/changes
copying sphinx/themes/basic/changes/frameset.html -> build/lib/sphinx/themes/basic/changes
copying sphinx/themes/basic/changes/rstsource.html -> build/lib/sphinx/themes/basic/changes
copying sphinx/themes/basic/changes/versionchanges.html -> build/lib/sphinx/themes/basic/changes
creating build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/basic.css -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/doctools.js -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/file.png -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/jquery.js -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/minus.png -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/plus.png -> build/lib/sphinx/themes/basic/static
copying sphinx/themes/basic/static/searchtools.js -> build/lib/sphinx/themes/basic/static
creating build/lib/sphinx/themes/default
copying sphinx/themes/default/theme.conf -> build/lib/sphinx/themes/default
creating build/lib/sphinx/themes/default/static
copying sphinx/themes/default/static/default.css_t -> build/lib/sphinx/themes/default/static
creating build/lib/sphinx/themes/sphinxdoc
copying sphinx/themes/sphinxdoc/layout.html -> build/lib/sphinx/themes/sphinxdoc
copying sphinx/themes/sphinxdoc/theme.conf -> build/lib/sphinx/themes/sphinxdoc
creating build/lib/sphinx/themes/sphinxdoc/static
copying sphinx/themes/sphinxdoc/static/contents.png -> build/lib/sphinx/themes/sphinxdoc/static
copying sphinx/themes/sphinxdoc/static/navigation.png -> build/lib/sphinx/themes/sphinxdoc/static
copying sphinx/themes/sphinxdoc/static/sphinxdoc.css -> build/lib/sphinx/themes/sphinxdoc/static
creating build/lib/sphinx/themes/traditional
copying sphinx/themes/traditional/theme.conf -> build/lib/sphinx/themes/traditional
creating build/lib/sphinx/themes/traditional/static
copying sphinx/themes/traditional/static/traditional.css -> build/lib/sphinx/themes/traditional/static
copying sphinx/locale/sphinx.pot -> build/lib/sphinx/locale
creating build/lib/sphinx/locale/cs
creating build/lib/sphinx/locale/cs/LC_MESSAGES
copying sphinx/locale/cs/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/cs/LC_MESSAGES
copying sphinx/locale/cs/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/cs/LC_MESSAGES
copying sphinx/locale/cs/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/cs/LC_MESSAGES
creating build/lib/sphinx/locale/de
creating build/lib/sphinx/locale/de/LC_MESSAGES
copying sphinx/locale/de/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/de/LC_MESSAGES
copying sphinx/locale/de/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/de/LC_MESSAGES
copying sphinx/locale/de/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/de/LC_MESSAGES
creating build/lib/sphinx/locale/es
creating build/lib/sphinx/locale/es/LC_MESSAGES
copying sphinx/locale/es/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/es/LC_MESSAGES
copying sphinx/locale/es/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/es/LC_MESSAGES
copying sphinx/locale/es/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/es/LC_MESSAGES
creating build/lib/sphinx/locale/fi
creating build/lib/sphinx/locale/fi/LC_MESSAGES
copying sphinx/locale/fi/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/fi/LC_MESSAGES
copying sphinx/locale/fi/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/fi/LC_MESSAGES
copying sphinx/locale/fi/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/fi/LC_MESSAGES
creating build/lib/sphinx/locale/fr
creating build/lib/sphinx/locale/fr/LC_MESSAGES
copying sphinx/locale/fr/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/fr/LC_MESSAGES
copying sphinx/locale/fr/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/fr/LC_MESSAGES
copying sphinx/locale/fr/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/fr/LC_MESSAGES
creating build/lib/sphinx/locale/it
creating build/lib/sphinx/locale/it/LC_MESSAGES
copying sphinx/locale/it/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/it/LC_MESSAGES
copying sphinx/locale/it/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/it/LC_MESSAGES
copying sphinx/locale/it/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/it/LC_MESSAGES
creating build/lib/sphinx/locale/ja
creating build/lib/sphinx/locale/ja/LC_MESSAGES
copying sphinx/locale/ja/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/ja/LC_MESSAGES
copying sphinx/locale/ja/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/ja/LC_MESSAGES
copying sphinx/locale/ja/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/ja/LC_MESSAGES
creating build/lib/sphinx/locale/nl
creating build/lib/sphinx/locale/nl/LC_MESSAGES
copying sphinx/locale/nl/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/nl/LC_MESSAGES
copying sphinx/locale/nl/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/nl/LC_MESSAGES
copying sphinx/locale/nl/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/nl/LC_MESSAGES
creating build/lib/sphinx/locale/pl
creating build/lib/sphinx/locale/pl/LC_MESSAGES
copying sphinx/locale/pl/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/pl/LC_MESSAGES
copying sphinx/locale/pl/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/pl/LC_MESSAGES
copying sphinx/locale/pl/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/pl/LC_MESSAGES
creating build/lib/sphinx/locale/pt_BR
creating build/lib/sphinx/locale/pt_BR/LC_MESSAGES
copying sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/pt_BR/LC_MESSAGES
copying sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/pt_BR/LC_MESSAGES
copying sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/pt_BR/LC_MESSAGES
creating build/lib/sphinx/locale/ru
creating build/lib/sphinx/locale/ru/LC_MESSAGES
copying sphinx/locale/ru/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/ru/LC_MESSAGES
copying sphinx/locale/ru/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/ru/LC_MESSAGES
copying sphinx/locale/ru/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/ru/LC_MESSAGES
creating build/lib/sphinx/locale/sl
creating build/lib/sphinx/locale/sl/LC_MESSAGES
copying sphinx/locale/sl/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/sl/LC_MESSAGES
copying sphinx/locale/sl/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/sl/LC_MESSAGES
copying sphinx/locale/sl/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/sl/LC_MESSAGES
creating build/lib/sphinx/locale/uk_UA
creating build/lib/sphinx/locale/uk_UA/LC_MESSAGES
copying sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/uk_UA/LC_MESSAGES
copying sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/uk_UA/LC_MESSAGES
copying sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/uk_UA/LC_MESSAGES
creating build/lib/sphinx/locale/zh_TW
creating build/lib/sphinx/locale/zh_TW/LC_MESSAGES
copying sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js -> build/lib/sphinx/locale/zh_TW/LC_MESSAGES
copying sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo -> build/lib/sphinx/locale/zh_TW/LC_MESSAGES
copying sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po -> build/lib/sphinx/locale/zh_TW/LC_MESSAGES
copying sphinx/pycode/Grammar.txt -> build/lib/sphinx/pycode
creating build/lib/sphinx/ext/autosummary/templates
copying sphinx/ext/autosummary/templates/module -> build/lib/sphinx/ext/autosummary/templates
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/errors.py -> build/bdist.linux-x86_64/egg/sphinx
creating build/bdist.linux-x86_64/egg/sphinx/writers
copying build/lib/sphinx/writers/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/writers
copying build/lib/sphinx/writers/latex.py -> build/bdist.linux-x86_64/egg/sphinx/writers
copying build/lib/sphinx/writers/text.py -> build/bdist.linux-x86_64/egg/sphinx/writers
copying build/lib/sphinx/writers/html.py -> build/bdist.linux-x86_64/egg/sphinx/writers
creating build/bdist.linux-x86_64/egg/sphinx/locale
creating build/bdist.linux-x86_64/egg/sphinx/locale/es
creating build/bdist.linux-x86_64/egg/sphinx/locale/es/LC_MESSAGES
copying build/lib/sphinx/locale/es/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/es/LC_MESSAGES
copying build/lib/sphinx/locale/es/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/es/LC_MESSAGES
copying build/lib/sphinx/locale/es/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/es/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/zh_TW
creating build/bdist.linux-x86_64/egg/sphinx/locale/zh_TW/LC_MESSAGES
copying build/lib/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/zh_TW/LC_MESSAGES
copying build/lib/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/zh_TW/LC_MESSAGES
copying build/lib/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/zh_TW/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/nl
creating build/bdist.linux-x86_64/egg/sphinx/locale/nl/LC_MESSAGES
copying build/lib/sphinx/locale/nl/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/nl/LC_MESSAGES
copying build/lib/sphinx/locale/nl/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/nl/LC_MESSAGES
copying build/lib/sphinx/locale/nl/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/nl/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/ru
creating build/bdist.linux-x86_64/egg/sphinx/locale/ru/LC_MESSAGES
copying build/lib/sphinx/locale/ru/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/ru/LC_MESSAGES
copying build/lib/sphinx/locale/ru/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/ru/LC_MESSAGES
copying build/lib/sphinx/locale/ru/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/ru/LC_MESSAGES
copying build/lib/sphinx/locale/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/locale
copying build/lib/sphinx/locale/sphinx.pot -> build/bdist.linux-x86_64/egg/sphinx/locale
creating build/bdist.linux-x86_64/egg/sphinx/locale/pl
creating build/bdist.linux-x86_64/egg/sphinx/locale/pl/LC_MESSAGES
copying build/lib/sphinx/locale/pl/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/pl/LC_MESSAGES
copying build/lib/sphinx/locale/pl/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/pl/LC_MESSAGES
copying build/lib/sphinx/locale/pl/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/pl/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/cs
creating build/bdist.linux-x86_64/egg/sphinx/locale/cs/LC_MESSAGES
copying build/lib/sphinx/locale/cs/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/cs/LC_MESSAGES
copying build/lib/sphinx/locale/cs/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/cs/LC_MESSAGES
copying build/lib/sphinx/locale/cs/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/cs/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/sl
creating build/bdist.linux-x86_64/egg/sphinx/locale/sl/LC_MESSAGES
copying build/lib/sphinx/locale/sl/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/sl/LC_MESSAGES
copying build/lib/sphinx/locale/sl/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/sl/LC_MESSAGES
copying build/lib/sphinx/locale/sl/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/sl/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/fi
creating build/bdist.linux-x86_64/egg/sphinx/locale/fi/LC_MESSAGES
copying build/lib/sphinx/locale/fi/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/fi/LC_MESSAGES
copying build/lib/sphinx/locale/fi/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/fi/LC_MESSAGES
copying build/lib/sphinx/locale/fi/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/fi/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/uk_UA
creating build/bdist.linux-x86_64/egg/sphinx/locale/uk_UA/LC_MESSAGES
copying build/lib/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/uk_UA/LC_MESSAGES
copying build/lib/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/uk_UA/LC_MESSAGES
copying build/lib/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/uk_UA/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/pt_BR
creating build/bdist.linux-x86_64/egg/sphinx/locale/pt_BR/LC_MESSAGES
copying build/lib/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/pt_BR/LC_MESSAGES
copying build/lib/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/pt_BR/LC_MESSAGES
copying build/lib/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/pt_BR/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/ja
creating build/bdist.linux-x86_64/egg/sphinx/locale/ja/LC_MESSAGES
copying build/lib/sphinx/locale/ja/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/ja/LC_MESSAGES
copying build/lib/sphinx/locale/ja/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/ja/LC_MESSAGES
copying build/lib/sphinx/locale/ja/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/ja/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/it
creating build/bdist.linux-x86_64/egg/sphinx/locale/it/LC_MESSAGES
copying build/lib/sphinx/locale/it/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/it/LC_MESSAGES
copying build/lib/sphinx/locale/it/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/it/LC_MESSAGES
copying build/lib/sphinx/locale/it/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/it/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/fr
creating build/bdist.linux-x86_64/egg/sphinx/locale/fr/LC_MESSAGES
copying build/lib/sphinx/locale/fr/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/fr/LC_MESSAGES
copying build/lib/sphinx/locale/fr/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/fr/LC_MESSAGES
copying build/lib/sphinx/locale/fr/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/fr/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/locale/de
creating build/bdist.linux-x86_64/egg/sphinx/locale/de/LC_MESSAGES
copying build/lib/sphinx/locale/de/LC_MESSAGES/sphinx.js -> build/bdist.linux-x86_64/egg/sphinx/locale/de/LC_MESSAGES
copying build/lib/sphinx/locale/de/LC_MESSAGES/sphinx.mo -> build/bdist.linux-x86_64/egg/sphinx/locale/de/LC_MESSAGES
copying build/lib/sphinx/locale/de/LC_MESSAGES/sphinx.po -> build/bdist.linux-x86_64/egg/sphinx/locale/de/LC_MESSAGES
creating build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/manual.cls -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/fncychap.sty -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/sphinx.sty -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/Makefile -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/tabulary.sty -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/python.ist -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/texinputs/howto.cls -> build/bdist.linux-x86_64/egg/sphinx/texinputs
copying build/lib/sphinx/cmdline.py -> build/bdist.linux-x86_64/egg/sphinx
creating build/bdist.linux-x86_64/egg/sphinx/themes
creating build/bdist.linux-x86_64/egg/sphinx/themes/default
creating build/bdist.linux-x86_64/egg/sphinx/themes/default/static
copying build/lib/sphinx/themes/default/static/default.css_t -> build/bdist.linux-x86_64/egg/sphinx/themes/default/static
copying build/lib/sphinx/themes/default/theme.conf -> build/bdist.linux-x86_64/egg/sphinx/themes/default
creating build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc
creating build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc/static
copying build/lib/sphinx/themes/sphinxdoc/static/sphinxdoc.css -> build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc/static
copying build/lib/sphinx/themes/sphinxdoc/static/contents.png -> build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc/static
copying build/lib/sphinx/themes/sphinxdoc/static/navigation.png -> build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc/static
copying build/lib/sphinx/themes/sphinxdoc/layout.html -> build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc
copying build/lib/sphinx/themes/sphinxdoc/theme.conf -> build/bdist.linux-x86_64/egg/sphinx/themes/sphinxdoc
creating build/bdist.linux-x86_64/egg/sphinx/themes/basic
creating build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/searchtools.js -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/file.png -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/basic.css -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/minus.png -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/plus.png -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/jquery.js -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/static/doctools.js -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/static
copying build/lib/sphinx/themes/basic/search.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/layout.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/page.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/opensearch.xml -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/modindex.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/genindex.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/defindex.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/theme.conf -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
copying build/lib/sphinx/themes/basic/genindex-split.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
creating build/bdist.linux-x86_64/egg/sphinx/themes/basic/changes
copying build/lib/sphinx/themes/basic/changes/frameset.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/changes
copying build/lib/sphinx/themes/basic/changes/rstsource.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/changes
copying build/lib/sphinx/themes/basic/changes/versionchanges.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic/changes
copying build/lib/sphinx/themes/basic/genindex-single.html -> build/bdist.linux-x86_64/egg/sphinx/themes/basic
creating build/bdist.linux-x86_64/egg/sphinx/themes/traditional
creating build/bdist.linux-x86_64/egg/sphinx/themes/traditional/static
copying build/lib/sphinx/themes/traditional/static/traditional.css -> build/bdist.linux-x86_64/egg/sphinx/themes/traditional/static
copying build/lib/sphinx/themes/traditional/theme.conf -> build/bdist.linux-x86_64/egg/sphinx/themes/traditional
copying build/lib/sphinx/roles.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/__init__.py -> build/bdist.linux-x86_64/egg/sphinx
creating build/bdist.linux-x86_64/egg/sphinx/pycode
copying build/lib/sphinx/pycode/nodes.py -> build/bdist.linux-x86_64/egg/sphinx/pycode
copying build/lib/sphinx/pycode/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/pycode
creating build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/grammar.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/token.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/literals.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/parse.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/pgen.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/driver.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/pgen2/tokenize.py -> build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2
copying build/lib/sphinx/pycode/Grammar.txt -> build/bdist.linux-x86_64/egg/sphinx/pycode
copying build/lib/sphinx/quickstart.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/highlighting.py -> build/bdist.linux-x86_64/egg/sphinx
creating build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/refcounting.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/autodoc.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/jsmath.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/doctest.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/pngmath.py -> build/bdist.linux-x86_64/egg/sphinx/ext
creating build/bdist.linux-x86_64/egg/sphinx/ext/autosummary
copying build/lib/sphinx/ext/autosummary/generate.py -> build/bdist.linux-x86_64/egg/sphinx/ext/autosummary
copying build/lib/sphinx/ext/autosummary/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/ext/autosummary
creating build/bdist.linux-x86_64/egg/sphinx/ext/autosummary/templates
copying build/lib/sphinx/ext/autosummary/templates/module -> build/bdist.linux-x86_64/egg/sphinx/ext/autosummary/templates
copying build/lib/sphinx/ext/ifconfig.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/graphviz.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/coverage.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/inheritance_diagram.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/intersphinx.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/todo.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/ext/mathbase.py -> build/bdist.linux-x86_64/egg/sphinx/ext
copying build/lib/sphinx/theming.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/config.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/setup_command.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/jinja2glue.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/application.py -> build/bdist.linux-x86_64/egg/sphinx
creating build/bdist.linux-x86_64/egg/sphinx/directives
copying build/lib/sphinx/directives/desc.py -> build/bdist.linux-x86_64/egg/sphinx/directives
copying build/lib/sphinx/directives/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/directives
copying build/lib/sphinx/directives/other.py -> build/bdist.linux-x86_64/egg/sphinx/directives
copying build/lib/sphinx/directives/code.py -> build/bdist.linux-x86_64/egg/sphinx/directives
creating build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/htmlhelp.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/latex.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/text.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/qthelp.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/changes.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/linkcheck.py -> build/bdist.linux-x86_64/egg/sphinx/builders
copying build/lib/sphinx/builders/html.py -> build/bdist.linux-x86_64/egg/sphinx/builders
creating build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/tags.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/inspect.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/pycompat.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/console.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/__init__.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/compat.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/stemmer.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/smartypants.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/jsdump.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/texescape.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/docstrings.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/util/png.py -> build/bdist.linux-x86_64/egg/sphinx/util
copying build/lib/sphinx/addnodes.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/environment.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/builder.py -> build/bdist.linux-x86_64/egg/sphinx
copying build/lib/sphinx/search.py -> build/bdist.linux-x86_64/egg/sphinx
byte-compiling build/bdist.linux-x86_64/egg/sphinx/errors.py to errors.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/writers/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/writers/latex.py to latex.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/writers/text.py to text.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/writers/html.py to html.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/locale/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/cmdline.py to cmdline.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/roles.py to roles.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/nodes.py to nodes.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/grammar.py to grammar.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/token.py to token.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/literals.py to literals.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/parse.py to parse.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/pgen.py to pgen.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/driver.py to driver.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/pycode/pgen2/tokenize.py to tokenize.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/quickstart.py to quickstart.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/highlighting.py to highlighting.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/refcounting.py to refcounting.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/autodoc.py to autodoc.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/jsmath.py to jsmath.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/doctest.py to doctest.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/pngmath.py to pngmath.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/autosummary/generate.py to generate.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/autosummary/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/ifconfig.py to ifconfig.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/graphviz.py to graphviz.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/coverage.py to coverage.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/inheritance_diagram.py to inheritance_diagram.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/intersphinx.py to intersphinx.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/todo.py to todo.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/ext/mathbase.py to mathbase.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/theming.py to theming.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/config.py to config.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/setup_command.py to setup_command.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/jinja2glue.py to jinja2glue.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/application.py to application.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/directives/desc.py to desc.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/directives/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/directives/other.py to other.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/directives/code.py to code.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/htmlhelp.py to htmlhelp.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/latex.py to latex.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/text.py to text.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/qthelp.py to qthelp.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/changes.py to changes.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/linkcheck.py to linkcheck.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builders/html.py to html.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/tags.py to tags.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/inspect.py to inspect.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/pycompat.py to pycompat.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/console.py to console.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/__init__.py to __init__.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/compat.py to compat.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/stemmer.py to stemmer.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/smartypants.py to smartypants.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/jsdump.py to jsdump.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/texescape.py to texescape.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/docstrings.py to docstrings.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/util/png.py to png.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/addnodes.py to addnodes.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/environment.py to environment.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/builder.py to builder.pyc
byte-compiling build/bdist.linux-x86_64/egg/sphinx/search.py to search.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying Sphinx.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
creating dist
creating 'dist/Sphinx-0.6.3-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing setuptools-0.6c9-py2.6.egg
Copying setuptools-0.6c9-py2.6.egg to /usr/local/lib/python2.6/site-packages
Adding setuptools 0.6c9 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg
Processing dependencies for setuptools==0.6c9
Finished processing dependencies for setuptools==0.6c9
Processing Sphinx-0.6.3-py2.6.egg
creating /usr/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg
Extracting Sphinx-0.6.3-py2.6.egg to /usr/local/lib/python2.6/site-packages
Adding Sphinx 0.6.3 to easy-install.pth file
Installing sphinx-build script to /usr/local/bin
Installing sphinx-quickstart script to /usr/local/bin
Installing sphinx-autogen script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/Sphinx-0.6.3-py2.6.egg
Processing dependencies for Sphinx==0.6.3
Searching for docutils>=0.4
Reading http://pypi.python.org/simple/docutils/
Reading http://docutils.sourceforge.net/
Best match: docutils 0.6
Downloading http://prdownloads.sourceforge.net/docutils/docutils-0.6.tar.gz?download
Processing docutils-0.6.tar.gz
Running docutils-0.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-lOBGsG/docutils-0.6/egg-dist-tmp-Dz8Zi_
zip_safe flag not set; analyzing archive contents...
docutils.writers.newlatex2e.__init__: module references __file__
docutils.writers.odf_odt.__init__: module references __file__
docutils.writers.pep_html.__init__: module references __file__
docutils.writers.latex2e.__init__: module references __file__
docutils.writers.s5_html.__init__: module references __file__
docutils.writers.html4css1.__init__: module references __file__
docutils.parsers.rst.directives.misc: module references __file__
Adding docutils 0.6 to easy-install.pth file
Installing rst2s5.py script to /usr/local/bin
Installing rstpep2html.py script to /usr/local/bin
Installing rst2odt.py script to /usr/local/bin
Installing rst2html.py script to /usr/local/bin
Installing rst2xml.py script to /usr/local/bin
Installing rst2man.py script to /usr/local/bin
Installing rst2latex.py script to /usr/local/bin
Installing rst2odt_prepstyles.py script to /usr/local/bin
Installing rst2newlatex.py script to /usr/local/bin
Installing rst2pseudoxml.py script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/docutils-0.6-py2.6.egg
Searching for Jinja2>=2.1
Reading http://pypi.python.org/simple/Jinja2/
Reading http://jinja.pocoo.org/
Best match: Jinja2 2.2.1
Downloading http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.2.1.tar.gz#md5=fea849d68891218eb0b21c170f1c32d5
Processing Jinja2-2.2.1.tar.gz
Running Jinja2-2.2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-47Aq3q/Jinja2-2.2.1/egg-dist-tmp-lm_U16
warning: no files found matching 'ez_setup.py'
warning: no previously-included files matching '*' found under directory 'docs/_build/doctrees'
Adding Jinja2 2.2.1 to easy-install.pth file

Installed /usr/local/lib/python2.6/site-packages/Jinja2-2.2.1-py2.6.egg
Searching for Pygments>=0.8
Reading http://pypi.python.org/simple/Pygments/
Reading http://pygments.org/
Reading http://pygments.pocoo.org/
Best match: Pygments 1.1.1
Downloading http://pypi.python.org/packages/2.6/P/Pygments/Pygments-1.1.1-py2.6.egg#md5=310114f94710d28910fe2ed36bb79c8c
Processing Pygments-1.1.1-py2.6.egg
creating /usr/local/lib/python2.6/site-packages/Pygments-1.1.1-py2.6.egg
Extracting Pygments-1.1.1-py2.6.egg to /usr/local/lib/python2.6/site-packages
Adding Pygments 1.1.1 to easy-install.pth file
Installing pygmentize script to /usr/local/bin

Installed /usr/local/lib/python2.6/site-packages/Pygments-1.1.1-py2.6.egg
Finished processing dependencies for Sphinx==0.6.3
</pre>]]>
        
    </content>
</entry>

<entry>
    <title>Sphinxを使って日本語PDFを出力する</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/sphinxpdf.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.175</id>

    <published>2009-12-06T05:41:51Z</published>
    <updated>2010-02-20T08:01:16Z</updated>

    <summary> 		 			ドキュメント生成ツールのSphinxがよさげ。なのだけど日本語PD...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="Fedora" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Sphinx" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>ドキュメント生成ツールのSphinxがよさげ。なのだけど日本語PDFに苦戦したんので投稿しとく。</p><br />
			<h4> 環境</h4><br />
			<p>Fedora12</p><br />
			<p>Python2.6.2（Fedora12に初期状態で入っている）</p><br />
			<br></p>

<p>			<h4> Sphinx</h4><br />
			<h5> ドキュメント</h5><br />
			<p>Sphinxについては渋川さんが翻訳されたドキュメントがある。</p><br />
			<ul><br />
				<li> <a href="http://sphinx.shibu.jp/" target="_blank">Sphinx - 渋川さん翻訳</a></li><br />
				<li> <a href="http://sphinx.pocoo.org/" target="_blank">Sphinx - Original</a></li><br />
			</ul><br />
			<p><a href="http://pypi.python.org/pypi/Sphinx" target="_blank">http://pypi.python.org/pypi/Sphinx</a></p><br />
<pre class="syntax-highlight"><br />
wget http://pypi.python.org/packages/source/S/Sphinx/Sphinx-0.6.3.tar.gz<br />
tar zxf Sphinx-0.6.3.tar.gz<br />
cd Sphinx-0.6.3<br />
python setup.py install<br />
</pre></p>

<p>			<p>Sphinxのインストール完了。</p><br />
			<br></p>

<p>			<h5> Sphinxプロジェクトの作成</h5><br />
			<p>Sphinxプロジェクトを作成したいディレクトリで下記コマンドを実行。</p><br />
<pre class="syntax-highlight"><br />
sphinx-quickstart<br />
</pre></p>

<p>			<p>たくさん質問されるから答える。</p><br />
			<p>日本語PDFを生成するためなら聞かれたオプションはデフォルト値のままでOK。</p><br />
			<br></p>

<p>			<p>プロジェクトが生成されたら（オプションにもよるけど）こんな感じのディレクトリになっているはず。</p><br />
<pre><br />
.<br />
|-- Makefile<br />
|-- build<br />
|-- make.bat<br />
`-- source<br />
    |-- _static<br />
    |-- _templates<br />
    |-- conf.py<br />
    `-- index.rst<br />
</pre></p>

<p>			<br></p>

<p>			<p>試しにHTMLを生成してみる。</p><br />
<pre class="syntax-highlight"><br />
make html<br />
</pre></p>

<p>			<p>すると、build/htmlの配下に生成される。（あ、jQuery使ってるんだー）</p><br />
<pre><br />
.<br />
|-- Makefile<br />
|-- build<br />
|   |-- doctrees<br />
|   |   |-- environment.pickle<br />
|   |   `-- index.doctree<br />
|   `-- html<br />
|       |-- _sources<br />
|       |   `-- index.txt<br />
|       |-- _static<br />
|       |   |-- basic.css<br />
|       |   |-- default.css<br />
|       |   |-- doctools.js<br />
|       |   |-- file.png<br />
|       |   |-- jquery.js<br />
|       |   |-- minus.png<br />
|       |   |-- plus.png<br />
|       |   |-- pygments.css<br />
|       |   `-- searchtools.js<br />
|       |-- genindex.html<br />
|       |-- index.html<br />
|       |-- objects.inv<br />
|       |-- search.html<br />
|       `-- searchindex.js<br />
|-- make.bat<br />
`-- source<br />
    |-- _static<br />
    |-- _templates<br />
    |-- conf.py<br />
    `-- index.rst<br />
</pre></p>

<p>			<br></p>

<p>			<h4> rst2pdf</h4><br />
			<p>次にreStructuredTextをPDF化してくれるrst2pdfを入れる。</p><br />
			<p><a href="http://code.google.com/p/rst2pdf/" target="_blank">http://code.google.com/p/rst2pdf/</a></p><br />
<pre class="syntax-highlight"><br />
wget http://rst2pdf.googlecode.com/files/rst2pdf-0.12.3.tar.gz<br />
tar zxf rst2pdf-0.12.3.tar.gz<br />
cd rst2pdf-0.12.3<br />
python setup.py install<br />
</pre></p>

<p>			<p>rst2pdfのSphinxとの連携は下記に記載がある。</p><br />
			<p><a href="http://rst2pdf.googlecode.com/svn/trunk/doc/manual.txt" target="_blank">http://rst2pdf.googlecode.com/svn/trunk/doc/manual.txt</a></p><br />
			<p>埋込み用フォントをインストール後設定する。</p><br />
			<br></p>

<p>			<h4> 埋込み用フォントのインストール</h4><br />
			<p>今回の日本語PDFの出力で、一番苦戦したのがここ。</p><br />
			<p><a href="http://ossipedia.ipa.go.jp/ipafont/" target="_blank">IPAフォント</a>と<a href="http://dicey.org/vlgothic/" target="_blank">VLゴシックフォント</a>をインストール。</p><br />
			<h5> IPAフォント</h5><br />
			<p><a href="http://ossipedia.ipa.go.jp/ipafont/" target="_blank">http://ossipedia.ipa.go.jp/ipafont/</a></p><br />
<pre class="syntax-highlight"><br />
wget http://info.openlab.ipa.go.jp/ipafont/fontdata/IPAfont00301.zip<br />
unzip IPAfont00301.zip<br />
cd IPAfont00301<br />
</pre></p>

<p>			<p>フォントファイル.otfをFedoraのフォントディレクトリにコピー</p><br />
<pre class="syntax-highlight"><br />
cp *.otf /usr/share/fonts/<br />
</pre></p>

<p>			<br></p>

<p>			<h5> VLゴシックフォント</h5><br />
			<p><a href="http://dicey.org/vlgothic/" target="_blank">http://dicey.org/vlgothic/</a></p><br />
<pre class="syntax-highlight"><br />
wget http://jaist.dl.sourceforge.jp/vlgothic/44715/VLGothic-20091202.zip<br />
unzip VLGothic-20091202.zip <br />
cd VLGothic<br />
</pre></p>

<p>			<p>IPAフォントと同様に.ttfファイルをフォントディレクトリにコピー</p><br />
<pre class="syntax-highlight"><br />
cp *.ttf /usr/share/fonts/<br />
</pre></p>

<p>			<br></p>

<p>			<h4>Sphinxとrst2pdfの連携</h4><br />
			<p><a href="http://rst2pdf.googlecode.com/svn/trunk/doc/manual.txt" target="_blank">http://rst2pdf.googlecode.com/svn/trunk/doc/manual.txt</a></p><br />
			<p>に記載されてる。</p><br />
			<h5> extensionsの書き換え</h5><br />
			<p>source/conf.pyのextensionsを書き換える。</p><br />
<pre class="syntax-highlight"><br />
extensions = ['<span class="synConstant">sphinx.ext.autodoc</span>','<span class="synConstant">rst2pdf.pdfbuilder</span>']<br />
</pre></p>

<p>			<br></p>

<p>			<h5> PDFのオプションを設定</h5><br />
			<p>source/conf.pyに下記を追加する。</p><br />
<pre class="syntax-highlight"><br />
<span class="synComment"># -- Options for PDF output --------------------------------------------------</span></p>

<p><span class="synComment"># Grouping the document tree into PDF files. List of tuples</span><br />
<span class="synComment"># (source start file, target name, title, author, options).</span><br />
<span class="synComment">#</span><br />
<span class="synComment"># If there is more than one author, separate them with \\.</span><br />
<span class="synComment"># For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor'</span><br />
<span class="synComment">#</span><br />
<span class="synComment"># The options element is a dictionary that lets you override </span><br />
<span class="synComment"># this config per-document.</span><br />
<span class="synComment"># For example, </span><br />
<span class="synComment"># ('index', u'MyProject', u'My Project', u'Author Name', </span><br />
<span class="synComment">#  dict(pdf_compressed = True))</span><br />
<span class="synComment"># would mean that specific document would be compressed</span><br />
<span class="synComment"># regardless of the global pdf_compressed setting.</span><br />
    <br />
pdf_documents = [ <br />
    ('<span class="synConstant">index</span>', u'<span class="synConstant">MyProject</span>', u'<span class="synConstant">My Project</span>', u'<span class="synConstant">Author Name</span>'),<br />
]</p>

<p><span class="synComment"># A comma-separated list of custom stylesheets. Example:</span><br />
pdf_stylesheets = ['<span class="synConstant">sphinx</span>','<span class="synConstant">kerning</span>','<span class="synConstant">a4</span>','<span class="synConstant">ja</span>']</p>

<p><span class="synComment"># Create a compressed PDF</span><br />
<span class="synComment"># Use True/False or 1/0</span><br />
<span class="synComment"># Example: compressed=True</span><br />
<span class="synComment">#pdf_compressed = False</span></p>

<p><span class="synComment"># A colon-separated list of folders to search for fonts. Example:</span><br />
pdf_font_path = ['<span class="synConstant">/usr/share/fonts</span>']</p>

<p><span class="synComment"># Language to be used for hyphenation support</span><br />
pdf_language = &#34;<span class="synConstant">ja</span>&#34;<br />
    <br />
<span class="synComment"># Mode for literal blocks wider than the frame. Can be</span><br />
<span class="synComment"># overflow, shrink or truncate</span><br />
<span class="synComment">#pdf_fit_mode = &#34;shrink&#34;</span></p>

<p><span class="synComment"># Section level that forces a break page.</span><br />
<span class="synComment"># For example: 1 means top-level sections start in a new page</span><br />
<span class="synComment"># 0 means disabled</span><br />
<span class="synComment">#pdf_break_level = 0</span></p>

<p><span class="synComment"># When a section starts in a new page, force it to be 'even', 'odd',</span><br />
<span class="synComment"># or just use 'any'</span><br />
<span class="synComment">#pdf_breakside = 'any'</span></p>

<p><span class="synComment"># Insert footnotes where they are defined instead of </span><br />
<span class="synComment"># at the end.</span><br />
<span class="synComment">#pdf_inline_footnotes = True</span></p>

<p><span class="synComment"># verbosity level. 0 1 or 2</span><br />
<span class="synComment">#pdf_verbosity = 0</span></p>

<p><span class="synComment"># If false, no index is generated.</span><br />
<span class="synComment">#pdf_use_index = True</span></p>

<p><span class="synComment"># If false, no modindex is generated.</span><br />
<span class="synComment">#pdf_use_modindex = True</span></p>

<p><span class="synComment"># If false, no coverpage is generated.</span><br />
<span class="synComment">#pdf_use_coverpage = True</span></p>

<p><span class="synComment"># Documents to append as an appendix to all manuals.    </span><br />
<span class="synComment">#pdf_appendices = []</span></p>

<p><span class="synComment"># Enable experimental feature to split table cells. Use it</span><br />
<span class="synComment"># if you get &#34;DelayedTable too big&#34; errors</span><br />
<span class="synComment">#pdf_splittables = False</span></p>

<p><span class="synComment"># Set the default DPI for images</span><br />
<span class="synComment">#pdf_default_dpi = 72</span><br />
</pre></p>

<p>			<h5> Makefileにpdfを追加</h5><br />
			<p>Makefileにpdfを追加する。</p><br />
<pre><br />
pdf:<br />
    $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) build/pdf<br />
    @echo<br />
    @echo &#34;Build finished. The PDF files are in build/pdf.&#34;<br />
</pre></p>

<p>			<h5> スタイルシートの設定</h5><br />
			<p>Sphinxプロジェクト直下にja.jsonファイルを作成する。</p><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">{</span><br />
  <span class="synConstant">&#34;embeddedFonts&#34;</span> :<br />
<span class="synIdentifier">[[</span><span class="synConstant">&#34;VL-Gothic-Regular.ttf&#34;</span>,<span class="synConstant">&#34;VL-PGothic-Regular.ttf&#34;</span>,<span class="synConstant">&#34;ipam.otf&#34;</span>,<span class="synConstant">&#34;ipag.otf&#34;</span>,<span class="synConstant">&#34;ipagp.otf&#34;</span>,<span class="synConstant">&#34;ipamp.otf&#34;</span><span class="synIdentifier">]]</span>,<br />
  <span class="synConstant">&#34;fontsAlias&#34;</span> : <span class="synIdentifier">{</span><br />
    <span class="synConstant">&#34;stdFont&#34;</span>: <span class="synConstant">&#34;VL-PGothic-Regular&#34;</span>,<br />
    <span class="synConstant">&#34;stdBold&#34;</span>: <span class="synConstant">&#34;VL-PGothic-Regular&#34;</span>,<br />
    <span class="synConstant">&#34;stdItalic&#34;</span>: <span class="synConstant">&#34;VL-PGothic-Regular&#34;</span>,<br />
    <span class="synConstant">&#34;stdMono&#34;</span>: <span class="synConstant">&#34;VL-Gothic-Regular&#34;</span><br />
  <span class="synIdentifier">}</span>,<br />
  <span class="synConstant">&#34;styles&#34;</span> : <span class="synIdentifier">[</span><br />
    <span class="synIdentifier">[</span><span class="synConstant">&#34;base&#34;</span> , <span class="synIdentifier">{</span><br />
      <span class="synConstant">&#34;wordWrap&#34;</span>: <span class="synConstant">&#34;CJK&#34;</span><br />
    <span class="synIdentifier">}]</span>,<br />
    <span class="synIdentifier">[</span><span class="synConstant">&#34;literal&#34;</span> , <span class="synIdentifier">{</span><br />
      <span class="synConstant">&#34;wordWrap&#34;</span>: <span class="synConstant">&#34;None&#34;</span><br />
    <span class="synIdentifier">}]</span><br />
  <span class="synIdentifier">]</span><br />
<span class="synIdentifier">}</span><br />
</pre></p>

<p>			<p>2行目あたりで今回追加した<a href="http://ossipedia.ipa.go.jp/ipafont/" target="_blank">IPAフォント</a>と<a href="http://dicey.org/vlgothic/" target="_blank">VLゴシックフォント</a>を設定してる。（このコードだとVL-PGothic-Regularしか設定してないけど...）</p><br />
			<h4> 試す</h4><br />
			<p>日本語の.rstファイルを作り下記コマンドを実行。</p><br />
<pre class="syntax-highlight"><br />
make pdf<br />
</pre></p>

<p>			<p>すると、</p><br />
			<p>build/pdf/にpdfが日本語PDFが生成される！</p><br />
			<br></p>

<p>			<h4> 参考</h4><br />
			<p>下記の先人達を参考にしました。感謝。</p><br />
			<ul><br />
				<li> <a href="http://d.hatena.ne.jp/w650/20091120/1258703735" target="_blank">Sphinxを使ってPDFドキュメントを生成する - azlab 開発Memo</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/nullpobug/20090424/1240510391" target="_blank">rst2pdfをWindowsで使ってみた - 偏った言語信者の垂れ流し</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/MiCHiLU/20091009/1255065687" target="_blank">Sphinxで日本語PDFを生成する - 湘南ぱいそん</a></li><br />
				<li> <a href="http://d.hatena.ne.jp/kompiro/20090110/1231581580" target="_blank">rst2pdfを使うには - Fly me to the Helios</a></li><br />
			</ul></p>

<p>		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[Ruby]Rubyについて。</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/rubyruby.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.174</id>

    <published>2009-12-03T14:08:03Z</published>
    <updated>2010-02-20T08:01:15Z</updated>

    <summary> 		 			そういえば。私はRubyの基礎構文は知ってるけど、ほとんど触った事...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>そういえば。私はRubyの基礎構文は知ってるけど、ほとんど触った事がない。それには理由がある。</p><br />
			<h4> Rubyを触った事がない理由。</h4><br />
			<p>ずばり、新人時代の師匠にあたる方がばりばりのRubyist。</p><br />
			<p>（というか私の年齢より長くプログラミングしてるエンジニア。Lisperでもある。現場では「神」って言われてた。）</p><br />
			<br></p>

<p>			<p>この方を見習い育ってきたわけだけど、反抗期って言うのが大人になってもあった。恥ずかしい。</p><br />
			<br></p>

<p>			<p>たった、それだけの理由。いま思えばもったいない＆申し訳ない事したな...。</p><br />
			<br></p>

<p>			<h4> で？</h4><br />
			<p>で、今はその方と一緒に仕事はしないけど、たまに勉強会に行ったりしてる。</p><br />
			<p>オライリーのRuby本を購入して触ってみようかなー。</p><br />
			<p>（だけど、Python好きだし、仕事ではPythonだし、ニッチが被ってるし...）</p><br />
			<h4> なんでRubyのこと書いたの？</h4><br />
			<p>なんでRubyのことを考えたかというと、</p><br />
			<p>若造も若造時代、Matz氏ことRubyの松本さんがブログにコメントをくれたことがあったこと考えてたら思い出したから。</p><br />
			<p><a href="http://www.rokujyouhitoma.com/javapg/2007/08/post_49.html" target="_blank">学ぶことは多くある</a></p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>JavaScriptで「Newton法による平方根」を求めてみる。</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/12/javascriptnewton.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.173</id>

    <published>2009-12-03T14:08:02Z</published>
    <updated>2010-02-20T08:01:15Z</updated>

    <summary> 		 			SICPのP.12~　1.1.7例：Newton法による平方根をJ...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SICP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Scheme" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<p>SICPのP.12~　1.1.7例：Newton法による平方根をJavaScriptで求めてみた。</p><br />
			<br></p>

<p>			<p>見慣れた言語に書き直すと理解度が高まるから書き直して損はない。</p><br />
			<br></p>

<p>			<h4> JavaScriptで1.1.7例：Newton法による平方根を求める。</h4><br />
<pre class="syntax-highlight"><br />
<span class="synComment">//schemeではif文だが、JavaScriptでは三項演算子を</span><br />
<span class="synIdentifier">var</span> sqrt_iter = <span class="synIdentifier">function</span>(guess, x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> (good_enough(guess, x)) ? guess : sqrt_iter(improve(guess, x), x);<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synIdentifier">var</span> improve = <span class="synIdentifier">function</span>(guess, x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> average(guess, x / guess);<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synIdentifier">var</span> average = <span class="synIdentifier">function</span>(x, y)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> (x + y) / 2;<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synComment">//JavaScriptでは戻り値をBoolean型として明示化</span><br />
<span class="synIdentifier">var</span> good_enough = <span class="synIdentifier">function</span>(guess, x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> (abs((square(guess)) - x) &#60; 0.001) ? <span class="synConstant">true</span> : <span class="synConstant">false</span>;<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synIdentifier">var</span> square = <span class="synIdentifier">function</span>(x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> x * x;<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synIdentifier">var</span> sqrt = <span class="synIdentifier">function</span>(x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> sqrt_iter(1.0, x);<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synComment">//絶対値を求めるabsプロシージャはMathオブジェクトのabsメソッドを利用</span><br />
<span class="synIdentifier">var</span> abs = <span class="synIdentifier">function</span>(x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> Math.abs(x);<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synComment">//実行例</span><br />
<span class="synStatement">alert</span>(sqrt(9)); <span class="synComment">//3.00009155413138</span><br />
<span class="synStatement">alert</span>(sqrt(100 + 37)); <span class="synComment">//11.704699917758145</span><br />
</pre></p>

<p>			<p>JavaScriptだと変数名、関数名に「?」と「-」が使えないので、</p><br />
			<p>sqrt-iterはsqrt_iter。</p><br />
			<p>good-enough?はgood-enoughに名称を変更。</p><br />
			<h5> P.14 問題1.7</h5><br />
			<p>SICPのP.14 問題1.7でgood-enoughを改良するのだけど、割愛。</p><br />
			<br></p>

<p>			<h4> Schemeで1.1.7例：Newton法による平方根</h4><br />
			<p>元のSchemeコード。</p><br />
<pre class="syntax-highlight"><br />
<span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>sqrt-iter guess x<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span><span class="synStatement">if</span> <span class="synSpecial">(</span>good-enough? guess x<span class="synSpecial">)</span><br />
    guess<br />
    <span class="synSpecial">(</span>sqrt-iter <span class="synSpecial">(</span>improve guess x<span class="synSpecial">)</span><br />
                x<span class="synSpecial">)))</span></p>

<p><span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>improve guess x<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span>average guess <span class="synSpecial">(</span><span class="synIdentifier">/</span> x guess<span class="synSpecial">)))</span></p>

<p><span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>average x y<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span><span class="synIdentifier">/</span> <span class="synSpecial">(</span><span class="synIdentifier">+</span> x y<span class="synSpecial">)</span> <span class="synConstant">2</span><span class="synSpecial">))</span></p>

<p><span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>good-enough? guess x<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span><span class="synIdentifier">&#60;</span> <span class="synSpecial">(</span><span class="synIdentifier">abs</span> <span class="synSpecial">(</span><span class="synIdentifier">-</span> <span class="synSpecial">(</span>square guess<span class="synSpecial">)</span> x<span class="synSpecial">))</span> <span class="synConstant">0.0001</span><span class="synSpecial">))</span></p>

<p><span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>square x<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span><span class="synIdentifier">*</span> x x<span class="synSpecial">))</span></p>

<p><span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span><span class="synIdentifier">sqrt</span> x<span class="synSpecial">)</span><br />
  <span class="synSpecial">(</span>sqar-iter <span class="synConstant">1.0</span> x<span class="synSpecial">))</span></p>

<p><span class="synComment">;;実行例</span><br />
<span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span><span class="synIdentifier">sqrt</span> <span class="synConstant">9</span><span class="synSpecial">))</span> <span class="synComment">;;3.00009155413138</span><br />
<span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span><span class="synIdentifier">sqrt</span> <span class="synSpecial">(</span><span class="synIdentifier">+</span> <span class="synConstant">100</span> <span class="synConstant">37</span><span class="synSpecial">))</span> <span class="synComment">;;11.704699917758145</span><br />
</pre></p>

<p>			<br></p>

<p>			<h4> 参考</h4><br />
			<h5> JavaScriptシェル</h5><br />
			<p>テストには、下記Javascriptシェルを利用しました。</p><br />
			<p>構文のチェックをしてくれる便利な一品。師匠作。</p><br />
			<p><a href="http://www.h4.dion.ne.jp/~unkai/js/js_shell.html" target="_blank">Javascriptシェル</a></p><br />
			<h5> SICP Lite</h5><br />
			<p>SICP Liteコミュニティ。およそ隔週ごとに開催。前回は休んじゃった&#62;_&#60;</p><br />
			<p>過去の議事録が揃っているので参考にしました。</p><br />
			<p><a href="http://groups.google.co.jp/group/sicp-lite" target="_blank">SICP Lite </a></p><br />
			<br></p>

<p>			<h4> 参考文献</h4><br />
			<p><div class="hatena-asin-detail"></p><br />
			<p><a target="_blank" href="http://d.hatena.ne.jp/asin/489471163X"><img alt="計算機プログラムの構造と解釈" src="http://ecx.images-amazon.com/images/I/51ZSMEJ9Y2L._SL160_.jpg" class="hatena-asin-detail-image" title="計算機プログラムの構造と解釈"></a></p><br />
			<p><div class="hatena-asin-detail-info"></p><br />
			<p>	<p class="hatena-asin-detail-title"><a target="_blank" href="http://d.hatena.ne.jp/asin/489471163X">計算機プログラムの構造と解釈</a></p></p><br />
			<p>	<ul><br />
					<li><span class="hatena-asin-detail-label">作者:</span> <a target="_blank" href="http://d.hatena.ne.jp/keyword/%a5%b8%a5%a7%a5%e9%a5%eb%a5%c9%a1%a6%a5%b8%a5%a7%a5%a4%a5%b5%a5%b9%a5%de%a5%f3" class="keyword">ジェラルド・ジェイサスマン</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/%a5%b8%a5%e5%a5%ea%a1%bc%a5%b5%a5%b9%a5%de%a5%f3" class="keyword">ジュリーサスマン</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/%a5%cf%a5%ed%a5%eb%a5%c9%a5%a8%a5%a4%a5%d6%a5%eb%a5%bd%a5%f3" class="keyword">ハロルドエイブルソン</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/Gerald%20Jay%20Sussman" class="keyword">Gerald Jay Sussman</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/Julie%20Sussman" class="keyword">Julie Sussman</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/Harold%20Abelson" class="keyword">Harold Abelson</a>, <a target="_blank" href="http://d.hatena.ne.jp/keyword/%cf%c2%c5%c4%b1%d1%b0%ec" class="keyword">和田英一</a></li><br />
					<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a target="_blank" href="http://d.hatena.ne.jp/keyword/%a5%d4%a5%a2%a5%bd%a5%f3%a5%a8%a5%c7%a5%e5%a5%b1%a1%bc%a5%b7%a5%e7%a5%f3" class="keyword">ピアソンエデュケーション</a></li><br />
					<li><span class="hatena-asin-detail-label">発売日:</span> 2000/02</li><br />
					<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><br />
					<li><span class="hatena-asin-detail-label">購入</span>: 23人 <span class="hatena-asin-detail-label">クリック</span>: 318回</li><br />
					<li><a target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/rokujyouhit04-22/">Amazon.co.jpで詳細を見る</a></li><br />
				</ul></p><br />
			<p></div></p><br />
			<p></div></p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>カリー化</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/11/post-20.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.172</id>

    <published>2009-11-30T06:20:33Z</published>
    <updated>2010-02-20T08:01:14Z</updated>

    <summary> 		 			 JavaScriptでカリー化 			私の第一言語であるJava...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="Gauche" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Python" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p><br />
		<div class="section"><br />
			<h4> JavaScriptでカリー化</h4><br />
			<p>私の第一言語であるJavaScriptでカリー化を試してみる。</p><br />
			<p>JavaScriptはお師匠の<a href="http://www.h4.dion.ne.jp/~unkai/js/js_shell.html" target="_blank">Javascriptシェル</a>で実行すると楽ちん。</p><br />
			<br></p>

<p>			<p>例題はWikipediaのカリー化を参考にしよう。</p><br />
			<blockquote title="http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96" cite="http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96"><br />
			<p>関数 f が<a href="http://upload.wikimedia.org/math/9/3/6/936d3616ae1788839acf2cbb7228fad2.png" class="http-image" target="_blank"><img src="http://upload.wikimedia.org/math/9/3/6/936d3616ae1788839acf2cbb7228fad2.png" class="http-image" alt="http://upload.wikimedia.org/math/9/3/6/936d3616ae1788839acf2cbb7228fad2.png"></a>の形のとき、f をカリー化したものを g とすると、g は<a href="http://upload.wikimedia.org/math/8/6/7/8678d9a38b70c18ff730a4326baf87b9.png" class="http-image" target="_blank"><img src="http://upload.wikimedia.org/math/8/6/7/8678d9a38b70c18ff730a4326baf87b9.png" class="http-image" alt="http://upload.wikimedia.org/math/8/6/7/8678d9a38b70c18ff730a4326baf87b9.png"></a>の形を取る。非カリー化（uncurrying）とは、これの逆の変換である。</p><br />
			<p>カリー化とは直感的には「引数を幾つか固定すると、残った引数の関数が得られる」ということである。たとえば、除算の関数<a href="http://upload.wikimedia.org/math/8/b/0/8b012fa4da01406236b0b0a5cb959a03.png" class="http-image" target="_blank"><img src="http://upload.wikimedia.org/math/8/b/0/8b012fa4da01406236b0b0a5cb959a03.png" class="http-image" alt="http://upload.wikimedia.org/math/8/b/0/8b012fa4da01406236b0b0a5cb959a03.png"></a>をカリー化したものを cdiv とし、inv = cdiv(1) とすると、inv は新しい関数となり、<a href="http://upload.wikimedia.org/math/d/2/0/d201da20452ac22a913f0debbcdd4dc4.png" class="http-image" target="_blank"><img src="http://upload.wikimedia.org/math/d/2/0/d201da20452ac22a913f0debbcdd4dc4.png" class="http-image" alt="http://upload.wikimedia.org/math/d/2/0/d201da20452ac22a913f0debbcdd4dc4.png"></a> 、つまり引数の逆数を返す関数になる。</p><br />
			<cite><a href="http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96" target="_blank">http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96</a></cite></blockquote><br />
			<h5>実際に書いてみた。</h5><br />
			<p>例題を実直にdiv関数を書くとこんな感じ。</p><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">var</span> div = <span class="synIdentifier">function</span>(x,y)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> x / y;<br />
<span class="synIdentifier">}</span>;<br />
<span class="synStatement">alert</span>(div(2, 1));<span class="synComment">//2</span><br />
</pre></p>

<p>			<p>2つ目の例を落とし込むとこんな感じ。</p><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">var</span> inv = <span class="synIdentifier">function</span>(x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> <span class="synIdentifier">function</span>(y)<span class="synIdentifier">{</span><br />
    <span class="synStatement">return</span> x / y;<br />
  <span class="synIdentifier">}</span>;<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synIdentifier">var</span> cdiv = inv(10);<span class="synComment">//inv(10)のfunctionを変数cdivにbindする</span></p>

<p><span class="synStatement">alert</span>(cdiv(1));<span class="synComment">//10</span><br />
<span class="synStatement">alert</span>(cdiv(2));<span class="synComment">//5</span></p>

<p><span class="synIdentifier">var</span> cdiv = inv(2);<span class="synComment">//inv(2)のfunctionを変数cdivにbindする</span><br />
<span class="synStatement">alert</span>(cdiv(1));<span class="synComment">//2</span><br />
<span class="synStatement">alert</span>(cdiv(2));<span class="synComment">//1</span></p>

<p><span class="synStatement">alert</span>(inv(10)(2));<span class="synComment">//5</span><br />
<span class="synStatement">alert</span>(inv(10)(5));<span class="synComment">//2</span><br />
</pre></p>

<p>			<br></p>

<p>			<p>書いて分かったけど、高階関数の一種なのね。なるほど。</p><br />
			<h5>乗法してみた</h5><br />
			<p>もう少し書いてみる。次は乗法。</p><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">var</span> multiplication_curry = <span class="synIdentifier">function</span>(x)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> <span class="synIdentifier">function</span>(y)<span class="synIdentifier">{</span><br />
    <span class="synStatement">return</span> x * y;<br />
  <span class="synIdentifier">}</span>;<br />
<span class="synIdentifier">}</span>;</p>

<p><span class="synComment">//実行例1</span><br />
<span class="synIdentifier">var</span> first = multiplication_curry(1);<br />
<span class="synIdentifier">var</span> second = multiplication_curry(2);<br />
<span class="synIdentifier">var</span> third = multiplication_curry(3);<br />
<span class="synStatement">alert</span>(first(second((third(4)))));<span class="synComment">//24</span><br />
<span class="synComment">//first(second((third(4))))</span><br />
<span class="synComment">//first(second((3 * 4)))</span><br />
<span class="synComment">//first(second((12)))</span><br />
<span class="synComment">//first(2 * 12)</span><br />
<span class="synComment">//first(24)</span><br />
<span class="synComment">//1 * 24</span><br />
<span class="synComment">//24</span></p>

<p><span class="synComment">//実行例2: 実行例1とは当然等価。</span><br />
<span class="synStatement">alert</span>(multiplication_curry(1)(multiplication_curry(2)(multiplication_curry(3)(4))));<span class="synComment">//24</span><br />
<span class="synComment">//multiplication_curry(1)(multiplication_curry(2)(3 * 4))</span><br />
<span class="synComment">//multiplication_curry(1)(multiplication_curry(2)(12))</span><br />
<span class="synComment">//multiplication_curry(1)(2 * 12))</span><br />
<span class="synComment">//multiplication_curry(1)(24))</span><br />
<span class="synComment">//1 * 24</span><br />
<span class="synComment">//24</span></p>

</pre>

<p>			<p>展開式も書いてみた。</p><br />
			<p>JavaScriptでこの書き方好きだけど、他人のコードをリバースエンジニアリングするのは勘弁。</p><br />
			<br></p>

<p>			<h4> Pythonでカリー化</h4><br />
			<p>乗法を第2言語のPythonで書いてみる。</p><br />
<pre class="syntax-highlight"><br />
multiplication_curry = <span class="synStatement">lambda</span> x: <span class="synStatement">lambda</span> y: x * y</p>

<p><span class="synStatement">print</span>(multiplication_curry(1)(multiplication_curry(2)(multiplication_curry(3)(4))))<span class="synComment">#24</span><br />
</pre></p>

<p>			<p>lamda式を使う。return文がないので綺麗に書けた。</p><br />
			<h4> Gaucheでカリー化</h4><br />
			<p>ついでにGaucheでもカリー化。</p><br />
<pre class="syntax-highlight"><br />
<span class="synSpecial">(</span><span class="synStatement">define</span> <span class="synSpecial">(</span>multiplication_curry x<span class="synSpecial">)</span><br />
        <span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">(</span>y<span class="synSpecial">)</span> <span class="synSpecial">(</span><span class="synIdentifier">*</span> x y<span class="synSpecial">)))</span></p>

<p><span class="synSpecial">((</span>multiplication_curry <span class="synConstant">1</span><span class="synSpecial">)</span><br />
        <span class="synSpecial">((</span>multiplication_curry <span class="synConstant">2</span><span class="synSpecial">)</span><br />
        <span class="synSpecial">((</span>multiplication_curry <span class="synConstant">3</span><span class="synSpecial">)</span><br />
        <span class="synConstant">4</span><span class="synSpecial">)))</span><br />
<span class="synComment">;;24</span><br />
</pre></p>

<p>			<p>大体理解した。</p><br />
			<br></p>

<p>			<h4> 別件の疑問</h4><br />
			<p>JavaScriptの関数定義の際、変数に無名関数を束縛する書き方と関数を定義する書き方どっちが主流なんだろう？？</p><br />
			<h5> 変数に無名関数を束縛する書き方例</h5><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">var</span> div = <span class="synIdentifier">function</span>(x,y)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> x / y;<br />
<span class="synIdentifier">}</span>;<br />
</pre></p>

<p>			<br></p>

<p>			<h5> 関数の定義</h5><br />
<pre class="syntax-highlight"><br />
<span class="synIdentifier">function</span> div(x,y)<span class="synIdentifier">{</span><br />
  <span class="synStatement">return</span> x / y;<br />
<span class="synIdentifier">}</span><br />
</pre></p>

<p>			<br></p>

<p>			<p>個人的には前者の変数に無名関数を束縛する書き方なのだけれど...どっちが良いのだろうか...？？</p><br />
			<br></p>

<p>			<br></p>

<p>			<h4> まとめ</h4><br />
			<ol><br />
				<li> カリー化を実戦で使うところってどこだ？</li><br />
				<li> やっぱりプログラミング言語はファーストクラスオブジェクトじゃないと♪</li><br />
			</ol><br />
			<br></p>

<p>			<h4> 参考</h4><br />
			<p><a href="http://d.hatena.ne.jp/m-hiyama/">id:m-hiyama</a>さんのブログを読んでて興味を持ちました。</p><br />
			<p><a href="http://d.hatena.ne.jp/m-hiyama/20051213/1134446855" target="_blank">檜山正幸のキマイラ飼育記</a></p><br />
			<p>例題はWikipediaからの引用です。</p><br />
			<p><a href="http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96" target="_blank">Wikipedia カリー化</a></p><br />
			<p>実行とテストにはお師匠のJavascriptシェルを利用しました。</p><br />
			<p><a href="http://www.h4.dion.ne.jp/~unkai/js/js_shell.html" target="_blank">Javascriptシェル</a></p><br />
		</div></p>]]>
        
    </content>
</entry>

<entry>
    <title>[JavaScript][備忘録]イベントまわりの備忘録</title>
    <link rel="alternate" type="text/html" href="http://www.rokujyouhitoma.com/javapg/2009/11/javascript-1.html" />
    <id>tag:www.rokujyouhitoma.com,2009:/javapg//1.104</id>

    <published>2009-11-25T07:38:00Z</published>
    <updated>2009-11-25T07:46:03Z</updated>

    <summary>イベントをIE、Firefoxで処理する際のメモ書き。 イベントオブジェクトの取...</summary>
    <author>
        <name>rokujyouhitoma</name>
        <uri>http://www.rokujyouhitoma.com</uri>
    </author>
    
        <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javascript" label="JavaScript" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.rokujyouhitoma.com/javapg/">
        <![CDATA[<p>イベントをIE、Firefoxで処理する際のメモ書き。</p>
<ul>
<li>イベントオブジェクトの取得。</li>
<li>HTMLエレメントの取得。</li>
<li>座標の取得。</li>
</ul>
<code class="prettyprint">
    var event = e || window.event;
    var element = event.srcElement || event.target;
    var xy1 = [event.clientX, event.clientY];
    var xy2 = [event.screenX, event.screenY];
</code>]]>
        
    </content>
</entry>

</feed>
