2012年6月17日日曜日

reST→PDF出力の環境を整備した。

reST→PDF出力する環境を整備してみました。

当方の環境はMacOSX 10.7になっております。
Windows/Linuxの方はコマンドやディレクトリなどを
ご自身の環境に置き換えて作成下さい。

また以下のものがインストールされている前提となっています。
  • Python
  • pip

rst2pdfのインストール
コマンドラインから
$ pip install rst2pdf

日本語フォントのインストール
VLゴシックフォントIPAフォントをインストールします。
それぞれダウンロード解凍後に、フォントディレクトリにコピーします。

日本語出力のためのスタイル設定
これより下のファイルはプロジェクトディレクトリ内に作成します。
% vi ja.style
ja.styleに以下のように記述します。
{
    "fontsAlias" : {
        "stdFont": "VL-PGothic-Regular",
        "stdBold": "VL-PGothic-Regular",
        "stdItalic": "VL-PGothic-Regular",
        "stdBoldItalic": "VL-PGothic-Regular",
        "stdMono": "VL-Gothic-Regular",
        "stdMonoBold": "VL-Gothic-Regular",
        "stdMonoItalic": "VL-Gothic-Regular",
        "stdMonoBoldItalic": "VL-Gothic-Regular",
        "stdSans": "VL-Gothic-Regular",
        "stdSansBold": "VL-Gothic-Regular",
        "stdSansItalic": "VL-Gothic-Regular",
        "stdSansBoldItalic": "VL-Gothic-Regular"
    },
    "styles" : [
        ["base" , {
            "wordWrap": "CJK"
        }],
        ["literal" , {
            "wordWrap": "None"
        }]
     ]
 }

フォントの埋め込み
% vi ja.json
ja.jsonに以下のように記述します。
{
   "embeddedFonts" :
   [[
       "VL-Gothic-Regular.ttf",
       "VL-PGothic-Regular.ttf",
       "ipam.ttf",
       "ipag.ttf",
       "ipagp.ttf",
       "ipamp.ttf"
   ]],
   "fontsAlias" : {
       "stdFont": "VL-PGothic-Regular",
       "stdBold": "VL-PGothic-Regular",
       "stdItalic": "VL-PGothic-Regular",
       "stdBoldItalic": "VL-PGothic-Regular",
       "stdMono": "VL-Gothic-Regular",
       "stdMonoBold": "VL-Gothic-Regular",
       "stdMonoItalic": "VL-Gothic-Regular",
       "stdMonoBoldItalic": "VL-Gothic-Regular",
       "stdSans": "VL-Gothic-Regular",
       "stdSansBold": "VL-Gothic-Regular",
       "stdSansItalic": "VL-Gothic-Regular",
       "stdSansBoldItalic": "VL-Gothic-Regular"
   },
   "styles" : [
       ["base" , {
           "wordWrap": "CJK"
       }],
       ["literal" , {
           "wordWrap": "None"
       }]
    ]
}

rst2pdfの設定ファイル
以下のように作成
$ mkdir ~/.rst2pdf
$ vi ~/.rst2pdf/config
~/.rst2pdf/configに以下のように記述します。
[general]
stylesheets="ja"
compressed=flase
font_path="~/Library/Fonts"
header=
footer=
fit_mode="shrink"
break_level=0

後は以下のように叩くだけでPDFファイルが出力されます。
$ rst2pdf -o output.pdf input.rst

完了後は以下のようなフォルダ構成になっているはずです。
~/.rst2pdf/config
-project
|-input.rst
|-ja.json
|-ja.style
|-output.pdf
以上です。お疲れ様でした!

参考リンク

TokyoMercurial4.5に参加しました。



当日の深夜に以下のようなやりとりがあり、
多少自分のスキルに不安をいだきながらも突撃参加しました。


その日の朝にdocumentを舐めてからの参加です。

1.アイスブレイク
簡単なアイスブレイクの後、@troterさんによるハンズオン開始。
各々どのぐらいMercurialをしようしているのかを紹介したのですが、
Gitも使っていますと言う方もちらほら。
そうゆう自分もVimのdotfilesやHeroku使うためにGit使っていた頃がありました。

2.ハンズオン
以下のように導入編・ハンズオンとわかれていました。
  • 第一部: Mercurial Queues(MQ)の説明、パッチキューの操作
  • 第二部: MQを用いた基本操作のまとめ、歴史改変編のハンズオン
