ヨーキョクデイ

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

スイッチングハブ買った

先日家族からプロバイダ変更の検討などの相談があり、どういったプランの契約内容かも知らなかったのでいろいろと調査してみたところ、より高速なインターネッツ環境が整えられた気がする。ところで我が家は 1 階にインターネッツの諸機器があり、我が部屋は 2 階にあるわけで、無線 LAN を導入して久しいわけだが、それがボトルネックとなって我が部屋では若干のスピードアップしか享受できないことがわかった。それゆえに一念発起し、あえて LAN ケーブルを引いてしまおうという暴挙に出た。
というわけで 30 メートルの LAN ケーブルを引き、我が部屋の末端でギガビットなハブに接続し、各機器に分けようという試みなのである。そこで導入したのが NETGEAR の GS108 という物なのである。

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

イースタン戦が中山の荘銀・日新スタジアムとかいう、つまるところの山形県野球場で開催されたので行ってきた。楽天 vs 巨人。QVC マリンでのオープン戦がおじゃんになったので、ようやく今季初観戦。
この球場に来たのは実に 20 年ぶり(!)2 回目で、イチローなんかがいる全盛期のオリックスが来るというので行った以来なので感慨深い。

それはそうとして、今回の試合は投手戦のような何かであり、両軍スコアレスからの延長戦で三好がサヨナラスリーランホームランをぶち込むという展開であった。イ・リーグ首位の底力を見た気がする。
f:id:electrolysis:20150602171625j:plainf:id:electrolysis:20150602172032j:plainf:id:electrolysis:20150602172504j:plainf:id:electrolysis:20150602175803j:plainf:id:electrolysis:20150602183109j:plainf:id:electrolysis:20150602183836j:plainf:id:electrolysis:20150602184826j:plainf:id:electrolysis:20150602193109j:plainf:id:electrolysis:20150602193739j:plainf:id:electrolysis:20150602193835j:plainf:id:electrolysis:20150602194201j:plainf:id:electrolysis:20150602194200j:plainf:id:electrolysis:20150602200755j:plainf:id:electrolysis:20150602201543j:plainf:id:electrolysis:20150602210949j:plain
近年の甲子園を湧かせた連中や、1 軍主力クラスの連中も多く、見応えがあった。

Samba24 なの(仮)メンテ

どうやら 25 日にサーバの大規模メンテが入ったらしく、CGI が 500 を吐きやがることを偶然発見したので、メンテ内容を精査したところ、Ruby が 1.8.5 から 2.2.0 にバージョンアップされていた。

上記に記載されていなかったのでスルーしていたところ、そこからリンクされている
障害情報 を見なければいけなかったという罠。ApachePHP の変更だけじゃなかったのかよ、と。
ところで、長らく使用していた Ruby 1.8 系のコードを書き換える必要が出てきたわけだが、とりあえずエンコーディング関連と require パスの処理の変更を行う必要があるらしかったので、そこを修正してとりあえず動いている模様。浦島太郎であるわけだが、XREA がずっと 1.8 系を使ってたせいで俺は 1.9 以降に移行しようとしなかったので、Ruby の変わりっぷりをよく知らないのでつらい。
以前からちょこっと載せているが、そろそろ閉鎖したい所存。

鉄分補給の旅

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 と同じフォルダに置く。
これをタスクスケジューラに登録する。
f:id:electrolysis:20150119193237p:plain
「遅延時間を指定する」でログオン時から 2 分後に始動するようにしたのは、Pito! をスタートアップフォルダに入れており、2 重起動のようになるを回避するため。スタートアップから除去すれば遅延時間の設定は不要。「繰り返し間隔」を 10 分間にし、10 分ごとにスクリプトが呼ばれるようにした。すなわち、俺ログオン -> Pito! 起動 -> 2 分後にスクリプト呼び出し -> 以後 10 分ごとに呼び出し という流れになると思われる。

f:id:electrolysis:20150130214535p:plain