drkcore

2011/07/02 08:21:39

gitでcommitしたらsphinxのmake htmlが走るようにする設定

うちのサーバー(これとかこれ)も同じような構成でGit管理しているので、@ Git で集中リポジトリーに push したら、自動でワーク・ディレクトリーにも反映させるを見ながら、git pushしたらそのまま公開できるようにしたら快適。

ついでに、Sphinxで管理している文書もcommitしたらmake htmlするようにしてみた。

cd .git/
cd hooks/
cp post-commit.sample post-commit
vim post-commit

post-commitにはmake htmlって書いておくだけ

1
2
3
#!/bin/sh

make html

これでOK

余談だが、本読んだけどpost-update post-receiveの違いが分からなかったので後で調べる。

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


2011/07/01 20:29:00

Sphinxにgoogle adsenseとanalyticsを挿入した

Sphinx 逆引き辞典を見ながら。

Jinja2のextendsを使えば簡単に挿入できるのね。

2011/05/11 19:32:40

jQuery Form Pluginを使えば簡単にAjaxなformを導入できる

今、欲しい物はこういうモノです。

Real World Haskellのように、文書のパラグラフ毎にコメントが入れられるようなシステム。それをSphinxでやりたい。つまりSphinxで文書を書いてmake htmlをするとパラグラフ毎にtwitterのOAuthかGoogleの認証使ってコメントが入れられるようなHTMLが出力されるナイスなドキュメント

実際にReal World Haskellのソースを追いかけてみると、jQuery Form Pluginを使っていてAjax化が簡単にできそうなので、別の題材で試してみる。もちろんflaskr

  • statisticsにjqueryとjquery.form.jsを配置
  • show_entries.htmlのformにid属性をつける(id='flaskr_form'っていう属性をつけた)
  • layout.htmlにjsの設定を追加

layout.html

<script type="text/javascript" src="{{ url_for('static', filename='jquery-1.6.min.js') }}"></script> 
<script type="text/javascript" src="{{ url_for('static', filename='jquery.form.js') }}"></script> 
<script type="text/javascript"> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#flaskr_form').ajaxForm(function() { 
            $(document.body).load("/");
                alert("Thank you for your comment!"); 
            }); 
        }); 
    </script>

これでsubmitしたときにアラート画面が出るようになります。今回書いたコードはここからダウンロードできます。

flaskr_form

というわけで、flaskかGAEでパラグラフのidをクエリとしてコメントをjsonで返すサービスを用意しておいて、SphinxにjQuery埋め込んでコメントサービスと連携させれば望みのものはできそうな気がするんだけど、Sphinxのパラグラフに固有のIDを付加する方法がわからない。

どうやるのがいいのかなぁ

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / 3780円 ( 2010-05-28 )


2011/04/02 20:47:36

SphinxをWikiのかわりに利用する

wikiやめたのでSphinxにメモるようにしてます。

で、ちょっと悩んでいるのがmake html後の手順だ。

現在/var/www/html以下はgitで管理していて、/var/www/html/[sphinx_html]みたいにドキュメントを置こうかなと考えているんだが、それってクライアント側でmake htmlして_build/htmlをcp -Rして/var/www/htmlを管理している方のGitに管理させるのがいいのかそれとも分けて管理してサーバー側で改めてmake htmlするようにしたほうがいいのかと。

あとはmake htmlしたあとの_buildディレクトリってもうちょっと自動的に公開されるようにできんかなと。

自動化といえば作業しているrstを監視しといてrstが更新されたら裏で自動的にmake htmlかかるようにできんかなとかも思った。

追記 11.04.02

Makefile読んだらmake htmlは

html:
        $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
        @echo
        @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

ということなのでSPHINXBUILDつまりsphinx-buildコマンドを直接呼び出して明示的にBUILDDIRを指定してやればいいってことだった。

2011/03/25 04:52:45

