/ 最近 .rdf 追記 設定 本棚

脳log[2025-03-21~]



2025年03月21日 (金)

最終更新: 2025-04-04T01:03+0900

[BAD BOY] 自転車が9速から10速になった。

時系列

  1. シフトが気持ち良くない。アップもダウンも。
  2. 前回リアディレイラーを歪めてしまったときは9速の DEORE (シャドータイプ) がもう手に入らなくなっていて間に合わせのものに交換したけど、やっぱりアウターワイヤーの走行が直線的で総延長も短くなるシャドータイプが良い。
  3. 現行のパーツを調べた。
  4. MTB 系統なら CUES か DEORE がちょうど良さそう。
  5. CUES なら 9/10/11 速、DEORE なら 10/11 速のパーツがある。
  6. MTB 系の11速までは LINKGLIDE という名前の下にギアの枚数によらずいろいろ共通化されてるぽい。ただし、DEORE の10速には2種類あり LINKGLIDE でないものがあるし、SAINT の10速は LINKGLIDE ではない。
  7. 仮に CUES の9速にするとしてもチェーンを11速規格のものに交換する必要があるらしい。同じ9速でチェーンが交換になるのは CUES/LINKGLIDE がギアの枚数によらず11速のチェーンで共通化されているからだ。かつての互換性のない10速化11速化時代よりずっとリーズナブルな状況ではあるが、おかげで旧来の9速が消えた。
  8. ところで CUES のリアディレイラーはロー側の対応が 36T から 39T までと書かれている(9/10速の場合)。11速なら 48T から 50T までとか。
  9. よくわからないんだけど、たとえばリアディレイラーが 11T (トップ側) から 48T (ロー側) までに対応しているというなら、50T のギアに対してはディレイラーの移動量が足りなくて大きすぎるギアに横からぶつかってしまうのかなと思うし、逆にスプロケットのロー側最大が 28T ならギアが小さい分には距離が詰められなくて多少変速性能に影響するかもしれないけど問題なく使用できるんだろうなと判断する。だけどディレイラーのスペックでトップ側が 11T (最小) から 11T (最大)まで、ロー側が 36T (最小) から 39T (最大) まで対応と書かれていると、どう読んでいいのかわからない。39T 以下ならなんでもええんちゃうの? 36T より小さい 28T はあかんの?
  10. それで気がついたんだけど、MTB 系のスプロケットはどれもこれもワイドレシオなのだ。ロー側がとても大きい。自分が今使っているのが 11-28T (9速) なんだけど、同じ9速のスプロケットのラインアップが 11-36T、11-41T、11-46T となっている。ギアの枚数が同じでレンジが広いなら隣り合うギアの歯数差が大きいということで、つながりが悪くなる。
  11. どうせ全取っ替えなら10速、11速にしてギアの枚数が1枚2枚増えるのも選択肢に入るんだけど、増えたのが使いもしない 46T、50T みたいな大きすぎるギアなら、それはただの重しなんです。山なんか登らないし平坦な1号線沿いが主なのでレンジは 11-28T (歯数差 17) で十分に足りている。
  12. 幸いなことに今使っているホイールのフリーボディはありふれた HGスプラインM っぽいので、MTB 系下位だけでなくロード系の下位とも互換性がある。
  13. ディレイラーの対応幅とスプロケットのレンジに注目するなら Tiagra (10速) が良さそう。しかしリアディレイラーがシャドータイプではない。フラットバー対応のシフターがあるが、ギアポジションインジケーターがいらない。
  14. グラベルというカテゴリに GRX というシリーズがある。これは10/11/12 速に対応している。12速はロード規格なのでスプロケットが手持ちのホイールに付かない。10/11速が MTB 互換(HGスプラインM)。10速が手頃なお値段でシャドーRD+だ。ロー側対応が 32T から 36T で、28T でもまあまあ大丈夫だろう(結局ロー側最小は無視することにした)。フロントの変速はしないからキャパシティが過剰でケージが長すぎるけど目をつぶろう。しかしラピッドファイヤーのシフターがない。
  15. ロード系でフラットバーに対応したシフターは Tiagra のものしかないのだろうか。今使っている SLX のシフターにはフタが2種類付いていて、ギアポジションインジケータがありかなしか選べたんだけど、Tiagra のシフターにはかならずインジケーターが付いているのだろうか。ハンドルがごちゃつくのも、ちゃちなパーツでごちゃつくのも嫌なんだ。
  16. たまたま見かけたダイアコンペ ENE サムシフター (6/7/8/9/10速対応) がアナログで面倒くさくないんじゃないか。

という経過をたどって4つのパーツが選ばれた。

  • シマノ リアディレイラー RD-RX400 10S ¥6596
  • シマノ カセットスプロケット CS-HG500 10S 12-28T ¥3300
  • シマノ チェーン CN-HG54 10S HG-X対応 ¥2364
  • ダイアコンペ ENE サムシフター SL/BK 右のみ ¥7766
  • (おまけ) アルミプーリー 13T 2個セット ¥1542

