Sphinx+翻訳 Hack-a-thon 2012.04に行ってきました。

[追記](2012/04/30 16:05)
当日の様子はこちら
当日やったことリスト
* Sphinxテーマのimpress.js弄った。
* Sphinxプラグインのblockdiag触った。
* MacにMercurial入れた。
* bitbucket試した。
Sphinxテーマのimpress.js弄った。
今まではs6触ってて「これはシンプルでいいなー」と思ってましたが、
“impress.js”っていうのもアニメーションが効いてて良さそうと思ったので試しました。
を参考にして、
pip install sphinxjp.themes.impressjs
した後、conf.pyに以下の設定を記述しました。
extensions = ['sphinxjp.themecore']html_theme = 'impressjs'

そしたら何故か以下のようなエラーがでる……
Exception occurred:
  File "/Users/***/.virtualenvs/impressjs/lib/python2.7/site-packages/sphinx/jinja2glue.py", line 149, in get_source
    raise TemplateNotFound(template)
TemplateNotFound: genindex.html
The full traceback has been saved in /var/folders/cg/8n8k9bvj5vgbp65py_kxf52r0000gn/T/sphinx-err-l8t7JZ.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at ,
or report them in the tracker at . Thanks!
make: *** [html] Error 1
エラーのログを見てみると以下のようになっているので、
「どこか設定ファイルの記述が間違っているのでは?」と予想。
exception jinja2.TemplateNotFound(name, message=None)
Raised if a template does not exist.
もう一つ出てきたサイト、
を参考にして見ると、先の2行に加えて以下の1行を加える必要があることが判明。
html_use_index = False
設定を追記したら、あっさりmakeできました。
その後は、先のサイトのoutputと、inputを見比べながら進めて行きました。
他に参考にしたサイトは以下になります。
その時四苦八苦している様子を@usaturnさんがまとめてくれています。
impress.jsでは以下の設定を記述して、魅せ方の調整を行うようです。
.. impressjs:: title
    :data-x: 0           横軸の設定
    :data-y: 0           縦軸の設定
    :data-z: -1000       奥行きの設定
    :data-rotate-x: -90  回転する角度の設定
    :data-scale: 4       表示するスライドの大きさの設定
これの意味が最初ちんぷんかんぷんで、
適当に数値を変えてみたら複数のスライドが重なって表示されました。
しっかりと意味あるものにするのには微妙な調整が必要のようです。
実際に試してみないと感覚がつかめないなと思いました。
Sphinxプラグインのblockdiag触った。
pip install sphinxcontrib-blockdiag
MacにMercurial入れた。
から最新版をインストール。
ターミナルからhgを打ったら起動……しない。
あれ?と思って調べてみると、どうやらPATHが通っていない。
更に調べてみるとインストールされたはずの、
/usr/local/bin/以下にアクセスできなくなっていました。
アクセス権限を設定し直したらうまく行きましたが、
以前システム設定の共有の設定を弄った時に変えてからかな……
Mercurialに原因があったわけではありませんが少し気になります。
bitbucket試した。
完全に忘れていましたがアカウントは以前に作成してため、
まずはgithubと同様にdotfilesを上げてみました。
これからはちょくちょくこちらも弄っていきたいです。
まとめ
今月一回も勉強会にこれてなかったので、まずはこれてよかった。
やっぱりmake一発でプレゼン式のPDFなりPPTなりの出力する仕組みが欲しい。
来月もHack-a-thon参加します。

今更ながらpythonの開発環境を整えてみる。

