半死半生

システム屋が恐れることとして、「半分死んでいる」というものがある。簡単にいえば、見た目は生きているのに実は死んでいるという状態のことだ。

システムを構築する場合、二重化を考えないSEはいないが、予算の制約やら、システムの重要度の低さから、二重化されないケースは多い。逆にいえば二重化されているシステムは、予算と重要性のハードルをクリアしているということだ。なので、二重化されているシステムがコケるとそれなりに大きなインパクトがある。

二重化の厄介なところは、一方が死んでいることをもう一方が判断するのが難しいところである。一般的にサーバーの二重化であれば、pingに応答するか、http要求に応答するか、クエリに応答するかといった判断基準を設けて、基準を満たさなければ死んだと見なしてサービスを死んでいない側に引き継ぐ。しかし、pingには応答するが実は死んでいる、httpには応答するが実は死んでいる、クエリには応答するが実は死んでいる、なんて恐ろしいことは当たり前のように発生するのだ。逆に、pingには応答しないが生きているといった、応答しないのに生きているのも怖い。

二重化というのは生き死にの判断が確実に行えることが前提の仕組みで、実は生き死にの判断は非常に難しいのだ。

近年はこの生き死にの判断が、仮想化によってより難しくなっている。仮想技術によってまるで生きているようにみえるが、実は死んでいる。仮想OSが見せてくれるストレージは生きているのに、物理ストレージは死んでいる、仮想NICは生きているのに物理NICは死んでいる等だ。

半死には簡単には再現できないので、テストができない。テストができないということは、切り替えが確実におこなえるという保証がないということだ。

今障害が発生したら、結構な確率で二重化かつ半死にだということは覚えておいたほうがいいだろう。半死にが発生した場合にどうやって復旧させるのかというのは、検証方法を含めて設計段階であらかじめ考えておくことが結構重要なんですよという話でした。

私は如何にWindows10 1903へのアップデート失敗を克服したか

3か月ほど前の話。
結構古いPCとなってしまった、東芝dynabook KIRA V63をWindows 10の1903にアップデートしようと思って、何回か実施したのだけれどもことごとく失敗した。途中までうまくいくのだけれど、インストールが進捗し70%を超えたあたりの再起動でBSODが発生し、1809にロールバックしてしまうのだ。ロールバック後のエラーコードをみると0xc1900101 0x40017というものだが、グーグルさんに聞いてもあまり参考にならなかった

まあせっかくBSODも出ていることだし、ダンプ解析すれば一発で原因がわかるだろうと思い、ダンプファイルを解析しようと思ったのだが、ダンプファイルは存在しなかった。こうなると、手に負えないので1909が出るまで待って、1909を試してもうまくいかなかったら考えるかと思い、一旦アップデートをあきらめた。

今日の話。
visualstudio のサブスクリプションの契約者にWindows10の1909の配布が始まったので、早速入手し、KIRAに対してアップデートを試してみたところ、やっぱり同じ現象が発生してインストールがうまくいかないのであった。

さて困ったと思い、いろいろ調査したところ、以前グーグルさんに聞いたときは存在しなかった情報を発見した。なんとBSODに伴うwindowsロールバックの際はダンプファイルは、c:\$Windows.~bt\Sources\Rollback\setupmem.dmpにあると記載されているではないか。

それならダンプを解析すれば簡単だ。Windowsのダンプ解析はwindbgでできる。
Windbghttps://so-zou.jp/software/tech/tool/debugger/windbg/この辺で使用方法を確認すればよい。!analyze -vすればBSODの原因となったであろう部分がかなり正確に判明する。大体の場合はハードかドライバーが原因で、ドライバーが原因なら更新かアンインストールすればよいだけだ。