シフターは右用と書かれているけど、ハンドルの右側の上方に取り付けるつもりはなくて、左側の下方に取り付けた。そうするとラピッドファイヤーのときと同じ位置にレバーが来る。ただし左右は逆になる。左手は後ろブレーキのみ担当でシフトはなし、ブレーキとしても主力ではなくグリップも握らず遊びがちだったので、これからはリヤシフトを担当してもらう。レバーは6時の方向にあるときがトップで、ローはだいたい10時の位置。検索で上位に来るブログを読んで不安に思っていたのだけど、ワイヤーを巻き取りすぎてチェーンがスプロケから外れてしまうことはない。リアディレイラーに H/L と刻印された2つのネジがあり(以前はプラスねじだったと思ったけど、今回は星形の T8 だった)、移動限界を調整しておけばよい。3つ目のネジは B テンションアジャストボルトであり、ガイドプーリーをスプロケットに近づけてチェーンの横方向のガタが変速に及ぼす悪影響を小さくするものなので、この機会に適度に近づけておく。シフトに話を戻すと、ローギア10時は親指で押すにはかなり遠いが届かなくはない(回転軸がハンドルバーより奥にあるので余計に遠い)。人差し指で手前に押すのにはちょうどいい。だが8時の位置で人差し指が届かなくなる。そこからのシフトアップが難しい。親指の背中で少し手前に押してやると親指の指先でトップまで操作できる。人差し指から親指へのリレーがスムーズではない。停止するときはだいたい3つか4つシフトダウンするので、発進するときはカチカチ、カチと3つシフトアップしていた。カチカチではなくなったのでちょっともたつく。でもまあ楽し。


シマノの日本語のページに情報がなかったから候補から漏れてしまったけど、リアディレイラーに11速の古い105(RD-R7000-SS)を使えばスプロケの値段が倍になる程度の差で一式を11速に揃えるチャンスだった。LINKGLIDE 互換の11速だから今のホイールに取り付けられるし今後のパーツ供給に不安もない。GRX と違いショートケージでコンパクトなものも選べる。Tiagra の状態を見ると LINKGLIDE でない10速は9速に続いて消える運命にあるように思えるのだよね。今現在一式新しく揃えるようなものではなかったのではないかと考えてしまう。


2025年03月20日 (木) 一気に 80 くらいバージョンアップした Firefox (136.0.1) でポップアップブロックを有効にしていると、ちょいちょい自分がクリックして開こうとしたページがブロックされる。たぶんだけどタイミングが関係してる。ページを読みながら、次に読もうと思ったリンクの上でマウスボタンを押し下げ、読み終わったタイミングでボタンを放す。ブロックされる。そんなブロックは無効にするしかないねえ。


