2008-02-01から1ヶ月間の記事一覧

Two-Phase Termination(interrupt版) →失敗

javaにおけるThread#interruptのような「wait/sleep状態のスレッドを中断させるメソッド」というものが分からなかったので、その点を省略しています。 http://d.hatena.ne.jp/qnzm/20080209/1202524095 と言っていたのですが、単純に例外投げるようThread拡…

SSHをデフォルト設定で放置すると危ない

ssh

SSH設定周りを見直したので、メモしておきたいと思います。 SSHサーバのOSはCentOSです。 おおよそ、デフォルトのsshd_configに対してなんら対策を施していない場合、非常に多くの情報が既知である為、攻撃者はパスワードを見つける事だけに専念する事でセキ…

ActiveObject

マルチスレッドパターン本のトリは、ActiveObjectパターンでした。 ActiveObject…能動的オブジェクトは、「外部から受け取った非同期メッセージを、自分固有のスレッドで、自分が都合のいいタイミングで処理する」というものです。 他のパターンに比べてクラ…

Thread Specific Storage

マルチスレッドパターン続き、今回はThread Specific Storage。 このパターンは、入口が1つでも内部ではスレッド固有の領域が用意されている、というパターンです。 サンプルではjava.lang.ThreadLocalを利用していますが、この点をHashで代用しました。 ま…

Two-Phase Termination

マルチスレッドパターン続き。 終了要求をうけ終了する前に、「終了状態」を挟むことによって安全性、生存性、応答性を確保しようというパターン。 今回はjavaのThread#interruptにあたるrubyのメソッドが見あたらなかったので、本とは少し異なったイメージ…

Future

マルチスレッドパターン続き、今回はFutureパターンです。 これは「戻り値の準備」と「戻り値の利用」を分けましょう、というものです。 メインスレッドは一旦プロキシを受け取っておいて、プロキシに対応する実際のデータは別スレッドで走って作りましょう…

呟き

"マルチスレッドパターン本をもとにrubyで書き直してみる"ということ自体はいいにしても、あまりにサンプルの置き換えそのままだと写経・複写に近くてちょっとまずいなあと思い始めました… 次回(があれば)ちょっと捻るようにしたい…

メソッドの起動(invocation)と実行(execution)の分離(Thread-Per-MessageとWorker Thread)

マルチスレッドパターンの続き。 今回はThread-Per-MessageとWorker ThreadをRubyで書いてみました。 この二つのパターンは、いずれも「メソッドの起動(invocation)と実行(execution)の分離」という点で共通していて、 使い捨て(Thread-Per-Message) 使い回…

Guarded Suspension

id:hyukiさんの本を片手に、マルチスレッドのパターンを見ていっています。 今はGuarded Suspension。 自分の状態が適切なときだけ、目的の処理をスレッドに実行させることについて書かれていて、「じゃあrubyで書いてみよう」と思ったら、rubyにはQueueとい…