UA でブロックするのは仕方ないと思うの
こんな記事見かけました
https://qiita.com/NumLocker/items/61da0ce5bc65cbb3c7ff

UserAgent が Vivaldi なら動かないようにしてたサービスがあったそうです
私自身 Chrome と Vivaldi の両方を使っていてブログ関係のサービスは Vivaldi で使ってます
ですが ウェブページを作る側からするとこれは仕方ないものだと思ってます

ちゃんとしたサービスほどちゃんとサポートブラウザが決められていてそれで動くように確認してます
だいたいは IE と Chrome あたりでしょう
そこにマイナーは Vivaldi とかまで入れるのはコストのほうが大きいので普通はサポートしないです
しないなら何もしなければいいのですが 変に見えてしまう以上 動きがおかしかったらブラウザじゃなくウェブページ側にバグってるよって報告されるわけです
その原因がブラウザで サポート外のブラウザだからだとしてもユーザはまずウェブページの問題と思うでしょう
それなら最初からサポートしてませんって表示してしまうのが楽です

それでも見たい場合 UserAgent を偽装すればいいだけですし わざわざ偽装してるくらいなのでちゃんと動かなくても自分が無理やり見てるせいですよーと思ってもらえます

Vivaldi なら中身 Chrome だからそう動かないことなんて無いと思うかもですが出た当初はひどいものでした
今は devtools とかを除けば割と安定してると思いますが 昔は画面崩れるとか JavaScript が一部動かないしとか問題ばかりでした
JavaScript が動かないというよりもブラウザの挙動のほうが優先されて一部の操作を受け付けないみたいな感じだったかも
あと URL バーあたりもなにかあったような

まあ Google のテキストボックスがずれるのはただの嫌がらせだと思いますけどね
Youtube で空 div を出してパフォーマンス落ちるようにしたとかいう話もありますし
そういえば Firefox でだけ Google Maps がおかしなことになるのもあったっけ
HTML のクリックした単語を取得って難しい
クリックした単語を取得しようと思ったのですが思いの外難しいです
ここでは英単語のようにスペース区切りだけを扱って日本語を形態素解析してーとかいう話は無しです

まずクリックした場所の文字を判定する方法
単語ごとに span タグでわかれていないと長い p タグの中からどうやって判定するんだろう?
というところですが これは document.getSelection() を使えば Node とクリックした場所の offset が取得できるので簡単です

困るのはタグが挟まってる場合です
単語の途中で一部だけを色を付けたいとかそういう用途で単語の途中でタグが入る場合があります
タグの前後にスペースがないならつながった文字とみなせば良さそうですが div の場合は改行なのでスペースがなくても区切るべきです
しかし これは div に限ったものではありません
HTML の表示は CSS で変えれるので span でも改行してるかもしれませんし タグが挟まるとつなげてよいかの判断が難しいです

自分で用意した HTML のみが対象ならやりようはありますが任意の HTML でやろうとすると結構難しいです
特殊な場合は扱わないと割り切って タグ内だけで判定したり デフォルトが inline のタグかつ前後にスペースない場合のみ結合した上で判定するくらいがいいのかもしれませんね
Node.js だとリクエストの処理強制終了がめんどう
リクエストごとにプロセスが存在して独立してるよりも 全リクエストを 1 つのプログラム中の処理として処理できる Node.js のほうが好きですが リクエストの処理を強制終了するのが難しめです
個別のプロセスならそれを kill するだけのシンプルな作りで済みます
それも基本は自分で制御することはなくて タイムアウトだけ指定しておけば Web サーバがやってくれることがほとんどです

Node.js だと Web サーバ自体をコード書いて作るから タイムアウトの処理も自分で書くことになります
と言ってもレスポンスとしてエラーを返すだけなら簡単です
ただ それだとレスポンスはエラーと返しつつも処理は続行されていて見えないところでリクエストの処理が完了してることもあります
ユーザにはエラーが返ってるけど内部では処理が続いていて完了してるのが困るという場合は処理自体もキャンセルが必要です

Node.js の処理的にはコールバック関数を実行してるだけなので プロセスの kill のように そこから始まる処理のツリーを全部停止みたいな便利なことはできません
できることはキャンセルフラグを用意して 処理の合間に確認してキャンセルならそこまでの処理をキャンセルする処理をして残りの処理はやらないくらいです
これでも十分面倒です

プロセス kill でも途中で終わるだけで戻す処理はなくて完璧ではないので単に以降を処理しないだけでいいかもしれません
DB のトランザクションでもない ファイルの書き込みや削除だけなら途中までの状態で終わります
ファイルを削除して新しいファイル作るという処理で削除だけで終わってるとかありえますからね

それに POST のロード中にブラウザのキャンセルボタン押してもキャンセルしたことは サーバでわからないので画面ではキャンセルされたけど実際には登録済みなんて普通にあるので プロセス kill みたいなことは無理という扱いで無視してもいい気もします
やらなくて良い処理をやってるのでちょっと重くなるかも程度ですし
Chainer 終わったみたい
https://preferred.jp/ja/news/pr20191205/

ネットのニュースで上位にあったから軽く読んでみて 「ある会社が chainer から pytorch に移っただけでなんでそんなに話題なんだろう?」 と理解できなかったので はてぶとかのコメントを見てたら chainer 終了というのがいくつか
それで調べてみたらこの preferred networks って会社は chainer 作ってるところだったんですね……