2025年03月15日 (土) [AtCoder] 今日はオムロンプログラミングコンテスト2025(ABC397)があった。■A 問題 Thermometer。2番目の条件を else にするとタイプ数が減る。■B 問題 Ticket Gate Log。WA を出しました。愚直に現在が奇数番目か偶数番目か、1文字足すか足さないか、判定をすれば良い。WA の原因は現在が何番目かを操作前の入力に基づいて判定してしまったこと。文字を足せば偶奇が変わるでしょ。■C 問題 Variety Split Easy。Hash で左右の要素をカウントする。種類数は Hash#size で知る。■D 問題 Cubes。解けなかった。5秒かかる。数が大きくなっていくと、x と y の差が1だとしても N より大きくなるので、これを上限にして x を線形探索、y を二分探索しようとしたが、これが TLE だった。N が 10 の 18 乗以下で、x の探索範囲は 10 の 6 乗以下になるかなと思ったんだけど、実際は 577 メガだった(irb で簡単に計算できる。でもコンテスト中はまず提出しちゃう)。次に x と y の差を線形探索し、x と y を二分探索しようとした。差の探索範囲は N の3乗根以下でいいので、今度こそ 10 の 6 乗のオーダーで探索できるんだけど、そこに二分探索の log が付くと5秒かかるのだった。ところで、Ruby だから気にしてないけど、x^3 と y^3 の差が最大で 60 ビットになるというとき、x (と y)を探索するのって難しいよね。x^3 と y^3 を 64 ビットの範囲に収める方法も、収めていいかもわからない。■E 問題 Path Decomposition of a Tree。WA をいっぱい出した。最初は子を組み合わせて K をいくつか作る DP をするのだと思った。そのうちに K は1個しか作れないと気がついた。終了後に、K を作る方法は2つ以下すべての子を足し合わせるしかないとわかった。K 未満の子が3つ以上あればそれでもう満足なパスは作れない。K 未満の子が2つあってその和が K-1 でないなら、もう満足なパスは作れない。それほどに長さ K のパスを作る条件は厳しい。終了までずっと大きさ K の部分木を作ろうとしていた。パスは一本道。パスは一本道。■F 問題 Variety Split Hard。C 問題が2分割だったのに対してこれは3分割。C 問題同様に2分割しながら、右側の範囲のベストな分割を遅延セグメント木で見つけられるのではないかと考えた(終了後にね。時間内は DE にかかりきりで 550 点問題を読む時間を惜しんだ)。たとえばある値 a がいくつかあって l..r の範囲に分布しているとする。l の右側から r-1 の右側で分割するのなら、分割の左右で a を種類数 1 としてカウントできる。結果は (TLE×13/AC×32) だったから、外してはいないと思う。■D も F も TLE を解消する方法がわからない。E が得点できなかったのは考察が甘く条件を絞りきれなかったせいであり完敗。不満の漏らしようがない。■F 問題。提出 #63857023 (AC / 1949 ms)。制限時間きわっきわで AC。クラスを剥がして演算を埋め込んだ(手動インライン化)。それとセグメント木の初期化をサボらずに O(N) でやった。サボると O(NlogN) になる。全体が O(NlogN) ならサボってもオーダーは変わらないんだけど、定数倍が TLE と AC の分かれ目ならサボってはいけない。残るは D 問題。Ruby で2桁ミリセックで解けるらしいので、純粋に数学力が足りていない。■■■X 拾い読み。「ABC397 E 、K 頂点を K-1 辺で結んだ直鎖を長さ K のパスと呼んでるの違和感あるな」という意見を見かけた。真意はわからないけど、それはパスはパスでも単純パスと呼ぶのではないかという疑問なのではないかと想像した。なんでそう思うかというと、自分もちらっと単純でない(交差のある)パスが答えになることがあるか考えてみて、NK 頂点を長さ K の N 本のパスに分解するのだから、それは単純パスに違いないなとすぐに納得したからだった。単純パスだと限定しているのは文章のその部分ではなく、その他の条件の帰結としてだと思うんだよね。単純パスのことを書いているのかどうかはわからないけど(X の閉鎖性のため前後の文脈を読むことができない)、違和感は自身で解消できるのではないか。■■■精進。D 問題。5秒を2秒以下に抑えた2つのポイント。1つ目は、1から Math.cbrt(N) の範囲で線形探索する x と y の差分だけど、N の偶奇を見れば対象を半分にできる。これで 2.5 秒になる。2つ目は、コンテスト中にはついに突き止められなかった二分探索の上限。x と y の上限を低く見積もりすぎて答えが見つからないということを繰り返していた。式をよく見よう。(y+d)**3-y**3 を展開して整理すれば dyy+ddy+ddd になる。d=1 のとき y が最小になり、これが N を超えないのだから、yy+y+1<=N の範囲で解を探すことになる。N のルートが上限だった。Ruby には上限を指定しない二分探索があるんだけど、これは遅い。上限を指定することで 2.5 秒が 1.7 秒になった。提出 #63960582 (AC / 1678 ms)。2桁ミリセックには遠く及ばないけどね、ちょっとした工夫で Ruby でも十分に間に合う制約でありました。Ruby での他の人の提出を見た。自分のが一番遅い。一番短い人の提出 #63901879 を見ると3乗根の範囲で線形探索をし、上限を指定しない二分探索をしているところは自分の5秒の解答と変わらない。それが 146 ms で済んでしまう理由は、5行目の早期の判定だと思う。線形探索範囲が半分になるどころではない。x と y の差分 d で N が割り切れないならそもそも二分探索を試す必要がない。それは xxx-yyy = (x-y)(xx+yx+yy) = d(xx+yx+yy) = N と因数分解すればわかる。この因数分解はコンテスト中にやっていたけど、xx+yx+yy を解の公式で解くというはおろか、x-y = d であり、N が d で割り切れるということもわかっていなかった。自分は、頭を使って問題を解こうとしていないな。手を動かしてとにかくやってみて運良く正しい答えが出るといいなあ、という態度で問題に当たっている。悲しいことにこれは怠惰故ではなく、頭の使い方を知らないということなのです。考えてるふりしかできない。だから下手の考え~って言われるのです。


2025年03月11日 (火) でかいのからちゃちいのまで AC アダプタが並んでるのを見て、邪魔やし共通化できひんのかなって思ったときに、USB が実質的な DC コンセントなんかなと初めて気がついた。PC と全く関係がないような卓上電気製品が USB から電源を取るというと、ジョークグッズか氾濫しすぎた USB の異常進化かと思っていたけど、どこにでも USB の口があるという以外にもメリットがあってああいう形態になっていたのかな。


