GHUB のアップデートをしたらキーボード・マウスの入力が効かなくなった

一昨日深夜に踏み抜いて睡眠時間ゴリゴリに削れました。なんかまたありそうな気もするので備忘録として。おま環の可能性はそこそこあります。 ちなみに今回のケースは予備のキーマウを使っても入力が効かないケースです。

結論から述べると CMOS クリアしたら直りました。多分 HID フィルタドライバ周りがぶっ壊れたんじゃないかと思うけど専門じゃないのでよくわかりません。

以下は色々試行錯誤しているときのログです。

GHUB アップデート -> マウス( Logicool 製)は動くがキーボードの入力がきかないことに気付いたので一旦再起動する。今思うとその前に色々動作検証するべきだった。

再起動するも入力が効かず、なんならマウスの入力も効かない。デバイスに通電はしているし、なんならログイン画面には行くのでキーボードが刺さっていること自体は認識されている。この時点でキーボード・マウス以外の USB 接続などは全て切ったが、特に変わりなし。

予備のキーボード・マウスを指してみるも同じ状態。多分意味ないやろなと思いつつも一旦放電。案の定意味はなく同じ状況。

兎にも角にもキーボード効いてくれないと UEFI 画面にもいけないねんな〜と思っていたけど、そういえば CMOS クリアしたら初回ボーナスで行けた気がするなと思い、一旦 CMOS クリア。起動時に Press F1 の画面が出て、ちゃんと F1 の入力が効いてくれて良さそうな感じ。

UEFI 画面ではキーボードはちゃんと効くも、マウス( Logicool 製) が効かない。一旦予備のマウス( Razer 製)にしたら普通に動いた。やっぱお前のせいじゃね?という気分になってくる。原因切り分けのために一旦この状態で普通に起動してみて様子を見る。

再起動後普通にキーボードもマウスも入力が効く。 Logicool 製のやつに戻してもちゃんと動いた。なんだったんだ。

これで直るってことは USB 周りの設定リセットで再検出されたりしてうまく行った?入力だけが効かないってことは HID フィルタドライバとかそのへんが関連しそうだけどわからないな〜。

正規表現の \1 と (?1) は違う

なんかあんまりここの違い解説している日本語記事無い気がするな〜と思ったので。

まず大前提としてどちらもキャプチャグループと一緒に使用されるもので、キャプチャグループがあった時にそれを正規表現内で再参照するというような仕組みです。ただその参照の仕方が \1 系と (?1) 系で違うよという話です。

\1 系はバックリファレンス(backreferences)と呼ばれていて、指定したキャプチャグループと同じ"文字列"にマッチします。 例えば (.)\1aa にはマッチするけど、 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 でも同じような実装になっているため、その環境でも意識できるとよいかな〜と思います。

続きを読む

アウトプットができない若者

私のことです。ギリギリ若者と言えないぐらいの歳になってしまった気がしますが、諸先輩方のために若者と言い張ることにしています。

ここでいうアウトプットとは主に「不特定多数に対する発信」に関することです。例えばブログを書くのもそうだし、イベントで登壇するのとかもそう。まあでもこの記事では主にブログに関することですかね。

自分はアウトプットがとにかく苦手で、弊社におけるアウトプット関連の評価値も最低クラスの人間なのですが、そろそろ避けて通るのも限界が来たな…という出来事があったので、何故ここまでアウトプットに対する忌避感があるのかを自己分析したものになります。「わかる…」とか「こんなこと考えてる人類いるのかよギャハハ」ぐらいの気持ちで見ていってください。

続きを読む

SAML クレームで出現する http://schemas.xmlsoap.org/ws/2005/05/identity/claims/ とは何者なのか

SAML 周りを触っていると下記の記事でも出現した http://schemas.xmlsoap.org/ws/2005/05/identity/claims/ というやつをよく見ます。これは一体なんなのでしょうか。

lunastera.hatenablog.com

続きを読む

next-auth + BoxyHQSAMLProvider で属性マッピングしてないのに id や email が取れることがある

というお話。

なおどちらも既に名前が変わっており、 next-auth は Auth.js だし、 BoxyHQ SAML は Ory Polis なのですが、自分が使ってるのはこの名前になる前のバージョンなので、一旦この記事ではタイトルどおりの呼び方とさせてください。

続きを読む

グラボを交換したら定期的に爆音でファンが回るようになった

RTX 5070 を安く手に入れたので、試しに交換してみたのですが、それ以降、数分おきにファンが10秒ほど突然フル回転するようになってしまいました。
結果的に原因は解決できたので、そのときの対処法を備忘録としてここにまとめておきます。

利用したグラボ: ZOTAC RTX 5070 SOLID OC Specs | TechPowerUp GPU Database

結論から書くと、サポートステー(グラボ固定するやつ)がファンに触れていて、その触れているファンだけ回転しなかったことにより、他の2つのファンがフル回転してた、という感じでした。上記のグラボを見ていただくと、少し分かりづらいんですが、意外と下(ファン)側から固定する際にステーをセットする隙間がなく、かつファンが思ったよりむき出し(あまり中に埋まっておらず、接触しやすい)感じなのでファンが干渉しがちになっています。
そのためステーをグラボ付属の小さいものに変えて、ファンに当たらないよう位置を調整したらフル回転しなくなりました。

以下は原因特定までに至った経緯です。

続きを読む