python-mode + auto-complete-mode + ac-pythonでPythonのコード補完

2012 年 1 月 19 日 コメントはありません

Pythonの補完をEmacsでシンプルに最小労力で手早く使えるようにする – 牌語備忘録 – pygoの通りなんですが、手っ取り早くEmacsでPythonのコード補完を実現できた。ちなみにpython-modeでもac-pythonは問題なく動いてる。これ設定したらコード書くスピードが今までの1.5倍ぐらい速くなったっす!

カテゴリー: Emacs, Python タグ: ,

特定のホスト用のssh秘密鍵は ~/.ssh/config に記述しておくとラク

2012 年 1 月 16 日 コメントはありません

例えばお仕事で使っているサーバで

  1. 仕事用のサーバへのssh秘密鍵
  2. github.comなどの個人用のssh秘密鍵

などと複数の秘密鍵を持ちたい場合がよくある。メインは1.の仕事用のサーバだとすると

  • ~/.ssh/id_rsa (id_dsa) は仕事用サーバ向けの秘密鍵
  • ~/.ssh/id_rsa-private を個人用の秘密鍵

となることが多いのではないかと思う。

この場合

ssh -i ~/.ssh/id_rsa-private yourhost

などと毎回秘密鍵のファイルを指定するのはつらいので、~/.ssh/config に

Host yourhost
  IdentityFile ~/.ssh/id_rsa-private

と書いておくと、

ssh yourhost

だけでいけるので便利だと思った次第です。

入門SSH (MY UNIX SERIES)

著者/訳者:春山 征吾

出版社:アスキー( 2004-11 )

単行本 ( 206 ページ )


カテゴリー: ssh タグ:

Sphinxで複数のman pageを生成する

2012 年 1 月 7 日 コメントはありません

前置き

つい最近tomahawkのドキュメントをGithub WikiからSphinxに移行したのでそのメモ。SphinxにはHTMLを生成する以外にもman pageを生成する機能があって

$ make man

を実行すると _build/man/ 配下に mycommand.1 みたいな感じでman pageが生成される。

でで、tomahawkの場合は tomahawk, tomahawk-rsync という2つの実行ファイルがあるので、この2つのman pageを生成したくて、tomahawk.rst, tomahawk-rsync.rst ファイルを作ってみたけど、デフォルトでは tomahawk.1 に全部入りのman pageができるだけで「独立したrstファイルから個別のman page生成するのってどうやるんだろう?」となっていた。

複数のman pageを生成する方法

結論としては、Sphinxのconf.pyに man_pages という設定があるので、これを下記のように man pageの数だけ用意してあげれば良かった。

authors = ('Kazuhiro Oinuma')
man_pages = [
    ('index', 'tomahawk-all', 'tomahawk manual', authors, 1),
    ('tomahawk', 'tomahawk', 'enables to execute a command to many hosts', authors, 1),
    ('tomahawk-rsync', 'tomahawk-rsync', 'enables to copy files to many hosts', authors, 1),
]

それぞれのタプルは順に

  • source start file – manページの”ルート”となるドキュメントの名前です。このファイルから参照されたすべてのドキュメントはLaTeXファイルの中のTOCツリーにも含まれるようになります。もしも1つのファイルをマスターにしたmanページにしたい場合には、 master_doc で設定した値をここに指定して下さい。
  • name – manページの名前です。これには、スペースや特別な文字を含まない、短い文字列を指定します。この項目は出力ファイル名と、manページの名前(NAMEセクション内)として使用されます。
  • description – manページの説明です。これはNAMEセクション内で使用されます。
  • authors – 著者名の文字列のリスト、もしくは単一の文字列です。manページのAUTHORSセクションを自動的に生成したくない場合には、空の文字列や空の配列を指定することもできます。
  • section – manページのセクションです。出力ファイル名や、manページのヘッダー内で使われます。

ということらしい。このように複数のman pageを生成するやり方はSphinxのドキュメントにも書いてなかったので、Sphinx自体のドキュメントのソースを見てみたらビンゴだった。

なんでSphinxを使うのか

mkouheiさんにtomahawkのDebianパッケージを作ってもらっている時に「コマンドにはman pageが必要」といわれたので、どうせならHTMLもmanも生成できるSphinxに移行してみたというのが理由。最初はreStructuredTextのフォーマットを覚えるに苦労したけど、これさえ覚えれば色んなフォーマットに出力できるのでいい投資かなぁと思う。

あと、Read The Docsというサービスを使えば、Git/Mercurial/Bzr/SVNで管理しているファイルから自動的にSphinxでHTML生成して readthedocs.org から見れるようになるので非常に便利れす(ReadTheDocsについて詳しくはここ)。

というわけでソフトウェアのドキュメントにはSphinxがおすすめです!

Gitによるバージョン管理

著者/訳者:岩松 信洋 上川 純一 まえだこうへい 小川 伸一郎

出版社:オーム社( 2011-10-25 )

単行本(ソフトカバー) ( 320 ページ )


カテゴリー: Sphinx タグ:

rlwrapを使ってmysqlコマンドのプロンプトに色をつける

2011 年 12 月 11 日 コメントはありません