2025年03月08日 (土) [AtCoder] 今日は AtCoder Beginner Contest 396 があった。自分のすべての提出。E を除いて F まで解いた。F は調子がいいときなら BIT を使うだけという感じで 15 分くらいで解いても不思議はないけども、今日は1時間かけた。E 問題はとっつきが悪く、方針が決まったあとでも具体的な実装に迷う難しさがあった。■A 問題 Triple Four。手を抜くつもりで正規表現でやったが罠があった。しかしその罠にはすでにかかったことがある! /(\d+)\s+\1\s+\1\s+/ というパターンを書いた。入力末尾の改行を保存しているので3番目が入力の末尾でもマッチするのでそこは罠ではない。罠というのは入力が "11 1 1" というケース。11 の末尾1桁だけを切り出してマッチしてはいけない。提出直前に気がついてテストしてパターンの先頭に \b を足した。\b は単語境界(\w と \s、\w と \W、\s と \S の間)にマッチするパターン。■B 問題 Card Pile。スタックが使えますかという問題。■C 問題 Buy Balls。かなり難しい。貪欲法でやろうとしたけど、どうやるべきか、本当に貪欲法でいいのか、すっきり答えが見通せなかった。黒より白の数が多くなってはいけない。だから基本的に黒を取ることにし、黒を取るときに同時に白を取るかどうかというオプションを考えることにした。それでいい? 白が先になくなる場合、黒が先になくなる場合、黒が負でも白と併せて正なら取るべきか、そのとき併せるべき白は何か、処理順によって判断が変わってくることはないか、考えるだに貪欲法で大丈夫か不安が募る。よーく考えて提出して AC。10 分弱かけた。■D 問題 Minimum XOR Path。制約で難しさを出すのが定番の D 問題で愚直 DFS でもない順列総当たり O(N!) が通るのは甘々です。といって前にも1回「甘々です」と書いているので、前例がないわけではない。■F 問題 Rotated Inversions。E よりとっつきが良かったので F 問題から考えた。k=0...M につれて転倒数の変化を数えれば良い。変化はある要素が 0 に落ちるタイミングで起こる。自分は最初左にあって大きい要素の数と、右にあって小さい要素の数を使って変化量を数えようとした。答えが合わないから、左にあって小さい要素と右にあって小さい要素を使って数えてみたり、左にあって大きい要素と小さい要素と右にあって小さい要素を使って数えてみたりして、最終的に左右にあって大きい要素と小さい要素の数を使って数えて答えが合った。途中で何度か考え直していたんだけど、なかなか全体像が見えなくて答えを出すのに4つの変数が必要だとわからなかった。4変数のどれも答えを出すのに必要なんだけど、どこまで考慮すれば十分かはそれほど明らかでなく、目についた不十分な変数の組み合わせで答えを出そうとしていた。■E 問題 Min of Restricted Sum。数学問題に見えて実はグラフ問題であり、やれば答えが出る。つながっている要素間ではある要素のあるビットの 0/1 が決まれば他のすべての要素の 0/1 が決まる。0 の数と 1 の数を見て 0 にするか 1 にするかを決めればいい。どうやるか。UnionFind と BFS でやったけど、制限時間いっぱいの 2995 ms かかっていてこれは遅いらしい。時間内に Ruby で通している人たちはそれぞれ 660 ms970 ms1303 ms しかかけていない。提出が早いほど早いのには残酷な格差を見て取ってしまう。■コンテスト成績証。6問解けてないしあまり早くもなかったけど水パフォ上位で +12。前回から AtCoder がデレてきている。


2025年03月07日 (金) [AtCoder] 精進。前々回の ABC394-F「Alkane」。問題は十分に理解できていたし、E 問題に手が付けられなかった分、E 問題に費やすべき時間も使ってじっくり落ち着いて実装をし、デバッグをしていたのだけど、22時13分の提出 #63052484 が (RE×1/WA×27/AC×31)、22時34分の提出 #63061106 が (WA×28/AC×32) で時間切れになっていた。それから約2週間放置していたのは、自分は何も考え漏らしも勘違いもしていないし、十分に考えを整理してデバッグして書き直しもしたので、あれが間違いならもう何もわからないというのが理由だった。■これが今日の提出 #63061106 (AC)。2週間ぶりに自分の提出を読み直してみたら、13 行目にこんなのがあった。cs.sort_by!(&:size) cs というのは数値配列で、数値を size プロパティに基づいてソートするというのは、ほぼ何もソートしていないのに等しい。だって Bignum でなければ 32 ビット整数なら4、64 ビット整数なら8に決まっているのが数値の size だから。この間違いは過去にもやったことがある。単純に .sort と書くべきところで .sort_by と書いてしまったときに、つい選んでしまって疑問を持ちにくいのが .sort_by(&:size) なのだと思う。しょーもない間違いで貴重な得点を失ったものだ。■解法について書く。テキトーに根を選んで DFS をした。再帰関数の戻り値はアルカンの構成要素になり得る C または H の数。たとえば子がないなら自分自身を H と数えて1を返す。アルカンを構成しうる子が4つ(以上)あるなら、自分自身を C として中心に据えてアルカンを完成させて答えを更新する。アルカンを構成しうる子が1つでもあってそれが単純な H でないなら、自分自身を H として加えてアルカンを完成させて答えを更新する。アルカンを構成しうる子が3つ(以上)あるなら、自分自身を C として中心に据えてアルカンを構成しうる子であるとして親に返す。子が7つも8つもあっても選べるのは最大で4つまでなのだから、できるだけ数が大きい子を選ばないといけない。そのためのソートだったのだけど、ソートできていなかったので WA が出ていた。「アルカンを構成しうる子」というワードについて。実はすべての子がアルカンを構成する(その子を H とみなす)。最初に実装を始めたときには明らかでなかったので思わず条件があるみたいに書いてしまっただけ。


