トップ RSS 2.0 RSS 0.91 Atom 1.0

Yet Another KASE's Page(仮)

memo, note...
www.flickr.com
hkase's Ducks photoset hkase's Ducks photoset

2010年09月29日

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を使った読みやすく書きやすい何かが ありそうな気がするのですが、どこかにありませんか?

[カテゴリー:programming] [reST]

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..のようにして回避。

[カテゴリー:programming] [reST]

2010年06月23日

テスト

テスト

コントロールパネルから追加するテスト

[カテゴリー:] [reST]

2007年08月19日

Pyblosxom-1.4.2リリース

Pyblosxomのバージョンアップ

いつのまにか バージョン1.4 系列がスタートしていた。

とりあえず1.4.2(メインページにはまだ無い)に入れ替え。

[カテゴリー:site-making] [reST]

2007年08月18日

雑記

いつのまにか…

休日出勤ばかりになってしまった。

自分が関わったプロダクトは割と高評価らしくていいんだけど…。

[カテゴリー:zakki] [reST]

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 に。

[カテゴリー:programming] [reST]

2007年03月25日

contrib-1.3.3リリース

contribの新版

Pyblosxomのプラグインパッケージcontribの 新版がリリース

バグフィックスがメイン。pycalendarだけ入れ換え。

[カテゴリー:site-making] [reST]

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で書いた方が楽だと思う。 だたし実行後の立ち上がりや処理速度は遅く感じる。

[カテゴリー:programming/python] [reST]

2007年02月02日

SimCity2000 on Wine

thumbnail

サイズ:500KB

Wine

Wineのバージョンは0.9.22。かなり昔のバージョンアップで動かなくなったのが、最近また動くようになりました。

[カテゴリー:linux/screenshot] [reST]