さて、ダンプファイルを解析したところ、module nameにarcsec.sysと記載されている。どうやら原因はarcsec.sysというファイルのようであった。早速このファイルが何なのか確認したところ「TotalMedia Theatre」というソフトの一部であることが判明した。「TotalMedia Theatre」をアンインストールして再度1909を適用してみたが、やはりarcsec.sysでBSODを起こしてしまう。どうやらアンインストールしてもc:\windows\system32\driversにarcsec.sysは残っているようだった。arcsec.sysファイルはなぜか削除ができないので、おそらくドライバーかサービスとして組み込まれちゃっているのだろう。サービスなら自動起動を停止して再起動すれば削除できるはずなので、サービス一覧を確認したが、ArcSecとかTotalMediaはなさそうだった。であればレジストリ自動起動を阻止するため、\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\を見るとそのままずばりArcSecキーがあったので、取り急ぎStartに4を設定することで無効化し再起動したところ、ArcSecが削除できるようになっていたので削除した。
再度1909をインストールしたところ今度は無事にインストールが行えたのであった。

すべては、変なところにダンプファイルを置いておくMSが悪いと思ったものの、おそらく複数回発生するダンプの上書きを回避するために場所を変更したんだろうと思い、まあ許してやらんでもないと思ったのであった。

ということで、windows10のアップグレードでBSODで失敗する場合のリカバリ手順ができたのは喜ばしいのである。

田舎出身者のゲーム音楽履歴

ゲームの音楽について初めて意識したのは、これは間違いなくスーパーマリオである。小学生のころ友人の家に行って見せてもらったファミコンスーパーマリオはその圧倒的なインパクトで、その夜の私を眠らせなかった。眠りたいのだが、あの電子音楽が耳に残って眠れないのだ。
その後に驚いたのはドラクエ3だ。まさかゲーム音楽を交響楽団が演奏し、それがカセットテープとして販売されるとは。わざわざ中学校にテープを持ってくる奴がいて、その再生でメロディのすばらしさに驚嘆する。まったくドラクエはやっていないのに音楽は覚えてしまった。
その後、友人の影響でベーマガを知り、友人の打ち込んだYsやらソーサリアンやらでYK-2こと古代祐三氏を知ることとなる。*1
高校に入ると、なんといってもFF3のメロディに感激し、植松伸夫氏の名前を知る。そのまま植松伸夫氏の作品をさかのぼってFF1のマトーヤの洞窟にはまる。高校でもゲーム音楽に詳しい友人ができ、古代祐三氏に再度はまり、アクトレイザーに驚愕する。*2
このころのスクウェアが圧倒的で、「FF4」のオープニングで心踊らされ、「ロマサガ」の音と曲の良質さに驚き、「FF5」のオープニングのベースにやられ、「クロノトリガー」に神を感じたのであった。
PS以前のゲーム音楽は制約により進化してきた分野と思う。制約内でのクオリティの進化を直接体験できたのは非常に運がよかった。
制約がなくなった今ゲーム音楽の進化はおそらく止まってしまったように見えるが、「シーン別に音楽を提供できること」が強みであるので、その強みが活かされた音楽が提供されることを望む。

*1:この友人は後に某R&Bユニットのプロデュースしたりしている。

*2:この友人は今cygamesでコンポーザやっている

70巻以上の漫画

年に2回くらい巻数が多い(超長期連載の)マンガを数えて、まとめ記事にエア引用されるシリーズ。

尚、シリーズの集計は「外伝」と思われるものを除外します。
○が単独。△が単独でも70越え。☆がシリーズ。