2025年03月05日 (水) [Win11] 以前にパラメータ付きのショートカットファイルへの変更が黙って捨てられると書いた>20240103。それは今もう直ってるのか知らないけど、今日またひとつ。ショートカットを集めたフォルダに「未読.lnk」という名前を付けている。.lnk で終わるファイルはショートカットファイルだけど、これはフォルダの名前。このフォルダへのショートカットを右クリックや Alt+ドロップで作ることはできるんだけど、プロパティダイアログを一度開くと「ショートカットへのショートカットは作成できません。」というメッセージが出て閉じられなくなる。またショートカットのプロパティシートなんですよ。■[Win11] 環境変数 PATHEXT を見ると .exe .exe .bat に加えて .wsf も拡張子リストに入ってるんだけど、スタートメニュー検索は *.wsf が実行可能ファイルだと認識できなくて勝手に検索結果から除外して見つけられない。フォルダへのショートカットに explorer.exe を付加するのと同じように、wscript.exe なり cscript.exe を付加して教えてやらないといけない。タスクバーの仕様といい、ファイルではなくアプリケーション……でもないアプリにフォーカスする姿勢は一貫しているけども、一貫して役立たずなのよな。スタート(起点)は実行可能ファイルだけではないし、実行可能ファイルをもれなく見つけることさえできていない。スクリプトがやっといじれるだけのインターンに再実装させた結果がこのスタートメニューだと思ってる。低機能で不完全で Windows の他の部分や Windows の過去と統合されておらず、ろくに機能していない。■[Win11] スタートメニューの検索。インデックスが数十万になるとエクスプローラーと設定のいくつかがフリーズして役立たずになるので対象を大いに絞らなければいけない。スタートメニューとお気に入りとその他少しだけがインデックスされるようにして、スタートメニューフォルダとお気に入りフォルダにプログラムとファイルへのショートカットを集約することにした。提案なんですけど、スタートメニューとお気に入りを最初からスタートメニューで一覧できるようにすれば、検索せずに選ぶだけでいいから人間の記憶とタイピングに頼らなくてもいいと思うんですけど、いかがですか(Windows Vista のスタートメニューはどちらも一覧できるし検索もできていた)。コマンドをタイプしないと始まらない CUI に対する GUI の優位性って、できるアクションがメニューバーで一覧できるところを数えることができると思うんですが、その優位を捨てるんですか。さておき、さっき書いたように除外されるショートカットに手を加える必要があるし、インデックスがあるファイルであっても接尾辞で検索できなかったりするのが不満。PC 内のファイルを満足に見つけられないのにすぐに Web を検索したがるのを止められないのも不満。検索結果を右クリックしてもプログラムを選んで開くことができないのも不満。だからファイルの場所を開いてから右クリックするひと手間が増える。■[Win11] ClockLauncher2 というありがたいソフトを使わせてもらいながら、タスクバーにクイック起動とフォルダツールバーが再実装されるのを待っている。タスクバーにピン留めしたエクスプローラーを右クリック(もしくは Win+Alt+数字)して表示されるクイックアクセスで代用しようとしたけど、クイックアクセスにはフォルダしかピン留めできないのが起点として弱い。探しても答えがないことがあるというのも、どこから始めれば答えが見つかるか予め考えてしまうのも、起点として弱い。すべてスタートメニューが悪い。ところで、ユーザーフォルダの開き方に2種類あるのを知っていますか。アドレスに「PC>C:>Users>UserName>」と表示される場合と「UserName>」とだけ表示される場合。エクスプローラーが気がつくとすぐにユーザーフォルダ(UserName)をルートにしてしまう。自分が知っている一番古い Windows 98 の頃からデスクトップという仮想フォルダをルートにしたがるのがエクスプローラーの伝統だけど、デスクトップからユーザーフォルダへ上がれないのも、ユーザーフォルダから Users フォルダへ上がれないのも、単純に不便なんだ。プログラムであるかその他のファイルやディレクトリであるかを区別せず、ファイルシステム上の実体にしか興味がないのに、区別して除外したりないものをあるように見せかけたりあるものを隠したりして、スタートメニューもエクスプローラーも役立たずになる。でもごみ箱フォルダだけは便利だよ。■[Win11] お気に入りフォルダって Edge のお気に入りではないんだね。その他の各種ユーザーフォルダと同様の特別扱いを受けているみたいだけど、今や使い道が不明。Internet Explorer を使おうとしても Edge の Internet Explorer モードに案内されるだけなので、まじで不明。100 ちかく一気にバージョンアップした Firefox でアドオンとテーマを再構成したり、バージョンアップでできなくなったことの代替手段を探したり、タッチ操作への最適化を about:config や userChrome.css で無効化したりしているときに気がついてしまったんだけど、ほとんどのことが Microsoft Edge では最初からいい具合になっている。Edge がまったく悪くないから、スタートメニュー検索のために Edge のお気に入りが汚染されることがなかったのは良かった。Firefox 136 はこの日記をリーダービューで読ませてくれないし、だから読み上げることもできないんだけど、Edge は間違えて Ctrl+Shift+U を押したときにいきなり読み上げを始めて、そんなことが最初から当たり前にできるんだと、最近のパソコンはすごいなと驚いたんだよね。Edge のすごく目立つフォーカスリングも良い。この日記ではずっと前から CSS でフォーカスにアウトラインを与えているし、Firefox の userContent.css をいじってその他のすべてのページでも同様のアウトラインでフォーカスアイテムを目立たせているんだけど、Edge ではそういうことを自分でやらないでも最初からできている。フォーカスはキーボードで特に重要。マウスやタッチだとぺたぺたと触ったところが即ちフォーカスのあるところなのでフォーカスを意識する必要がない。でもキーボードで文字を入力するとき、ページをスクロールするとき、フォーカスのある場所を気にしないわけにはいかない。最近ではフォーカスに関係なくホイール操作をマウスカーソルの下に送るのが当たり前になったから、フォーカスの扱いがさらに雑になったと感じている。「(バージョンアップした) Firefox は思うようにスクロールができない」とはそういうことだ。だからなおのことフォーカスリングがよく見えるのが嬉しい。


