No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 927 | 928 | 929 |...| 1338 | 1339 | 1340 || Next»

ひったくり未遂にあう

バイクの洗車を終え,水を拭き取るのに使ったウエスを入れた袋を右手に下げ,大通りから一本内側の道を歩いていた.そしたら,後ろからやってきた二人のり(2種?)原付スクーターにウエス入りの袋をひったくられそうになった.

前から歩いてきた爺さんを避けようと道の左によったのが敗因.その直後に,バイク来たなー → 何か袋が引っかかったなー → 引っ張られてるなー → 袋をちゃんとつかんで引き寄せよう → バイク逃走 → むかつくからしばらく走って追いかける → 人間の足では原付に勝てません.

赤羽岩淵病院の裏あたり,18時30分頃.暗かった&私の目が悪いのでナンバーは見えず.残念.ウエス入りの袋を盗られてたほうが話としては面白かったのかも知れない.

とりあえず,荷物を手に持って歩くときは建物側に持っておきましょう.小道ではなく大通りを歩きましょう.後ろからバイクが近づく音がしたら振り返って確認しましょう.変に近づいてきたらケリを入れましょう.スタングレネードぐらい用意しておきましょう?

犬吠埼から房総半島一周

犬吠埼で日の出を拝もうと出発.ついでに鋸南町の河津桜(頼朝桜)の様子見に行くことに.結局房総半島を海岸線に沿って約一周した(西側は面倒になって館山自動車道に乗ってしまったけど).450キロくらいで12時間くらい?

ということで犬吠埼の灯台.寄り道してたら意外と時間食って到着時には日の出直前.ちなみに房総半島最東端とのこと.

で,日の出.天気が良さ気なので期待していたけれど,またもや海から直接の日の出は見られなかった.けどまあ,これまでで一番低い位置で雲から出たのでそれなりに満足.低い位置だと赤さが違う.

おまけで満月.地球の丸く見える丘展望館の近くで撮影.展望館自体は当然のごとく閉まってたので路上から.暗い夜の満月の月出とか良いかも知れない(無理).

あとはひたすら館山経由鋸南町へとひたすら海岸線を走行.強風のため砂浜近くでは砂が飛びまくりバイクのボディに砂がこびりつく.そんな状態なので給油のためにタンクバッグをずらしたら傷が…… 細かいキズはもう気にしない.折を見てまたコーティングすりゃいいや.

道中,房総半島最南端の野島埼と房総半島最西端の洲崎によった.これで残すところは房総半島最北端のみ.……どこだろ?

そんで,鋸南富山のICから佐久間ダムへ向かおうとしたらいつもの道が全面通行止.しょうが無いので迂回路へ.この時期は桜の見物客も増えてきているので迂回の車がそれなりに連なって迂回路を進む.んで,先頭の車が迷う.

結局無事に佐久間ダム湖に着いたけれど,桜はまだまだだった.残念.規模も今ひとつどの程度なのか分からず.水辺である必要がなければ松田に行くほうが良いかも知れない.元気があれば河津町が良いけど伊豆半島は高速道路的意味で発達不良なので悩ましい.

考え事

死亡保障が終身な掛け捨てで短期払いの保険はないものか? まあ,解約払戻金を減らした低解約返戻金型終身保険は存在するのでそれがそうであるといえばそうなのだけど.あれって減らし具合が微妙なんだよな…

結局のところ,積立型で短期払いな終身保険って意味ないような気がしてきた.解約してお金返って来ても保障自体がなくなってしまうので困る.なので解約できないしお金も手元に戻せない.掛け捨てにして余ったお金を別途運用し続けるのがマシ.

まあ,定期払いで終身保障にするための上乗せ分だと思えば妥当なのだけど.

うーん,具体的なモデルとパラメータが欲しい.

cluster SSHというもんを教えてもらった

昨日,複数のターミナルにコマンドをインタラクティブに実行する方法を適当にでっち上げたのだけど,それと似たことが出来る cluster SSH というものを教えてもらった.せっかくなのでちょいと試しに使ってみた.sudo apt-get install clusterssh で用意完了.

cluster SSH は、複数の ssh 接続を作って,それぞれにターミナルを用意して,もうひとつのウインドウにあるテキストフィールドへの入力を選択したターミナルにインタラクティブに送ってコマンドを実行できる.入力を送り出すターミナルの集合はGUIから選択できる.また,あとから ssh の接続を増やしたり減らしたり出来るみたい.

んで,cluster SSH だと,上矢印キーとかCrtl-Rとかのコントロールコードも即座に送ってくれるため,過去のコマンドを呼び出すのが一斉に簡単に出来る.これは良い機能.……それぞれのターミナルでヒストリが違う時には非常に困るけど.

昨日の方法だとコントロールコードを送るとか面倒だし1文字ずつ送るのも工夫がいる.