どうもこんにちは。北海道に旅行中でこの記事は札幌のホテルから書いている oinume です。MySQL Casual Advent Calendarも11日目になりました。「MySQL Casualが全然カジュアルじゃない!」という意見をよく耳にするので、今日はウルトラカジュアルなエントリーを書こうと思います。

はじめに

MySQLを使って開発をしていると、本番と開発用サーバの見分けがつかずに、間違って本番で重いクエリを発行しちゃったりします。そういうオペミスを少しでも防ぐために「本番環境ではmysqlコマンドのプロンプトの色を変える」という技を紹介したいと思います。

rlwrap

紹介といってもやり方は非常に簡単で、下記のように rlwrap というコマンドを使って mysql コマンドを実行します。

rlwrap -a -pRED mysql -uroot

するとあら不思議!MySQLのプロンプトが下記のように赤くなりました!

rlwrapでmysqlプロンプトに色をつけてみる

というわけで、rlwrapがインストールされているマシンであれば、下記のように .bashrc 的なファイルに書いておくことでmysqlのプロンプトを常に赤くすることができてオペミスも減らせますね!

if [ -x /usr/bin/rlwrap ]; then
    alias mysql='/usr/bin/rlwrap -a -pRED mysql'
fi

ちなみに rlwrap は Debian(Ubuntu) であれば apt でインストールできます。

sudo aptitude install rlwrap

CentOSの場合はepelリポジトリが追加されていれば yum でインストールできます。

sudo yum install rlwrap

さいごに

このウルトラカジュアルっぷりいかがでしたでしょうか。Advent Calendar 12日目は ikasam_a さんです。よろしくお願いします!

カテゴリー: MySQL タグ:

Pythonでモジュール内のクラスを抽出する

2011 年 11 月 26 日 コメントはありません

inspectを使えば簡単にできる。

class MyClass(object):
    pass
 
def func():
    pass

な感じのmymodule.py があるとして

#!/usr/bin/env python
 
import inspect
import mymodule
 
for name, member in inspect.getmembers(mymodule):
    if inspect.isclass(member):
        print "%s is class." % name

みたいにやれば mymodule からクラスだけ抜き出せる。

inspectというモジュールはリンク先のマニュアルをざっと見てもらえばわかるように、モジュールやクラスや関数のメタ情報を色々取れるので超絶便利である。これは本当にすごい。

エキスパートPythonプログラミング

著者/訳者:Tarek Ziade

出版社:アスキー・メディアワークス( 2010-05-28 )

大型本 ( 416 ページ )


カテゴリー: Python タグ:

uWSGI+virtualenv+Flask

2011 年 11 月 19 日 コメントはありません

Pythonで今一番熱そうなWSGIコンテナのuWSGIというものをインストールしてみたんだけど、virtualenvと組み合わせた時にちょっとはまったのでメモ。

前提

  • Pythonは2.6
  • virtualenv(wrapper)を使って /usr/local/virtualenvs 配下に flask という環境を作っている
  • flask には Flask や Jinja2 などアプリの実行に必要なものがインストールされている
  • 実行するアプリは /var/www/wiki-converter にディプロイされている(wiki-converterのソース)

uWSGIのインストール

$ workon flask
$ pip install uwsgi

でいける。

uWSGIの起動

まずは本格的なアプリを起動する前にQuickstartに書いてあるhello world的なものを試しみる。

# /var/www/hello.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"
$ uwsgi --http :9090 --wsgi-file /var/www/hello.py

これでブラウザから http://<host>:9090/ にアクセスして”Hello World”が表示されればうまくいっている。

次はFlaskアプリで試してみる。

$ uwsgi --http :9090 -H /usr/local/virtualenvs/flask --python-path /var/www/wiki-converter -w wiki_converter:app

で起動できる。

  • -H でvirtualenv な環境のディレクトリを指定
  • –python-pathにアプリがあるディレクトリを指定

しているのがミソ。-Hがない場合 flask が見つからなくて

ImportError: No module named flask
unable to load app mountpoint=

というエラーが出てuwsgiがうまく起動できないので注意!

なお、uWSGIはnginxと組み合わせてよく使われるらしい。nginxとの組み合わせについてはCentOSでnginx + uwsgi + Djangoを試してみた « taichino.com:が詳しい。

ハイパフォーマンスHTTPサーバ Nginx入門

著者/訳者:Clement Nedelcu

出版社:アスキー・メディアワークス( 2011-04-21 )

大型本 ( 280 ページ )


カテゴリー: Python, uWSGI タグ: ,

pydoc -g でモジュールのドキュメントが読める

2011 年 10 月 15 日 コメントはありません

Shellで

$ pydoc -g

ってやったら↓のようなダイアログが出てきて

pydoc -g

“open browser” クリックしたら、ブラウザで標準モジュールやインストールされているモジュールのドキュメントが読めましたとさ。Pythonすげー。

pydoc -g でモジュールのドキュメントが読める

Python クックブック 第2版

著者/訳者:Alex Martelli Anna Martelli Ravenscroft David Ascher

出版社:オライリー・ジャパン( 2007-06-26 )

大型本 ( 652 ページ )


カテゴリー: Python タグ:
Pages: 1 2 3 4 5 6 7 8 ...23 24 25 >>