2025年03月04日 (火) [Xperia 10] スマホにあわせて買った帆布のポーチが破れてしまった。そろそろ6年になろうかというタイミング。落下防止のためにカラビナにベルトを通してからぶらぶらしないようにポケットに突っ込んでいるのだけど、ポケットの縁との摩擦で消耗していったみたい。アマゾンで代わりになりそうなものを漁ってみたけど、無駄な要素が多くてどれも満足できない。雑に縫い合わせて使い続けるのだった。DSC00943.JPG (1.1 MiB)。丁寧に仕上げる技術はないし、弱ったところを縫い合わせても今度はすぐに縫ったところを囲うようにひと回り大きく破れるのだよね。布自体が弱っているから。これの解決策のひとつがアップリケなのかなと思う。離れた丈夫なところに針を刺す。他に何ができる? ちなみに画像の状態は、無事な内側の布と裂けた外側の布のあいだに大きく切ったジーンズの端切れを挟んで両面テープで固定してからジーンズと外側の布を一緒につまんでぐるぐるしている。


2025年03月01日 (土) [AtCoder] 今日は AtCoder Beginner Contest 395 があった。自分のすべての提出コンテスト成績証。F まで典型度が高く簡単でした。G はとりあえずワーシャルフロイド法で全点間距離を求めてから再帰関数で木を作って最小コストを求めてみた。サンプルの1は合う。サンプルの2は答えが合うものも、答えが大きすぎるものもある。わからない。PC の時計が1分近く遅れていてコンテストに遅刻しました。それから、自分はいつも G 問題を開いて提出言語を Ruby に変更してから他の A から F の問題を開いている。そうすると A から F の提出言語が最初から Ruby になっているし、タブの並びが A から G まで順番になるので具合がいいのだけど、今日は G 問題の問題ページに提出欄がなかった。新しい PC だからブラウザの設定が違うだろうからと外部スクリプトを順番に許可してみたりしていたのだけど、なんと今日の G 問題にはもとから提出欄がなかったのだった(提出タブから提出することはできます)。「質問 - ABC395」。さらに無駄な時間を使ってしまったけど、逆に肩の力が抜けた面もある。■A 問題 Strictly Increasing? Enumerable#each_cons で素直に判定した。何をもって「素直」とするかは判断が分かれるところ。適切な初期値を補って N 回判定を行うことを自分は素直ではないと考えたけど、N=1 の場合に each_cons(2) が何を返すか一瞬の判断を要するところが素直ではないという考えもあるだろう。■B 問題 Make Target。B 問題なりの配慮だったのだろうか、冒頭からこれ「以下のような N×N の模様を作成してください 」。ABC375-C Spiral Rotation は難しすぎて解けなかったもんね。今日は出力例を見て見たまんま実装した。■C 問題 Shortest Duplicate Subarray。同じ値の最小間隔が答え。ペナルティが出ていてびっくりしたんだけど、見たら全部 WA だった。この場合のデバッグはむしろ簡単で、スクリプトを2回貼り付けていたのが原因だった。さらに言えば原因は Firefox と MS-IME にある。(バージョンアップした) Firefox は思うようにスクロールができないし、MS-IME は全角/半角の切り替えが狂っている。ATOK2009 を使い続けたかったが Windows 11 においては入力できるコントロールと入力できないコントロールが混在していて支障がある。そのうち必ずなんとかする。■D 問題 Pigeon Swap。E 問題でもよくないですか? ABC279 では F 問題が BOX でしたよ。どちらの問題も3種類のマッピングを管理して答える。■E 問題 Flip Edge。01BFS かなと思って実装を始めたけど、それだと手戻りというか上書き更新というか、何度もグラフ全体をなめさせられる気がしたのでダイクストラ法に落ち着いた。頂点を倍加した1つのグラフでやるか2つのグラフを並べてやるかで迷ったけど、慣れた方でやった。■F 問題 Smooth Occlusion。歯は伸ばすことができないので大きすぎる H は答えにならない。逆に全部削ればいいのでゼロは必ず答えになる。コストと H は比例している。二分探索で H を決め打ってから、取りうる上の歯の長さの範囲を前から順に求めていった。空でない範囲が得られる最大の H がコストを最小化する。他の人の提出を見るに、実は二分探索はいらなかったらしい。■G 問題 Minimum Steiner Tree 2。1 から K と s, t 以外の頂点が交差点になるケースに対応できていないことが寝る前に分かった。ではどうするか、わからない。