☆ドカベン	205巻	(完)(「ドカベン(48)」、「大甲子園(26)」、「プロ野球編(52)」、「スーパースターズ編(45)」、「ドリームトーナメント編(34)」)
○こち亀	200巻	(完)
○ゴルゴ13	193巻
○ミナミの帝王	153巻	(ただし、「ヤング編(6)」、「ヤング編 利権空港(3)」を含まない)
○クッキングパパ	150巻
----------------------------------150巻------------------------------------------
☆刃牙	135巻		(「グラップラー刃牙(42)」「バキ(31)」「範馬刃牙(37)」「刃牙道(22)」「バキ道(3-)」で外伝を含まない)
☆銀牙	130巻	(「流れ星 銀(18)」、「WEED(60)」、「WEEDオリオン(30)」、「LAST WARS(22)」、「ノア(0-)」を含み、「赤目(3)」を含まない)
○はじめの一歩	125巻
☆ジョジョ	125巻	(「ジョジョの奇妙な冒険(63)」「ストーンオーシャン(17)」「スティール・ボール・ラン (24)」「ジョジョリオン(21-)」)
☆キン肉マン	125巻	(「キン肉マン(68-)」、「キン肉マン2世(29)」、「キン肉マン2世 究極の超人タッグ編(28)」)
☆超人ロック	116巻	くらいだと思われる
○浮浪雲	112巻	(完)
○美味しんぼ	111巻
----------------------------------110巻の壁------------------------------------------
○弐十手物語	110巻	(完)
○静かなるドン	108巻	(完)
○あぶさん	107巻	(完)
○鬼平犯科帳	107巻
☆千里の道も	106巻	(「千里の道も(45)」、「新(16)」、「第三章(39)」、「修羅の道(6)」)
☆キャプテン翼	104巻	(「キャプテン翼(37)」「ワールドユース編(18)」「ROAD TO 2002(15)」「GOLDEN-23(12)」「EN LA LIGA(6)」「ライジングサン(11-)」あと短期連載が3冊。岬太郎を含まない)
☆コボちゃん	103巻	(「コボちゃん(60)」、「新コボちゃん(43-)」)
○釣りバカ日誌	102巻
○☆あさりちゃん	102巻	(「あさりちゃん(100)」、「5年2組」、「2018?! 」)
○パタリロ	101巻	(ただし、右に記載する外伝4シリーズを含まない「西遊記(8+1)」「源氏物語(5)」「家政夫シリーズ(5)」「パパ(1)」)
----------------------------------100巻------------------------------------------
○天牌	99巻(ただし天牌外伝(37)を含まない)
○江戸前の旬	98巻	(ただし「旬と大吾(3)」を含まない)
☆島耕作	97巻	(「課長(17)」、「部長(13)」、「取締役(8)」、「常務(6)」、「専務(5)」、「社長(16)」、「ヤング(8)」、「係長(4)」、「会長(11-)」、「学生(6)」、「就活(3)」)
○名探偵コナン	96巻
☆コータローまかりとおる	94巻	(「コータローまかりとおる(59)」「新コータローまかりとおる 柔道編(27)」「コータローまかりとおる L(8-?)」)
△☆MAJOR	94巻	(「MAJOR(78)」、「2nd(16-)」)
○ONE PIECE	93巻
☆ドクターK	88巻	(「スーパー(44)」、「Doctor K(10)」、K2(34-))
☆浦安鉄筋家族	86巻	(「浦安鉄筋家族(31)」、「元祖(28)」、「毎度(24)」、「あっぱれ(3-)」)
 ----------------------------------81巻の壁------------------------------------------
