Sphinx+Mercurialで原稿管理

SAR News No19に寄稿しました。この号はSVM,RFとかの統計手法を使ったSARから可視化とかグラフっぽい処理とか、ToolKitを使ったプログラミングとか、日本ではあまり見かけない内容なので面白いのではないでしょうか?

余談ですがハッカソンっぽい場もあるので、ちと書いてみるか(または飲んでみるか)という方がいれば連絡を下さい(まだ空きあります)。僕はOpenBabelを使ってGAMESSの量子化学計算で構造最適化をするラッパーを書く予定にしています。それかHaskellのchemoinformaticsライブラリのソース読んでます。

さて、今回の原稿を書くのにSphinxを使った。これ最高ですな、EPubも出力できるし、超便利。ただ、今回は原稿の提出がwordだったのでwordの行間調整したりとかよくわからない部分で難儀したけど(word嫌い)。でも履歴管理の仕組み(変更モードって言うの?)はメールでやり取りするときに便利だったけど。

あとバージョン管理はMercurialを使った。Gitに比べてwebアクセスが簡単に設定できたのでチョイス、あと文書管理だとそんなに複雑な操作しないし。

ProductName 入門Mercurial Linux/Windows対応
藤原 克則
秀和システム / ¥ 2,310 ()
在庫あり。

Mercurial使ってhttp経由でpushできるようにしておいた

昼飯食べながら職場のマシンで試したときにはサクっとできたのに、家のマシンではトラブリまくった。

  • virtualhostでaliasが効かないのに小一時間悩んだ
    • 結局わからなくてmercurial用のhostnameを用意するという力技で解決した
  • abort: HTTP Error 500: Permission denied: .hg/store/lock
    • permissionを緩めた。なんか負けた気がするが。

ProductName 入門Mercurial Linux/Windows対応
藤原 克則
秀和システム / ¥ 2,310 ()
在庫あり。

本にはそこら辺の設定があまり書かれていなかったので以下を参考にした。

Paste = Pythonのmodule-starterみたいなもん

Python版のmodule-starterみたいなもんはないのかなとつぶやいたらPasteが使えることを教えてもらった。ありがとうございます。

しかしよりによってPasteがこんな風に使えるとは。

paster create -t pylons helloworld

pylonの組み込みコマンドの癖に-t pylonsってなんじゃそらとか思ってたのだけど実は組み込みコマンドじゃなかったという。

Pasteの使い方は

paster create mymodule

で対話的に入力していって答え終わると雛形完成。でディレクトリに移って

hg init
hg add
hg commit

までやるとあら不思議、分散リポジトリに管理されたPythonのモジュールスケルトンが数分で出来あがり。

ここまでやると、開発、実行(テスト)、リポジトリの管理がMeadowで全部出来るので楽チン。

あとsetuptoolsとか覚える

fedora10にあげたらblogが動かなくなってあせった

昨晩、家のサーバーをfedora8から(9にあげるつもりがねぼけてて)一気に10にあげてしまって、perlが5.10になってしまい、夜中までかかってCatalystとかPlagger関連のperlのモジュールをたくさん入れた。

で、Catalystのバージョンも最新のになったのだけど、blogシステムが動かなくなってしまい、あせった。というか、viewまわりの指定とか認証周りとか変わってるっぽいがそこらへんを修正してとりあえず動くようにしたが、週末にでもちゃんと書き直そう。

ついでにsubversionで管理していたblogシステムをmercurialに移行した。で、 この本読みながら、いじってる。

ProductName 入門Mercurial Linux/Windows対応
藤原 克則
秀和システム / ¥ 2,310 ()
在庫あり。

hg serveでログがグラフ表示されるのが楽しくて、無駄にブランチ切ってマージしたりとかしてるが、pullとmergeの使い方がいまいちちゃんと理解できてないので、第3部のチーム利用の章がもっと厚いとよかったかもと思った。

入門mercurial

Appendixのコマンドリファレンスが便利だし、個人で使う場合、チームで使う場合、カスタマイズと構成が分かれていて読みやすかった。特にmercurialのマージのやり方が分かりやすく解説されていておすすめ。5.3の未コミットベースとコミット済成果ベースの話も非常に参考になった。

あと、12章のオープンソースベースのプロジェクトにオレオレパッチを当てながら快適に使う方法がよかった。職場用にカスタマイズしているツールもこれを参考にソースコード管理してみようと。

mercurialとの連携の部分ではtracみたいなBug Tracking Systemとの連携に関しては触れられてなかった。

ProductName 入門Mercurial―Linux/Windows対応
藤原 克則
秀和システム / ¥ 2,310 ()
通常24時間以内に発送

  • hg annnotate
  • hg rollback
  • hg copyでコピーした場合-fオプションで複製前のファイルの履歴までさかのぼれる。
  • --style changelogでChangeLog形式の出力

Open Babel 2.2.0をmacbookにインストール

Open Babel 2.2.0にバージョンがあがったのでインストールをした。ソースから。

同時に、perl,python,rubyのバインディングもコンパイルしてインストールしておく。

WindowsにおいてあるPlutoのファイル群を持ってくる

Windowsで開発しているPlutoをmacでもいじれるようにする。windowsのほうはhg serveと打てばhttpサーバーが立ち上がり、port8000番でアクセスできるようになる。

macのほうはディレクトリを作って初期化してpullしてupdate

mkdir Pluto
cd Pluto
hg init
hg pull http://192.168.XXX.XXX:8000/
hg update

これでOK

MeadowでMercurial

Emacs からの利用の通りに設定をした。

快適!Meadow生活

ProductName 入門 GNU Emacs 第3版
Debra Cameron
オライリー・ジャパン / 3990円 ( 2007-03-12 )


やっぱMercurial使う

mercurialをみていたらsvkでもいいような気がしてきたとか書いたけど、今日いじってみたらMercurialがすげー楽チンで驚いた。分散リポジトリ管理って便利かも。

以下は簡単な使い方のメモ。

cd repos
hg init
hg add
hg commit

クローンを作る

hg clone repos repos_c
cd repos_c
#作業
hg commit

変更を反映させる

hg pull ../repos
hg push ../repos

webからみれるようにする

hg serve

これで、http://localhost:8000/にアクセスすると履歴がみれたりURLごしにやりとりできるし、RSSやATOMの出力もついてたりする。