Pyfesの時にも思ったのだけど、
前から一度開発環境を整えてみたいと思っていたのでやってみました。
導入したのは以下、
1.MacPorts
2.virtualenv, virtualenvwapper
3.ipyton
4.pythonbrew
1.MacPorts
巷ではHomebrewが人気らしいのですが、
を見て導入を決意した次第です。
からdmgを選択してインストール。簡単ですね。
2.virtualenv, virtualenvwapper
virtualenvは以前から使用していたのですが、
便利だと言われるvirtualenvwapperも
を参考に導入しました。
$ pip install virtualenvwapper
と打つだけでvirtualenvも導入してくれました。
その後virtualenvwapperのコマンドを使えるようにするため、
.bashrcに以下のように記述しました。
export WORKON_HOME=$HOME/.virtualenvssource `which virtualenvwrapper.sh`
その後.bashrcに記述した内容を有効化するために、
以下のコマンドを打って完了です。
$ source ~/.bashrc
3.ipyton
IPython — kenkov.jpを参考にして導入。
$ sudo port install py27-ipython$ sudo port select --set ipython ipython27
その後、設定ファイルを作成しました。
$ ipython profile create
でデフォルトの設定ファイルを作成し、
出力されたファイルに以下の設定を記述しました。
c = get_config()# 出力の後の改行をなくす
c.TerminalInteractiveShell.separate_in = ''# 入力のプロンプトの変更
c.PromptManager.in_template = '[\\#] >>> '# 出力のプロンプトの変更
c.PromptManager.out_template = '[\\#] ==> '# デフォルトのエディタの設定
c.TerminalInteractiveShell.editor = 'vim'
4.pythonbrew
pythonbrewはPyfesの時に導入済みだったのだけど、
何故かsudo付けないと有効化されなかったので以下のようにして入れ直しました。
$ export PYTHONBREW_ROOT=~/.pythonbrew
$ curl -kLO http://xrl.us/pythonbrewinstall
$ chmod +x pythonbrewinstall$ ./pythonbrewinstall
よしこれでOK!と思っていたら、
何故か毎回
source ~/.bashrc
しないとpythonbrewの設定が反映されない…
そこで、.bash_profileを作成して以下の1行を追加しておきました。
source ~/.bashrc
これで一通りPythonの開発環境を整えることができました。
さあ後は実践するだけ!

「エキスパートPythonプログラミング読書会 第二期 04」参加してきました。

今のところ一度も逃さず参加できている。
我ながら素晴らしい。
当日の様子はお館様がまとめて下さっています。
清水川先生のスクリーンログはこちら
実をいうと今回は予習なしで参加してしまったので、
オブジェクト指向に理解が乏しい自分にはハードル高めでした。
予習復習大事ですね。本当に。
かろうじて理解したこと
組み込み型の拡張はできるが、大抵の場合組み込み型そのままで十分
super=公式ドキュメントには組み込み関数と書いているが、実態は組み込み型。
継承関係を調整してくれているものがsuperのクラスの役割。
superのdictとただのdictはどう違うのか。
特殊な継承を使う時はsuperのdictを使うと便利なことがある。
オーバーライドしてしまったメソッドの元の方を呼び出したいと言った時に、superが役立つ。
ネームマンダリング=頭に__をつける。
継承の時に名前がぶつからないようにするため。
MROがあるからといって、superがあるとは限らない。
(MRO = Method Resolution Order, メソッド解決順)
Pythonの本体ですらそういううところがある。一意ではない。
だから正しく判断する時はソースコードを見てする。
Python3のパッケージ対応リストーPython 3 Wall of Shame
そんな頭の回っていない自分にはありがたいことに、
今回はなんと「エキPyチロルチョコ」が用意されていました!
| #expertpython チロルチョコ食べて落ち着く。 on Twitpic|
本来は2/14に配られる予定が諸々の都合によって中止になったので、
この日に配られたそうです。
作成された@tk0miyaさんが参加されないとのことでしたので、
@usaturnさんが持ってきてくださいました。
実はconnpass-新宿 Book-a-thon #11の時にそのやりとりがあったり。
「エキPyに参加される方はその時に貰って下さい」と、
その時には頂けなかったので何とか貰えて一安心です。
次回はちゃんと予習したから行きたいですね。
せっかくの機会を無駄にしないようにしたいです。