www.flickr.com
|
2010年07月14日
SConsとYAMLを組み合わせる
SConsでは依存性を記述するためにファイル名のリストを作るわけですが、
- pythonの文法に従うと、'やら,やらが入って書くのが面倒
- 1個の文字列をSplit関数に渡す方法だと、特定ファイルを一時的に取り除いたり するときにコメントアウト等ができなくて面倒
という問題が。
YAMLを使ってみる
PyYAML(http://pyyaml.org/)はYAML形式の文字列をリストや辞書に変換できる。 これを使うと、
files = yaml.load(""" - file1.cpp - file2.cpp - file3.cpp """)
でリストができる。
files = yaml.load(""" - file1.cpp #- file2.cpp - file3.cpp """)
でfile2.cppだけ取り除ける。この#はYAMLのコメントアウトとして処理される。 これで解決。
YAMLを使ったビルドツール?
ビルドツールの仕事の半分くらいは
- ファイル名などのリスト
- コンパイルオプションなどの辞書(ハッシュ)
の構築なので、YAMLを使った読みやすく書きやすい何かが ありそうな気がするのですが、どこかにありませんか?
SCons 1.3.0 のバグ
Aliasでクラッシュ
$scons test
でテストを実行するためには、
Alias("test",[],"./UnitTests") AlwaysBuild("test")
のようなコードを書くわけですが、1.3.0あたりでクラッシュするように。 どうもバグらしい。 (http://scons.tigris.org/issues/show_bug.cgi?id=2443)
env.Alias..のようにして回避。
2007年04月16日
SCons
SCons (http://www.scons.org) は、 Pythonスクリプトでルールを記述するビルドツール。
vimと組み合わせる
vimのquickfixでMakeの代わりに使う。.vimrcに、
command Scons :call Fscons() function Fscons() set makeprg=scons\ -Q make set makeprg=make endfunction
を追加。 :Scons でビルド。
シンタックスは http://www.vim.org/scripts/script.php?script_id=1709 に。
2007年03月25日
ipythonのバッチスクリプト
ipythonはバージョン0.7.2から、ipythonのプロンプトに入力していた 命令を並べたファイルをスクリプトとして実行できるようになった。 サフィックスを.ipyとして、:
ipython hoge.ipy
として実行できる。又shebang(#!/usr/bin/ipython)を加え、実行権限を与えれば:
./hoge.ipy
としても実行できる。
あまり意味の無い例:
1: #!/usr/bin/ipython 2: import sys 3: l=sys.argv[2:] 4: dl={} 5: for i in l: 6: t=!file $i 7: dl[i]=t[0] 8: 9: dl|ibrowse
1、2行目:通常のpythonの様にsys.argvを読むことで、 バッチスクリプトに引数を渡せる。
外部コマンドの実行はipythonのプロンプトの様に、頭に!を付けるだけで良い。 6行目の様に代入すると、tは標準出力の結果が入ったリストになる。
8行目:インデントのある構文の後は1行開ける。
9行目:ディクショナリをipipeの機能で閲覧する。 ipipeのimportはipythonの設定で行っている。~/.ipython/ipy_user_conf.py のmain()関数に:
ip.ex("from ipipe import *")
を加える。
上のスクリプトを:
./hoge.ipy /usr/doc/ipython-0.7.2/*
として実行した 結果 。
ただし0.7.2では実行後に必ずipythonプロンプトに落ちてしまい、あまり使い勝手が よくない。この点は開発元のレポジトリでは 修正されている ようなので、 時期バージョンでは解決しそう。…0.7.3で修正済。
外部コマンドのバッチ処理を同じpythonで書くなら、subprocessを 多用するよりもipythonで書いた方が楽だと思う。 だたし実行後の立ち上がりや処理速度は遅く感じる。
2006年08月09日
Python in a Nutshell 2nd ed.
第2版 について。随時追記。
Python 2.4,2.5の記述
2.4以降で拡張された文法や追加された標準モジュールなど。
- generator
- try/except/finally、with
- optparse,subprocess
2006年08月05日
みんなのPython
日本人著者のPython本
みんなのPythonというPythonの入門書が出る予定。 著者は柴田淳(しばたあつし)氏。
PyJUGの ニュース
Nutshell新版買ってしまったあとだけど、どうしよう…。
しばじゅん
じつは女性シンガーソングライターの柴田淳(しばたじゅん)の CDを何枚か持っていたりする。で、Pythonを使いはじめた頃、 LLのカンファレンスか何かで柴田淳という名前を見たときに 「女性が活躍!?」とか思ってドキドキしてしまった。
勘違いなファンレターが来る という話も。
2006年07月09日
svn: 'https://...' 用の URL スキームを認識しません
checkoutでエラー
subversionレポジトリを初めてhttps経由でチェックアウトしようとすると タイトルのようなエラーが出た。'subversion URLスキームを認識しません' などと検索しても何も出てこない。
答えは'subversion URLスキーマ'で出てくる。gentoo portageの subversionにはnowebdavというUSEフラグがあって、 有効にしているとWebDAVで公開している(http,https経由で) レポジトリにアクセスできない。 それをWebDAVでレポジトリを公開するかどうかの意味と勘違いしていたため、 有効にしていた。無効にして再コンパイルで問題解決。 依存関係でneonライブラリがインストールされる。
2006年07月04日
今年出る?Python本
洋書
今年後半はオライリーのPython本の新版がいくつか出る模様。 amazon.co.jpでPythonを検索し、出版年月順にすると一覧できる。
- Python in a Nutshell 2nd(7月)
- Programming Python 3rd(8月)
- Learning Python(3rd? amazon.co.jpでしか見付からない)
上2つはPython 2.5に追従したアップデートがあるらしい。
オライリー以外からも、No Starch Pressの The Book of Pythonという1000ページのリファレンス等が予定されている。
和書
某所経由で見付けたPython Cookbookの翻訳状況のメモページを見ると、 翻訳などはほぼ終了していて、今はコードの検証をしている段階らしい。 「悲惨な英語」「そのままでは動かない」とか書いてある。
同じ著者のNutshellを2ndが出たら買おうかと思っていたけど、どうしよう…。
2006年06月10日
IPython 0.7.2
IPythonの新バージョン
IPython が0.7.2にバージョンアップ。
新機能 の中では ipipe モジュールが面白そう。listやdictなどの sequenceをunixのpipeの様な|演算子でibrowsやidumpに渡す。