2025年02月28日 (金) ジュンク堂書店オンラインがサービスを終了し、会員情報を引き継いだ honto が紙の本の取り扱いをやめ、まんが王に救いを求めたらあっという間にこの事態(まんが王倶楽部-MANGAOH CLUB-[ニュース] 【重要】成人向け作品の取り扱い中止について)。エロ以外のマンガと一部の小説しか取り扱いがないとなると注文できるものが限られすぎる。ならばとかつて店頭受け取りにつかっていた e-hon がいつの間にか始めていた宅配を併用し始めたのだけど、今月注文して届いたエロマンガ(複数)の存在が抹消されていることに気が付いたのが今日(3月1日)。注文履歴から本のページへのリンクが切れているし、以前はページがあった新刊も存在しないことになっている。新聞では書店を救おうという新聞紙・出版社・議員の動きが報じられているが、事態は切迫しています。エロの危機。いまさら本屋や紙の本を救おうという動きには乗りきれないんだけど、エロを排除しない決済手段や流通プラットフォームがあるべきだし、その点で紙の本と実店舗には信頼がある。今日初めて紀伊國屋書店ウェブストアにアカウントを作って注文をした。


2025年02月27日 (木) [Win11] モニターをコマンドでオフにしたい需要がある。モニターの電源スイッチを触らずに。SC_MONITORPOWER というウィンドウメッセージがある。かつては Ruby で書いたけど、今だと PowersShell を使ってショートカットファイルにワンライナーを書いてできるらしい。「PCの画面をオフにするショートカットつくってみた #Windows - Qiita」。ここからが本題。なんでモニターの電源がオフになると実行してるバッチが中断してるんですか? バッチを中断したければ Pause ボタンを押すかスリープするかするんで、モニターをオフにするときというのは、モニターをオフにしたいときなんですよ! 電源ランプが点滅してるから正真正銘スリープしてるんだよな。これはつまりカバーを閉じたときにスリープする設定をなぞっているということか? そんな設定も閉じるカバーもないけども、ノート PC のパーツを使ったミニ PC ではある。■[Win11] 起動直後は普通に使えるし、しばらくしても他のプログラムは正常に動作しているのだけど、エクスプローラーと設定アプリがフリーズするようになる。画面が真っ白でフォルダの中身が表示できない。ドライブの右クリックメニューが出ない。設定は選択により状況がまちまちで、ホームが表示されるまでの待ち時間が非常に長く、アカウントについてはヘルプを表示のリンクしか表示されない。検索設定のリンクが機能していない。他の設定は表示される。Windows Search というサービスを無効にしたら解消した。すべてがまともに応答している。何十万という検索インデックスが良くなかったらしい。できないことをやろうとするなよ。Thunderbird も 1.5 GB くらいのサイズの検索インデックス(global-messages-db.squlite)を扱いかねているみたいだったのでグローバル検索をオフにしたのだった。できないことをやろうとするなよ。ちなみに Thunderbird はそれでも設定画面が応答せず新着メールの受信が 10 分以上まったく完了しない状態が続いたので「Windows11でThunderbirdが度々フリーズするトラブル - Win11ラボ」にしたがってバージョンを 60 に下げてから 91 まで上げたのだった。91 ではすべてがまともに応答しているし、受信ボタンはアカウントを選んで受信することができる。最新の Thunderbird は受信ボタンに▼がなく、押しても2段階認証のコードを有効期限内に受信することができず、新着フィードはありませんというメッセージを表示するだけの無能だった。あることがわかっている新着メールを受信する前にフィードを調べるお前は何者か。ついこのまえ Vista での最高バージョンである 52.9.1 から最新の 128 まで何ステップもかけてアップデートしたところなのに、すぐに 60 まで下げることになるとはね。Supernova ってのはあれか、Thunderbird が爆散して消えるという行く末を見据えた命名か。■[Win11] これはデスクトップウィンドウマネージャーが悪いのだろうか。ウィンドウのフレームを隠してるよね。フチなしに見せたいがために存在しているフレームを隠している。その結果、ウィンドウの枠をつかんでリサイズしようとすると、(くう)をつかまされることになる。枠線を狙っても空振りするが、枠の外の空間には見えないボーダーが存在していてそこに判定がある。視覚を欺かれている状態と、枠が細くて狙いがつけにくい場合と、どちらがなお悪いだろう。どちらも悪いが感覚を狂わせる方がより(たち)が悪いと思う。■■■モダンスタンバイという用語を仕入れてきた。S0 がそれに相当するらしい。それを持ち上げるために従来の S3 スリープのネガが強調されすぎているように思う。MSI 990FX-GD80 というマザーボードと Windows Vista では S3 スリープで数ワットしか消費せず、復帰にかかるのは2秒未満、正確な時間はモニタの復帰が2秒程度かかるためにわからない、という状態だった。それがモダンスタンバイ(S0)になってどうなったか。ストアアプリをスリープ中に動かすためにそれほど消費電力が減らず、一方で画面をオフにしたいだけの時にバッチの実行が中断されるようになった。自分にとってモダンスタンバイは消費電力が大きく電源断への備えがなく画面だけを切ることができなくなり応答速度を改善する余地はもとからなかったためにメリットに数えられない。デスクトップ機にはハイブリッドスリープが良かった。今は移行に3秒、復帰に 30 秒かかる休止状態を使っている。スタートメニューの電源ボタンがマウスであってもキーボードであっても遠く、押してからも選択を要求するから、物理ボタンに手を伸ばしている。億劫だがそれが一番ましだから手を伸ばしている。Win、→ の2ステップだった Vista に比べて Win+X、U、H の4キーはせせこましい指の動きが要求されることもあっていかにも面倒。それで物理ボタンが比較すると一番近いのだが、それほど近くはない。