Chainer のアナウンスでも v7 が最後のメジャーリリースになってました
https://chainer.org/announcement/2019/12/05/released-v7-ja.html

ディープラーニングとか機械学習系って個人でやってみてもあんまり楽しいものでもないので ほぼ使ってないのですが一時的に機械学習系を使っみたことがありました
そのときは使ったのが Chainer でした

そのころ話題のディープラーニングフレームワークはだいたいこの 4 つでした

◯ TensorFlow
◯ Keras
◯ Chainer
◯ PyTorch

他にも MXNet とか Theano とか色々ありましたが プログラミング言語や Web フレームワークでもマイナーどころを探せばいっぱいありますが特別理由でもないとあえてそれらを使う必要はないので ここでもこの 4 つから選びました

Keras は他とはちょっと違って TensorFlow などのラッパーで それらを簡単で扱いやすくしてくれる初心者向けみたいでした
なので最初だしとこれでいいかと思ったのですが 思いの外情報がなくて ネットでも Chainer 使ってみたとか TensorFlow 使ってみたとかで Keras はあまりみませんでした
なので優先度を下げてほかを見ると Chainer と PyTorch は似ていて PyTorch は Chainer の一部をフォークしたものだそうです
TensorFlow か Chainer 系で考えると TensorFlow はサンプルを見てみてもよくわからなかったので Chainer か PyTorch にしました

PyTorch のほうが新しいし こっちに移ってる人も多いらしく PyTorch を考えていたのですが Chainer は日本製のようです
前提知識と基本用語がわかってるなら英語でもいいけど それらがないならやっぱり日本語のほうがいいかなーと Chainer にしました
ただいざ使おうと公式サイトやドキュメントを見ても英語です
日本製どこいった……とか思いながらもう少し探しても日本語での情報はあまり見つけれませんでした
一応日本語版ドキュメントもあったと思いますが 古いバージョンかつ完全なものではなく 海外製で日本語でもそこそこ使われてる OSS と同じようなレベルです

これなら やっぱ PyTorch でいいかなぁと思ってもう少し調べていたら Chainer は numpy で使えますが PyTorch は独自の型でした
そのあたりが Chainer のほうがわかりやすかったので Chainer にしました
numpy は機械学習によらず使える便利なライブラリで少しは知っていたので全く新しい PyTorch のより楽かなってところです

そんなわけで使ってみた Chainer ですが ネットに落ちてるサンプルのネットワークを使ったりちょっとコード変えてみたりくらいで 結局使ったことで何かの役に立ったわけでもないです
ちょっとは知識がついたのでいつか必要になったときには Chainer でいいかなくらいに考えてはいたのですが 使う機会もなく終了してしまいました
less は gzip ファイルも見れた
めったに見ないけど消すわけにもいかないテキストファイルがそこそこなファイルサイズをとってたので gzip しとこうかなーと考えてました
ただ圧縮するとみるとき不便なのが困るところです

gzip を less で見るならまず展開必要なのでこういうの?

zcat file.gz | less

zless とかないのかなって調べてみると普通にありました

さっそく試してみようと zless を使ったはずが……癖で z なしの less コマンドで開いてしまいました
なのに見えてます!
間違って普通のテキストファイル開いたのかなって確認しましたが gzip のファイルでした
less は gzip されていても自動で展開してくれるみたいですね

なら cat は? と思って試したら cat は gzip だとバイナリが表示されました
zcat が必要みたいです

less はユーザが見るために限られるのでバイナリ開くメリットないですが cat は結合や別のコマンドの標準出力に送るために使うから勝手に展開はしないんだと思います
tailwindcss 便利かも
https://tailwindcss.com/

ちょっとした align とか margin/padding とか flex の方向とか
lit-html や hyperhtml で HTML 中に styleMap とか使って直接書こうかなって思うくらいなのも多いし入れとくと便利なのかも
ただこういうのって事前に大量のスタイル定義されるから重そうなのが気になるところ

ちゃんと見てないけど JavaScript でビルドとかあるし 使ってないのは含めないみたいな機能あるのかな
あればすごく良さそうなんだけど
でも JavaScript で文字列結合などからも追加できるから使ってるかを静的に判断するのってかなり難しそうだし無いかな
ライブドアブログのカレンダーが
カレンダーがタグの input より z-index 小さくて裏側にいる
そのせいで一部隠れて日付が選べない場所がある
最近変更多いけど 何もしないでくれるのが一番なんだけど……

これに限らず カレンダーとか input 系って極力ブラウザデフォルトを使ってほしい
こういう問題が起きないのもそうだし 独自のってだいたい使いづらい
特に初めて使うとき

ブラウザデフォルトは基本のものだし多くのところで使われてる
多少使いづらくたって そのブラウザや OS を使ってる人からすれば一番慣れてるもの
細かな使い勝手よりも慣れが一番強いと思う

あとタブレットを使うとき
スマホ表示じゃなくて PC 表示にすることが多い
それでも入力はタッチなんだから入力操作は PC じゃなくてスマホと一緒にしてほしいと思うはず
こういうときライブラリじゃなくてブラウザデフォルト使ってるのが有利だと思う