2011年9月2日金曜日

python でタイムアウト

SIG ALARMを使ったタイムアウトの仕掛け。再実装するのが嫌なのでメモとして残しておこう。スレッド環境では使えないので注意。
import signal
import time

class timer():
    def __init__(self):
	self.flag = True

    def _handler(self, x, y):
	self.flag = False

    def set(self, sec):
	signal.signal(signal.SIGALRM, self._handler)
	signal.alarm(sec)

    def check(self):
	return self.flag

if __name__ == "__main__":
    tmr = timer()
    tmr.set(3)
    while tmr.check():
	time.sleep(100)

2011年8月31日水曜日

Hadoop on Mac OS (single node)

CDH からHadoopをダウンロードしてきて展開。 http://hadoop.apache.org/common/docs/stable/single_node_setup.html のとおりにconf以下の3つのファイルをいじる。

ssh でlocalhostに入れるようにしなければならないので、共有でリモートログインを有効にしておく必要がある。

で、

> bin/hadoop namenode -format
> bin/start-all.sh
でOK. namenode のフォーマットをしないでstart-allするとnamenodeが起動しないので要注意。
> jps
6724 
17758 DataNode
17969 Jps
17958 TaskTracker
17833 SecondaryNameNode
17683 NameNode
17885 JobTracker
とかなって、4つのデーモンが全部立ってればOK.

2011年8月23日火曜日

Mac でfortran + mpi

本気で使うわけではないので適当に。mac portsで入れる。

まずはfortran95を、とか思って
> sudo port install g95
とかやるとgcc4.2ベースのg95が入ってくれるけど、実はMPICH2が使ってくれない!ので無駄。

MPICH2を入れるときにvariantとしてgccXXを入れると、enable-fortranフラグが立ち、勝手にfortranを入れてくれる。らしい。

> sudo port install mpich2 +gcc45

とかやると、fortranだけじゃなくて、なんかgcc-javaとかobjective-cとかまで入れてる。。いつまでたっても終わらん。が、最終的にはちゃんと入ったようだ。めでたい。

Mac でMDをmp3に変換

Audacity で万全。Audacity はもっといろんなことの出来るソフトウェアらしいのでこんなことに使っては申し訳ないような気もするが。

Audacity は単体ではMP3への書き出しができないのでlameをプラグインとして追加する必要があるが、これもインストラクションに従えば良い。

  • まずは録音をする。入力を外部入力に指定するのを忘れないこと。デフォルトはモノラルなのでステレオにすること。
  • 分割をする。「解析」ー「find silence」とやると自動的にラベルを打ってくれる。無音部を拾うだけなので実際の曲の区切りとは異なる場合があるので、結果を聞きながら修正する。ラベルは削除することも追加することも可能。削除はラベルの文字列を削除した状態からさらにバックスペースを押すと消える。特に1曲目の頭と最後の曲の末尾は、切り捨てられてしまう場合があるので、注意して修正する必要がある。
  • 「複数ファイルへ書き出し」でMP3へ書き出し。ID tagの入力をいちいち求められるがあとで纏めて打ったほうが簡単かもしれない。

2011年8月12日金曜日

Mac OS X 64ビットと32ビット切り替え

MacOS X でデフォルト動作モードを切り替える方法。
$ sudo systemsetup -setkernelbootarchitecture x86_64
$ sudo systemsetup -setkernelbootarchitecture i386

2011年7月22日金曜日

ps2gif

#!/bin/sh
pstopnm -stdout $1 | pnmrotate -90 | ppmtogif > ${1%.*}.gif

2011年7月10日日曜日

git の設定

手元のディレクトリ(text)を新たにリモート側にレポジトリを作ってプッシュする。

リモートサーバ
まずは、リモートサーバにgit のレポジトリを用意

> mkdir text.git
> chdir text.git
> git --bare init --shared

ローカル側のディレクトリをレポジトリとして初期化

> cd text
> git init

ローカルレポジトリに追加してコミット

> git add .
> git commit -m "initial commit"

ローカルとリモートを接続

> git remote add origin ssh://example.com/home/yourname/text.git

このとき自分のホームからの相対パスではなく、フルパスで指定するところがポイント。

で、プッシュ

> git push origin master

別のマシンで作業するときには

git clone ssh://example.com/home/yourname/text.git

とすればよい。