2025年02月26日 (水) [COSMOS][UM870] svn リポジトリの移動に苦労している。原因が長年にわたり度重なったブルースクリーンにあるのはわかってるんだけど、ホットコピーを作成しようとすると revprop フォルダにある連番のファイルがところどころ飛んでいてエラーになる。幸いにも足りないいくつかのコミット番号で空のファイルを作ってやりすごすことができたのだけど、次はコミットデータが連続して2、30コミット分飛んでいた。ここらでホットコピーをあきらめてダンプファイルからの復元に切り替えた。説明によればホットコピーと違いコミット以外のもの、フックなどのリポジトリ関連設定が失われるらしいが、どのみちそんなものは使っていない。ところが最新のダンプファイルもやはり同じ2、30のコミットが欠けている。このダンプファイルというのは毎日 1000 コミット単位でファイルを分けてインクリメンタルに圧縮ファイルに追加しているもの。そしてときどきは圧縮ファイルをリネームして脇へどけて、イチから書き出されるようにしている。ということはどういうことか。1つ古い圧縮ファイルの中には欠けている2、30コミットを含む完全な 1000 コミット分のダンプファイルが含まれていた。ここからが難しいところ。最新の圧縮ファイルには 181968 コミット分のダンプファイルがある。1つ前の圧縮ファイルには 91773 コミット分。欠けていたのは 69000 番台。全体の半分ほどにあたるリビジョン 91774 以降には補って代わりになるバックアップが存在しない。次またコミットデータが欠けていたらどうしたらいいのでしょう。さっき「ときどき」って書きました。1か月でも1年でもないときどきとはどういう意味か。気が付いたときに手動で圧縮ファイルの移動&リネームを行っていたという意味で、2020 年以降4年ちょっと忘れていたせいでバックアップが手薄になっています。テキストエディタの Ctrl+S に連動した編集履歴だからないならないで困りはしないけど、なんとなく惜しい気持ち。■1コミット1秒だとして 18 万コミットを再生するのにかかる時間は……180000 = 50*60*60 だから……50 時間! どうりで何日も終わらないはずだ。しかも GUI でやってたときは失敗するたび最初からやり直すしかなかったし。


2025年02月14日 (金) 給湯器から蛇口まで距離があるとお湯が出てくるまで時間がかかりますよね。今朝のこと。お湯が出るのを待つあいだ勢いよく水を流すのがもったいないなと水量を絞ったときに思ったんです。自分はお湯が出てくるまでの時間が一定であると仮定して、そのあいだ無駄に流れる水を節約しようとしたけれど、実はお湯が出てくるまでを決めているのは流れた水の量ではないのかと。勢いよく流せばそれだけ早くお湯が出てくるのではないかと、思ったのでした。瞬間湯沸かし器ってぐらいなので、沸いたお湯でさっさと管の中の水を押し流すのがいいのではないか。そういうことを何十年生きてきて初めて考えました。