一方で,cluster SSH だと,for 文を回して各ターミナルに微妙に異なるコマンドを送り付けるという技が出来ない気がする.あと,コマンドを送り付けるターミナルの選択をスクリプトで自動的にやるとか出来ない気もする.そもそも,コマンドを入力するテキストフィールドに機械的にコマンドを投げ込む方法が分からない.

ということで,クラスタに対して均一な操作を加えるときには cluster SSH は非常に便利そうだなぁという印象.ソフトウェアのインストールとか.でも,変態的な使い方が出来そうに見えないのでつまらない気もする.

靴が…

いつも履いている靴がどこも売り切れ中.ちょうど欲しいサイズがメーカー在庫無し.モデルチェンジでもするのかたまたま品切れなのか… 何れにせよ今履いているヤツはつま先の底がかなりすり減ってしまっていて,歩行中地面を蹴るときに滑りまくって効率が悪い.昨日の雪でも結構滑ったし.

靴の新調は確定として,別の靴にするかどうかが悩ましい.

複数のシェルにコマンドをお届け

今回の論文を書くための実験で,複数のHadoopのクラスタセットひとつひとつに対応するターミナルを開き,それぞれで似たようなコマンドを実行して実験結果を取るという作業をした.コマンドをカットアンドペーストで全部のターミナルに張り付けて実行するとかバカすぎる.なんとかしたい.

という背景で,複数のターミナル(シェル)に対して一箇所から機械的にコマンドを打ち込みたい要求に駆られた.pssh とかだとインタラクティブに出来ないし,そもそも出力のためのターミナルは複数のウインドウにわかれていて欲しい.やりたいのは入力の一本化だけ.

単純に考えると,fifo を使って入力ターミナルからのコマンドを出力ターミナルの標準入力に送ればいい気がする.なので,とりあえず,出力用ターミナルで

cat pipe | bash

としておいて,入力用ターミナルでコマンドを

echo 'cd hoge' > pipe
echo 'ls' > pipe

とかやって送り付けようとした.

が,失敗.何故かコマンドをひとつ発行しただけで出力ターミナルの bash が終わってしまう.これでは複数のコマンドをインタラクティブに発行できず,psshと変わらない.これは望むものではないので原因を探って手法を改善せねばらない.

上の単純な仕組みが失敗した原因は次の通り:最初に送られたコマンドを出力側の bash が読み込んだとき,pipe が EOF に達してしまって "cat pipe | bash" のコマンドが終了してしまう.pipe には後から内容が追加されるけど,とりあえず最初のコマンドの後に一度はファイルの終端まで達するので,シェルのパイプが終了してしまう,と.

さてどうしたものか.

適当に検索してみたら同じようなことを考える人はいたようで,解決策が見つかった."cat pipe | bash" の代わりに次を使えばいい.

tail -f pipe | bash

この tail の -f オプションは,EOFに達しても tail を止めずEOF後に追加された内容も後ろに吐く,という指定.手前のコマンドの出力のプログレスを表示するとかの目的に使われるオプションらしい.これをやっておけばコマンドを間隔を置いて複数送り付けることが出来る.

ということで,前準備@入力ターミナル:

ps="1 2 4"
for p in $ps; do mkfifo pipe-$p; done

前準備@出力ターミナル達:

tail -f pipe-1 | bash
tail -f pipe-2 | bash
tail -f pipe-4 | bash

あとは,適宜全部のターミナルに対して for 文使って少しずつ違うコマンド送ったり,一斉にコマンド発行したり,特定のターミナルにだけ cat 使ってインタラクティブに仕事したり,tee と合わせて特定のサブセットにだけコマンドを送ったり,等など.それなりに使い勝手が良い気がする.

for p in $ps; do echo "procs=$p" > pipe-$p; done
for p in $ps; do echo 'this is pipe-$procs' > pipe-$p; done
for p in $ps; do echo "./runExp.sh" > pipe-$p; done
...
cat | while read line; do echo $line; done > pipe-4
...
cat | while read line; do echo $line; done | tee pipe-2 | tee pipe-4
...
for p in $ps; do echo "cat result-$p.txt" > pipe-$p; done

cat の while read line は1行単位でコマンドを送るため.ここらへんは関数を定義しておいたほうが頭よさげ.

あとは最初のセットアップのところを for 文でいけると楽.ということで,出力ターミナルを一斉に作ってパイプをつなぐコマンド:

for p in $ps; do (echo "(echo 'echo this is pipe-$p'; tail -f pipe-$p) | bash" > pipe-$p &) ;( gnome-terminal -x bash pipe-$p &); done

これで満足.

«Prev || 1 | 2 | 3 |...| 927 | 928 | 929 |...| 1338 | 1339 | 1340 || Next»
Search
Feeds

Page Top