最近なんとなく Windows の調子が悪くて気になったのでイベントビューアーを見てみたんですが、やたら荒れてたので重い腰を上げて対処した日記です。
続きを読むGHUB のアップデートをしたらキーボード・マウスの入力が効かなくなった
一昨日深夜に踏み抜いて睡眠時間ゴリゴリに削れました。なんかまたありそうな気もするので備忘録として。おま環の可能性はそこそこあります。 ちなみに今回のケースは予備のキーマウを使っても入力が効かないケースです。
結論から述べると CMOS クリアしたら直りました。多分 HID フィルタドライバ周りがぶっ壊れたんじゃないかと思うけど専門じゃないのでよくわかりません。
以下は色々試行錯誤しているときのログです。
GHUB アップデート -> マウス( Logicool 製)は動くがキーボードの入力がきかないことに気付いたので一旦再起動する。今思うとその前に色々動作検証するべきだった。
再起動するも入力が効かず、なんならマウスの入力も効かない。デバイスに通電はしているし、なんならログイン画面には行くのでキーボードが刺さっていること自体は認識されている。この時点でキーボード・マウス以外の USB 接続などは全て切ったが、特に変わりなし。
予備のキーボード・マウスを指してみるも同じ状態。多分意味ないやろなと思いつつも一旦放電。案の定意味はなく同じ状況。
兎にも角にもキーボード効いてくれないと UEFI 画面にもいけないねんな〜と思っていたけど、そういえば CMOS クリアしたら初回ボーナスで行けた気がするなと思い、一旦 CMOS クリア。起動時に Press F1 の画面が出て、ちゃんと F1 の入力が効いてくれて良さそうな感じ。
UEFI 画面ではキーボードはちゃんと効くも、マウス( Logicool 製) が効かない。一旦予備のマウス( Razer 製)にしたら普通に動いた。やっぱお前のせいじゃね?という気分になってくる。原因切り分けのために一旦この状態で普通に起動してみて様子を見る。
再起動後普通にキーボードもマウスも入力が効く。 Logicool 製のやつに戻してもちゃんと動いた。なんだったんだ。
これで直るってことは USB 周りの設定リセットで再検出されたりしてうまく行った?入力だけが効かないってことは HID フィルタドライバとかそのへんが関連しそうだけどわからないな〜。
正規表現の \1 と (?1) は違う
なんかあんまりここの違い解説している日本語記事無い気がするな〜と思ったので。
まず大前提としてどちらもキャプチャグループと一緒に使用されるもので、キャプチャグループがあった時にそれを正規表現内で再参照するというような仕組みです。ただその参照の仕方が \1 系と (?1) 系で違うよという話です。
\1 系はバックリファレンス(backreferences)と呼ばれていて、指定したキャプチャグループと同じ"文字列"にマッチします。
例えば (.)\1 は aa にはマッチするけど、 ab にはマッチしないよ、という構文。
一方で (?1) 系は再帰的サブパターン(recursive subpatterns)と呼ばれていて*1、指定したキャプチャグループと同じ"パターン"にマッチします。つまるところ (.)(?1) の場合、キャプチャグループ内の同じパターンを参照しているので aa にも ab にもマッチしてくれるよという代物です。
これを見ると基本的には再帰的サブパターンを使えばよさそうに見えてしまうのですが、これにも色々落とし穴はあって、たとえば <a><span>text</span></a> みたいな同名タグの入れ子を検証したいときに、うっかり /(?<NODE>(?&NODE)|<(?<TAG>[A-Za-z][A-Za-z0-9-]*)>(?:[^<]+|(?&NODE))*<\/\k<TAG>>)/x のように左再帰にしてしまうと入力を消費せず自己再帰することになり無限再帰に陥ってしまったりしますし、そもそも再帰的サブパターンは JavaScript などには無い*2ので移植する際などには注意が必要だったりします。
*1:PHPドキュメントだとそう書かれている: PHP: Subpatterns - Manual
*2:バックリファレンスはある: Backreference: \1, \2 - JavaScript | MDN
next-auth の signin callback では false を返さないようにしよう
この前に引き続き next-auth 話題です。認証周りは無限に話題がありますからね。 なお今回も next-auth v4 を例にして説明を行いますが、これはこの記事を書いた時点で最新の auth.js でも同じような実装になっているため、その環境でも意識できるとよいかな〜と思います。
続きを読むアウトプットができない若者
私のことです。ギリギリ若者と言えないぐらいの歳になってしまった気がしますが、諸先輩方のために若者と言い張ることにしています。
ここでいうアウトプットとは主に「不特定多数に対する発信」に関することです。例えばブログを書くのもそうだし、イベントで登壇するのとかもそう。まあでもこの記事では主にブログに関することですかね。
自分はアウトプットがとにかく苦手で、弊社におけるアウトプット関連の評価値も最低クラスの人間なのですが、そろそろ避けて通るのも限界が来たな…という出来事があったので、何故ここまでアウトプットに対する忌避感があるのかを自己分析したものになります。「わかる…」とか「こんなこと考えてる人類いるのかよギャハハ」ぐらいの気持ちで見ていってください。
続きを読む