9 日から 11 日にわたって、千葉に行ってきたのだが。10 日に QVC マリンで開催されるプロ野球オープン戦の観戦のため。
9 日、酒田から新庄回りで向かう。新庄から大宮までは山形新幹線、大宮からは興味本位で京浜東北線で南浦和へ、武蔵野線で南船橋へ、京葉線で千葉みなとへという乗り継ぎ。宿は千葉みなと駅の近くなのである。
10 日、球場に行ってはみたものの、雨のために試合開始を遅らせつつ、そのまま中止という具合でげんなり。どうしようもないので電車でその辺を行ったり来たりしつつ時間を潰す。フリー切符的なやつなのでやりたい放題ではあった。
夜になると、強風のために翌日の帰りの「いなほ」の運休が決まった。千葉駅のみどりの窓口に行こうとするも、モノレールがトラブルで動いていないので、ガッツで歩く。払い戻しの手続きをし、行きと同様に「つばさ」で帰るために切符を購入。
11 日、興味本位から、千葉駅から総武線快速で東京駅へ。山形新幹線、陸羽西線で余目駅へ。余目から羽越本線に乗り換えて酒田に行く流れなのだが、羽越本線のダイヤが大幅に乱れていることもあり、お迎えに来てもらいつつ帰宅。
なかなかのトラブル三昧の旅であった。
定期的にソフトを再起動したい
俺様用メモ。
非アクティブウィンドウのスクロールをマウスホイールで可能にするソフトっていうのが 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 と同じフォルダに置く。
これをタスクスケジューラに登録する。
「遅延時間を指定する」でログオン時から 2 分後に始動するようにしたのは、Pito! をスタートアップフォルダに入れており、2 重起動のようになるを回避するため。スタートアップから除去すれば遅延時間の設定は不要。「繰り返し間隔」を 10 分間にし、10 分ごとにスクリプトが呼ばれるようにした。すなわち、俺ログオン -> Pito! 起動 -> 2 分後にスクリプト呼び出し -> 以後 10 分ごとに呼び出し という流れになると思われる。
スマホ機種変更した
愛用の ELUGA V がもっさりしてきてつらいので、発売間もない Xperia Z3 Compact SO-02G のオレンジをゲット。例によってドコモオンラインショップにて。大型化してきているらしいスマホ界隈の中で、サイズが ELUGA V とほぼ同じなのであえてこれを選んだのだが。
Xi 速い。
mbed 始める
前々から動く物が作りたかったというか、物を制御したかったわけで、お手軽マイコン環境が欲しかったのだ。当初は Arduino を狙っていたのだが、ここは流行に乗ったのかよくわからない mbed がよろしいな、と。というわけで mbed NXP LPC1768 というのをゲットした次第。割高ではあるが、枯れた環境ということで、ノウハウが蓄積されていそうで、つまずきにくそうだったので。
他にもいろいろとパーツを入手したので、初期投資が 10k 弱という大きな出費と。俺の半導体素子が火を噴く(物理)ぜ。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- クリック: 1回
- この商品を含むブログを見る