MQを使いこなすと、 という印象になるらしい。 自分はそこまで使いこなせてなかったからまだ恩恵を受けられていないのが残念。
恩恵を受けれられた方の例↓
3.Tips
  • TortoiseHg2.4.1でたよ!
  • GUIでMQ使うならTortoiseHg。
    SourceTreeだとリビジョンもパッチも全部丸で表示されるから分かりづらい。
  • Gitの機能がMercurialにないとかいってる人はMQ使ってから。

    懇談会楽しかった!3時間近くいましたかね?勉強会でこれだけ長時間いたのは初めてだったのでとても新鮮でした。

    次回のTokyoMercurial5.5はビギナー向けになるそうなので、
    一旦そこで基礎力を鍛えようかとも思っています。
    主催者の@troterさんTAの方々、参加者の皆さんお疲れ様でした!

エキスパートPythonプログラミング読書会 第二期 07に参加しました。

エキスパートPythonプログラミング読書会 第二期 07 - connpass
に参加してきました。

エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス
売り上げランキング: 36822

最近Blog書いてないなーということで書きます。
遅刻かと思ったけど、何とか時間までについて良かった。
当日の様子はこちら。
エキスパートPythonプログラミング読書会 第二期 07 - Togetter

1.アイスブレイク
恒例のアイスブレイク、各島ごと(4名程度)で簡単に自己紹介をしました。
以下自己紹介順に、
  • @usaturn 面談したら実は同じ会社だったと言うオチ
  • @taison PHPゴリゴリからDjango git wiki google document活用してる。
  • @shimizukawa 台湾行って来ました。最近はSencha Touchとかやってる。
2.「5章 パッケージを作る」
  • setuptoolsとdistribute使える環境があったらdistributeを使いましょう。
  • いままで
    • distutils: Python3.2までの標準
    • setuptools: 業界標準(ez_setupで入れる)
    • distribute: setuptools上位互換
      (distribute_setup.pyで入れる)
    • pip: setuptools/distributeを活用して使いやすいコマンドライン
    • buildout: setuptoolsを活用した環境構築ツール
    • virtualenv: Pythonのユーザーランド仮想環境作成ツール
  • これから↓
    • Distutils2: packagingと同じものでPyhton2.4-3.2で使えるようにしたもの。
      (実際はPython2.6-3.2。シンタックス対応が大変だねという話)
      →しかしこれによってパッケージの手法が必ずしも綺麗になるわけでないと関係者が頭抱えてる。
    • packaging: Python3.3からの標準
    • pip?: packaging上で動くようになる?(virtualenvはどうだかわからない)
    • pythonv: virtualenvをPython3.2から標準でできるようにしたもの(実装別)
  • パッケージング: 「パッケージを作ろう」と「Python3.3のパッケージ」がある。
    • PyPIの配布物(PYPIにもpackagingという名前で登録されているものがある)
    • Python言語自体のパッケージ(import……の,名前空間パッケージ←応用)
    • Python言語自体のパッケージは_とつけてれば安心と理解した。手を動かして理解しよう!
  • sdist = soure distribution
  • eggの圧縮はPython3.3では圧縮される?
    →eggがありません。eggみたいなものは今議論されていない(すげー困る。ほとんどの環境で動かなくなる)
  • python setup.py check というコマンドがある。
    setup.pyの構文チェックができる。
  • buildとbdist: バイナリ配布用のパッケージを作ってくれる。
    あんま使わないほうがいい → bdistを拡張したbdist_eggを使おう。
  • bdist_egg: どのPythonでbuildされたかわかるものが作られる。
    eggも出来る。素直な、依存関係のないeggが生成される。
    install_requiresで、依存関係のパッケージもPyPIから見つけてインストールしてくれる。
  • アンインストールについてはpipにお任せしましょう。
  • develop: -linkだとPython PATHに自動的に追加されるので、どこにいても import aodag とかいうことが出来るようになる。-uオプションで削除ができる。
  • test: test_suite, tests_requireを確認してくれる。
    python setup.py sでオプションが全部出てくる
  • PyPIはbasic認証で大変いけてない。
    .pypircのPasswordの行を削除すると、毎回Passwordをきいてくれる仕様にできる。
  • list printerとかPyPIで調べるといっぱいできる。
    →テストで登録したものはちゃんと消しましょう。
  • alias: setup.cfgに追記してくれる。
  • 最近はまだまともですが、この本の読んでからじゃないとdistutilsガイド、setuptoolsガイドが読みにくいと思われます。
  • テンプレートベースのアプローチは有用ではあるが、
    大抵がその内メンテしなくなる。
3.ビアバッシュ&LT 4.まとめ
パッケージ管理は今のところ distribute + virtualenv(pip)安定ですかね。
エキpyに書いてある内容で2〜3年は使えるそうです。
Python2.7は最低でも2017年までメンテナンスされる見込み(source→Python3と向かい合ってみる)なので、
最新の状況に乗り遅れないようにしつつ、
Pythonと向い合って行きたいです。

参考リンク