☆タフ	81巻	(完)	(「高校鉄拳伝タフ(42)」、「TOUGH(39)」を含み、「龍を継ぐ男(12-)」を含まない)
○なんと孫六	81巻	(完)
○山口六平太	81巻	(完)
☆鉄拳チンミ	80巻	(「鉄拳チンミ(35)」、「新鉄拳チンミ(20)」、「Legends(25-)」を含み、外伝(4)を含まない)
☆白竜	80巻	(「白竜(21)、「LEGEND(46)」、「HADOU(13-)」
○ふたりエッチ	78巻
○いのちの器	78巻
○ゼロ	78巻	(完)
○銀魂	77巻	(完)
☆釣りキチ三平	77巻	(完)(「釣りキチ三平(65)」、「平成版(12)」)
☆DEAR BOYS	76巻	(「DEAR BOYS(23)」、「ACT2(30)」、「ACT3(23)」、を含み「OVER TIME(3)」を含まない)
○まるごし刑事	75巻	(完)
○風の大地	74巻
○BLEACH	74巻	(完)
☆かっとび一斗	72巻	(完)(「かっとび一斗(46)」、「風飛び一斗(26)」)
○NARUTO	72巻	(完)
☆味いちもんめ	73巻	(「味いちもんめ(33)」、「新(21)」、「独立編(10)」、「にっぽん食紀行(6)」、「世界の中の和食(2)」、「継ぎ味(1-)」)
☆男塾	72巻	(「魁(34)」、「暁(25)」、「極(7)」、「真(6)」)
○DREAMS	71巻	(完)

次回用メモ

  • カイジシリーズ(69)黙示13、破戒13、堕天13、和也10、ワンポーカー16、24億4-
  • テニプリシリーズ(69)42、新27
  • 夕焼けの詩(65)
  • 王家の紋章(65)
  • 乱太郎(64)
  • かりあげ君(63)

超人ロックこちらid:soorceさんによりカウントされた93巻以降、風の抱擁が(3)+4、ホリーサークルが(1)+2、刻の子供達が+3、ラフラールが+4、ドラゴンズブラッドが+4、鏡の檻が+4、ガイアの牙が+2。または、こちら参照
シティハンターシリーズはシーケンシャルな物語でないので、集計から除外。

PHPは知らんのです

ライセンスの問題さえなければ、無償のツールを会社で使用するのは特に問題ないのだけれど、もちろんデメリットもあって
・問題があっても社内リソースで解決しなければならない(サポートが受けられない)
・プラットフォームの更新に追随できるとは限らない
という感じだ。

無償ツールは簡単に使えるが、使い続けることが難しい。OS、ウェブサーバ、DBが変わっただけで動作しなくなるなんてザラで、動作しなくなったら自分で動かすか代替手段を考えなければならない。

社内イントラで無償のwikiであるpukiwikiを使用している。非常によくできたツールであり、有志の作ったプラグイン機能も豊富で非常に便利だ。しかし、OSのアップデート、Apacheのアップデート、PHPのアップデートなどプラットフォームの更新によって動かなくなることが多い。
まあ、動かなくなってもPHPが読めれば動かせるのだが、当社にはPHPが読める社員がいないのだ(笑)

というわけで、Pukiwikiを使用している環境で、OSを更新したり、PukiWikiを更新したり、Apacheを更新したり、PHPを更新したりしたところ、PukiWikiプラグイン「checkbox2.inc.php」が一部動かなくなった。どうも、pukiwikiで日本語名のページを作成すると、その日本語名ページではcheckbox2が動作しない。

PHPなんて書いたことも読んだこともないが、なんとなく眺めているとなんとなく意味がわかってきた。ページ名称を入れてそうな変数を調べるとhtmlspecialcharsという関数で変換しているようだった。この関数を外してみるだけで正しく動作した。関数名から推定するに、XSSを発生させないようにエスケープする関数だろう。ちゃんとコードが読めれば、htmlspecialcharsをはずしてもXSSを起こさないか判断できそうだが、まあイントラなので、とりあえず外しただけで良しとした。ページ名に日本語がある場合、そもそもページ名はhtmlspecialcharsを通す前からエスケープされていそうだったので、おそらくは2重エスケープが問題だったと思われる。

ということで、
教訓1 知らないプログラミング言語でもほかの言語を知ってれば、なんとなく読めることはある
教訓2 知らないプログラミング言語のツールは使うな、どうしても使うなら有償サポートつけるか、その言語を知れ

6/13追記
htmlspecialchars関数はPHP5.4あたりから第3引数に文字コード指定をしないと日本語処理がうまくいかないという話があるようで、それが原因かもしれません。

70巻以上の漫画

年に2回くらい巻数が多い(超長期連載の)マンガを数えて、まとめ記事にエア引用されるシリーズ。

尚、シリーズの集計は「外伝」と思われるものを除外します。
○が単独。△が単独でも70越え。☆がシリーズ。

☆ドカベン	205巻	(完)(「ドカベン(48)」、「大甲子園(26)」、「プロ野球編(52)」、「スーパースターズ編(45)」、「ドリームトーナメント編(34)」)
○こち亀	200巻	(完)
○ゴルゴ13	191巻
○ミナミの帝王	152巻	(ただし、「ヤング編(6)」、「ヤング編 利権空港(3)」を含まない)
----------------------------------150巻------------------------------------------
○クッキングパパ	148巻
☆刃牙	134巻		(「グラップラー刃牙(42)」「バキ(31)」「範馬刃牙(37)」「刃牙道(22)」「バキ道(2-)」で外伝を含まない)
☆銀牙	129巻	(「流れ星 銀(18)」、「WEED(60)」、「WEEDオリオン(30)」、「LAST WARS(21-)」を含み、「赤目(3)」を含まない)
○はじめの一歩	124巻
☆ジョジョ	124巻	(「ジョジョの奇妙な冒険(63)」「ストーンオーシャン(17)」「スティール・ボール・ラン (24)」「ジョジョリオン(20-)」)
☆キン肉マン	123巻	(「キン肉マン(66-)」、「キン肉マン2世(29)」、「キン肉マン2世 究極の超人タッグ編(28)」)
☆超人ロック	115巻	くらいだと思われる
○浮浪雲	112巻	(完)
○美味しんぼ	111巻
----------------------------------110巻の壁------------------------------------------
○弐十手物語	110巻	(完)
○静かなるドン	108巻	(完)
○あぶさん	107巻	(完)
○鬼平犯科帳	106巻
☆千里の道も	106巻	(「千里の道も(45)」、「新(16)」、「第三章(39)」、「修羅の道(6)」)
☆キャプテン翼	103巻	(「キャプテン翼(37)」「ワールドユース編(18)」「ROAD TO 2002(15)」「GOLDEN-23(12)」「EN LA LIGA(6)」「ライジングサン(10-)」あと短期連載が3冊。岬太郎を含まない)
☆コボちゃん	103巻	(「コボちゃん(60)」、「新コボちゃん(43-)」)
○☆あさりちゃん	102巻	(「あさりちゃん(100)」、「5年2組」、「2018?! 」)
○釣りバカ日誌	101巻
○パタリロ	100巻	(ただし、右に記載する外伝4シリーズを含まない「西遊記(8+1)」「源氏物語(5)」「家政夫シリーズ(5)」「パパ(1)」)
----------------------------------100巻------------------------------------------
○天牌	98巻(ただし天牌外伝(36-)を含まない)
○江戸前の旬	97巻	(ただし「旬と大吾(3)」を含まない)
☆島耕作	96巻	(「課長(17)」、「部長(13)」、「取締役(8)」、「常務(6)」、「専務(5)」、「社長(16)」、「ヤング(8)」、「係長(4)」、「会長(10-)」、「学生(6)」、「就活(3)」)
○名探偵コナン	95巻
☆コータローまかりとおる	94巻	(「コータローまかりとおる(59)」「新コータローまかりとおる 柔道編(27)」「コータローまかりとおる L(8-?)」)
△☆MAJOR	94巻	(「MAJOR(78)」、「2nd(16-)」)
○ONE PIECE	92巻
☆ドクターK	87巻	(「スーパー(44)」、「Doctor K(10)」、K2(33-))
☆浦安鉄筋家族	85巻	(「浦安鉄筋家族(31)」、「元祖(28)」、「毎度(24)」、「あっぱれ(2-)」)
 ----------------------------------81巻の壁------------------------------------------
☆タフ	81巻	(完)	(「高校鉄拳伝タフ(42)」、「TOUGH(39)」を含み、「龍を継ぐ男(12-)」を含まない)
○なんと孫六	81巻	(完)
○山口六平太	81巻	(完)
☆鉄拳チンミ	80巻	(「鉄拳チンミ(35)」、「新鉄拳チンミ(20)」、「Legends(25-)」を含み、外伝(4)を含まない)
☆白竜	78巻	(「白竜(21)、「LEGEND(46)」、「HADOU(11-)」
○ゼロ	78巻	(完)
☆釣りキチ三平	77巻	(完)(「釣りキチ三平(65)」、「平成版(12)」)
○ふたりエッチ	77巻
○いのちの器	77巻
○銀魂	76巻
☆DEAR BOYS	76巻	(「DEAR BOYS(23)」、「ACT2(30)」、「ACT3(23)、を含み「OVER TIME(3)」を含まない)
○まるごし刑事	75巻	(完)
○BLEACH	74巻	(完)
○風の大地	73巻
☆かっとび一斗	72巻	(完)(「かっとび一斗(46)」、「風飛び一斗(26)」)
○NARUTO	72巻	(完)
☆味いちもんめ	72巻	(「味いちもんめ(33)」、「新(21)」、「独立編(10)」、「にっぽん食紀行(6)」、「世界の中の和食(2)」)
☆男塾	71巻	(「魁(34)」、「暁(25)」、「極(7)」、「真(5-)」)
○DREAMS	71巻	(完)

次回用メモ

  • カイジシリーズ(68)黙示13、破戒13、堕天13、和也10、ワンポーカー16、24億3-
  • テニプリシリーズ(67)42、新25
  • 夕焼けの詩(65)
  • 乱太郎(64)
  • 王家の紋章(64)
  • かりあげ君(62)

超人ロックこちらid:soorceさんによりカウントされた93巻以降、風の抱擁が(3)+4、ホリーサークルが(1)+2、刻の子供達が+3、ラフラールが+4、ドラゴンズブラッドが+4、鑑の檻が+3、ガイアの牙が+2。または、こちら参照
シティハンターシリーズはシーケンシャルな物語でないので、集計から除外。

いわゆる一つのBIOSパスワード問題

BIOSパスワードという今更な技術があって、これは主に2種類の役割を担っている。

1つはBIOS(またはUEFI)の設定変更を特定の人物もしくは組織に限定する役割だ。BIOS設定なんて下手にいじられたら、起動しないなんて当たり前で、トラブルのもとになるのでこの用途で設定するのはわからなくはない。まあ、BIOSいじろうなんて奴は、BIOS設定の初期化なんて簡単にやってしまうだろうから、あくまで初心者や非技術者に余計なことをさせないための機能だろう。

もう1つはPCの起動を特定の人物もしくは組織に限定する役割だ。パスワード入力までOSに制御を渡さない役割。これがさっぱりわからないのだ。PCからデータを盗み出すなら、BIOSを通さず、HDDにダイレクトアクセスすればよいのだし、PCの操作権はOSの認証機能に任せればいいだろう。強いて言うのであれば、HDDへのアクセスが困難でかつBIOS設定のクリアが困難なPCやサーバであれば意味があるかもしれない。

いずれにせよセキュリティとしてはほとんど意味をなしていないBIOSパスワードであるが、いまだに多くの企業でセキュリティ対策として使用されていたりする。ここで、非常に困るのが「BIOSパスワードのセットアップはどうやっても自動化できない」ということだ。

OSが起動していないので、自動化しようがない。企業で大量にPCをセットアップするのは、かなりの部分で自動化可能なのだけれども、BIOSパスワードだけはどうにもならないのだ。

バーコードスキャナという機器がある。読んで字のごとし、バーコードを読み取ってコンピュータに読み取った値を渡してくれる機器だ。大抵のバーコードスキャナには、キーボード入力モードがある。読み取った値を「キーボード入力」に置き換えてくれるモードだ。

たとえば、1234567890123というバーコードを読み取ったバーコードスキャナは、コンピュータに1234567890123というキーボード入力を与えてくれる。そしてバーコードスキャナは一般的にUSB接続なので、USBによるキーボード入力を受け付けるコンピュータは、バーコードスキャナによるバーコードスキャンで、キーボード入力を代行させることができる。

CODE128というバーコードがある。英数字が扱えるバーコードなので、BIOSパスワードに使用可能な文字は大体網羅できるはずである。
BIOSパスワード設定は「バーコードスキャナ」で「CODE128化したBIOSパスワード」を読み取ることで簡易化することができるかもしれないという誰が得するかさっぱりわからないお話でした。