ヨーキョクデイ

100% pure impurities, which may imply some value. (j は虚数単位)

定期的にソフトを再起動したい

俺様用メモ。
非アクティブウィンドウのスクロールをマウスホイールで可能にするソフトっていうのが Wheel Redirector やら各種あると思うのだが、別用途で昔から使っていた Pito! にもこの機能がある。しかしながら、Windows 7 でこれらを使っていると、ふとしたときにこの機能が効かなくなることがある。そのたびにソフトを閉じ、起動し直していたが、ようやく重い腰を上げて調べてみたところ、Windows 7 の仕様で、グローバルフックのタイムアウトがどうこうらしいということがわかった。たとえば次。

そこで、タスクスケジューラを使って定期的に再起動させることにした。
まずは JScript で再起動処理を書く。黒窓を表示させないようにするための策。

var shell = WScript.CreateObject("Wscript.Shell");
var err = shell.run("taskkill /im pito.exe", 0, true);
err == 0 && WScript.sleep(1000 /* ms */);
shell.run("D:\\util\\pito\\pito.exe", 0, false);
var shell = WScript.CreateObject("Wscript.Shell");
var path = WScript.ScriptFullName.replace(WScript.ScriptName, "");


function getTarget(){
  var args = WScript.arguments;
  if(args.length < 1){
    WScript.quit(-666);
  }
  return args(0);
}

function kill(aTarget){
  return shell.run("taskkill /im " + aTarget, 0, true) == 0;
}

function isAlive(aTarget){
  return shell.run("cmd /c tasklist /fi \"IMAGENAME eq " + aTarget + "\" | find \"" + aTarget + "\"", 0, true) == 0;
}


var target = getTarget();

if(kill(target)){
  for(var i = 0; isAlive(target) && i < 20; i++){
    WScript.sleep(1000);
  }
}

if(!isAlive(target)){
  shell.run(path + target, 0, false);
}
else{ // give up
  WScript.quit(-334);
}

taskkill でプロセスを殺そうとし、ポア指令送信が成功したら 1 秒待機した後に起動し直す、また、送信失敗(基本的には対象プロセスがない場合だよね)ならば即起動というもの。taskkill は処刑台のスイッチを押すだけで、プロセス死亡そのものは非同期のようで、実際に死ぬ前に処理が返っているが、1 秒待てばその間に死ぬよね、という発想なので、ダメそうだったら待機時間を増やすなり、監視するようにするなりしよう。
やはりアレだったので変更。taskkill でプロセスを殺そうとし、最大で 20 秒だけプロセスの生死を監視し、実際に死んだら再起動、死ななかったら放置ということにした。また、スクリプトへの引数で対象プログラム名を与えることにした。これを exe と同じフォルダに置く。
これをタスクスケジューラに登録する。
f:id:electrolysis:20150119193237p:plain
「遅延時間を指定する」でログオン時から 2 分後に始動するようにしたのは、Pito! をスタートアップフォルダに入れており、2 重起動のようになるを回避するため。スタートアップから除去すれば遅延時間の設定は不要。「繰り返し間隔」を 10 分間にし、10 分ごとにスクリプトが呼ばれるようにした。すなわち、俺ログオン -> Pito! 起動 -> 2 分後にスクリプト呼び出し -> 以後 10 分ごとに呼び出し という流れになると思われる。

f:id:electrolysis:20150130214535p:plain

スマホ機種変更した

愛用の ELUGA V がもっさりしてきてつらいので、発売間もない Xperia Z3 Compact SO-02G のオレンジをゲット。例によってドコモオンラインショップにて。大型化してきているらしいスマホ界隈の中で、サイズが ELUGA V とほぼ同じなのであえてこれを選んだのだが。

Xi 速い。

mbed 始める

前々から動く物が作りたかったというか、物を制御したかったわけで、お手軽マイコン環境が欲しかったのだ。当初は Arduino を狙っていたのだが、ここは流行に乗ったのかよくわからない mbed がよろしいな、と。というわけで mbed NXP LPC1768 というのをゲットした次第。割高ではあるが、枯れた環境ということで、ノウハウが蓄積されていそうで、つまずきにくそうだったので。
他にもいろいろとパーツを入手したので、初期投資が 10k 弱という大きな出費と。俺の半導体素子が火を噴く(物理)ぜ。

mbed NXP LPC1768

mbed NXP LPC1768

慣れたらセンサ類や各種 IC なんかも入手して、いろいろとごにょごにょしたい。

今年 2 度目のコボスタ

コボスタにてオリックス戦。オリックスを見るのはイチローが 3 打数 5 安打とかやっとったとき以来。
前半の楽天勝ちムードから一転、オリックスの逆転勝利というお寒い試合であった。それゆえに 8 回終了時点で撤収。AJ と T-岡田の豪快なホームランを見ることができたので、まあ。T-岡田の応援歌を心の中で歌っていたのは秘密。

ソロ遠征のため、300 キロほど運転したのでいろいろとつらい。
パ・リーグ通の人と一緒に穏やかに観戦したいものである。

ファームの試合を観戦した

イースタンリーグの試合が鶴岡で開催されたので行ってきた。楽天 vs 西武。
楽天の先発は松井裕樹で、カウントを悪くする場面が多かったものの、6 イニングを投げ、15 奪三振、被安打 2、無失点という無双具合であった。試合自体も西武のミスにつけ込んだりしつつ 10-0 で楽天が快勝。ほぼ地元出身の下妻もいい仕事をしていたし、俺含め、観客諸君は非常に楽しめたのではなかろうか。
個人的には枡田の大活躍を期待していたが、シャーパーの代打ホームランでうひょーだったのでよし。終盤でリリーフで出てきた永井と戸村はいつ 1 軍に来ますか。
また、西武の注目のドラ 1 ルーキー森友哉と松井の対決も楽しめたし、書道家かつピアニストのドラ 2 ルーキー、サードの山川穂高の動けるデブっぷり、いや、華麗な守備に魅了されるなど、見所が多かった。陣取った席が 1 塁側で、ちょうどマウンドと 1 塁を結んだ直線上だったので、サードからのランニングスローが非常にかっこよく見えるのよね。
f:id:electrolysis:20140531182003j:plainf:id:electrolysis:20140531183332j:plainf:id:electrolysis:20140531182038j:plainf:id:electrolysis:20140531184820j:plainf:id:electrolysis:20140531192051j:plainf:id:electrolysis:20140531203422j:plainf:id:electrolysis:20140531204616j:plainf:id:electrolysis:20140531205401j:plainf:id:electrolysis:20140531205407j:plain
しかし、鶴岡ドリームスタジアムは内外野天然芝でいい球場ですわ。