さくらのVPSにWiki入れるかどうか迷った結果Sphinxでいいことになった

計画停電で自宅サーバーがしょっちゅう止まったり、電気代比較してみると、さくらのVPS使ったほうがエコっぽいので移行することにした。

最近楽しく移行作業を始めたわけだが、ちょっと悩んでいたのがwikiをどうするかだ。そもそも自分がなんでwikiを必要としているのかをよくよく考えてみるに(blogに書くまでもないことの)メモまたは備忘録を構造化された文書形式で残しておきたいということかなぁと。

今はHikiを使っているんだが、利用している理由がEmacsのHikiモードがあるというのが一番大きいし、一人でしか使ってないしなぁ。

となると

  • 構造化された文書形式
  • Emacsのようなエディタで気軽に編集できる
  • それが、さくっとhtmlにコンバートできる
  • あとで見返せる自分用メモ

を満たせばwikiでなくても構わない。で、Sphinxが候補にあがった。以前SAR Newsの原稿書いた時に使ってたので、使い勝手が非常にいいことは分かっているが、運用どうすっかなと悩んでいたら渋川さんにアドバイスもらった

さくらのVPSではwikiのかわりにSphinxでいくことにした

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / 3780円 ( 2010-05-28 )


2010/10/12 19:56:39

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 ()
在庫あり。

2010/08/25 20:47:53

Sphinxで日本語pdfをつくる

rst2pdf で reStructuredText から PDF を生成するで日本語pdfが生成できるようになってもSphinxでは

[ERROR] pdfbuilder.py:120 BuildEnvironment instance has no attribute 'modules'
....
if self.config.pdf_use_modindex and self.env.modules:
AttributeError: BuildEnvironment instance has no attribute 'modules'
FAILED

とかいうエラーが出る(Sphinx1.02,1.03 + rst2pdf-0.15)

この場合にはrst2pdfの新しい版をsvnでインストール(0.16.dev-r2311をいれた)

あとはSphinxで日本語PDFを生成するの通りにやればうまくいく

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / ¥ 3,780 ()
在庫あり。

中身は全然進んでないのに、出力だけは色々できるようになった ;-)

2010/08/08 09:06:13

「電子書籍と出版」を読んだ

手にとったら面白そうだったので読んでみたら、かなり面白かった。リストラなう日記読んでたからってのもあるかも。

最初の対談形式の章と、次の「弾言」と「決弾」の編集者の対談の章が特に面白かった。 最後のXMLとかEPUBの話はさらっと流しすぎだった。

ProductName 電子書籍と出版─デジタル/ネットワーク化するメディア
高島 利行,仲俣 暁生,橋本 大也,山路 達也,植村 八潮,星野 渉,深沢 英次,沢辺 均
ポット出版 / ¥ 1,680 ()
在庫あり。

  • コンテンツが読者に最終的に紙で届くか、デジタルで届くかはあまり大した問題ではない
  • ロングテール理論のポイントはヘッドをどう押さえるか
  • ITにより印刷をはるかに凌駕した複製速度、流通速度を持った仕組みが、普通の人の手に入ったのだと考えれば、印刷技術の登場よりも遥かにすごい文化形成力があるのは当然
  • 今の教科書のシステムは学校教育の一斉授業の中で、かなり鍛えられているから、そのままでは電子にはならない
  • 電子ジャーナル好きの研究者はディスプレイで読むのが好きなのではなくて、いつでもどこでも検索できるのが好き
  • 新聞の部数がそれほど減ってないのは宅配制度という、断るための努力をしないといけない制度があるから
  • 日本での電子書籍販売は日本の出版社側がそういう体制を整えてないので、amazonでの電子書籍販売はもう少し先ではないか?

ちなみにSphinxってEPUBに対応しているのね。あと、今書いてる原稿が最終的にwordで提出らしくてどうしようかなと調べてみたら、rst -> odt -> docでOKらしいのでSphinx使うことに決めた。