20250313 把持力

項目 内容 得点
起床 8:03 97
散歩 実施・ゴミ拾いあり・犬遭遇0匹 100
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 80点, discipline: 70点(intricate) 75
ジム 有酸素+筋トレ 100
勉強会 参加 100
個人開発 ノー 0
あすけん - 60
総合 1日の総合評価 83

散歩はBコース。タバコが多い。ゴミ出しの前日にゴミを拾うとすぐ捨てられて良い。でもまだ煙が出てるタバコは怖い。水たまりに突っ込んで消した。

仕事だなあやっぱり。今の5倍速で仕事できるようになりたい。

ジムは風呂上がりにニベア塗るときに何かが起きて「ンフwこれブログに書こ」って思った記憶があるんだけど、何を書こうと思ったのか覚えてない。思い出した。ニベア指まで塗るので蓋の把持力が低下して、いつも蓋を閉めるのに失敗して落としちゃう。

20250311 PC換装/体調不良

3/10

予告通りPCを組み立てた。結果としてはベンチマーク中の温度が15度以上低下し、静音性も向上したので効果は大いにあった。かつて秋葉原でボッタクリみたいな値段で買った電動ドライバーが大活躍し少し見直した。

8年酷使した電源、どう処分しよう…?

以下メモ。

Fractal Design Define R5

  • SSDの置き場に迷う。マザボ裏に2.5インチシャドウベイがあるが、3.5インチシャドウベイと距離があるので1本の電源ケーブルで両方をカバーできない。3.5インチシャドウベイにも2.5インチSSDは設置できるが、電源ケーブルがトレイと干渉して挿せなかった。結局3.5インチシャドウベイのトレイを取り外してそのスペースにSSDを適当にぶら下げるという形で解決した。
  • ケース前面裏から出ているUSBコネクタの端子が固く、マザボに刺さりきらなかった。
  • 側面カバーがどうやって固定されているのかわからない。サルの知能テストみたいに適当にゴチャゴチャしてたらはまった。
  • 裏配線スペースが豊富に用意されているが、あまり厚くなってしまうとさすがに側面カバーと干渉する。
  • 前面ファンの真裏に3.5インチシャドウベイがあるが、これはベイに風を当てるべきなのか風を遮らないようにすべきなのか…?

MSI MAG A750GL PCIE5

  • ATXケーブルの電源側端子が2つに分かれているが、その2つの端子を挿すべき場所が横に並んでいない。ある程度ケーブルを裂いて柔軟性を確保する必要がある。

虎徹Mark3

  • 特にない。グリスは相変わらず上手く塗れなかった。ファンの取り付け位置・向きにご注意。
  • RevBの方が性能が良いらしかったが売ってなかった。無印はわずかにAK400より安かったので、おそらく高いであろうRevBはどうやってAK400への優位性を確保するのだろう。

3/11

久々に睡眠の質が悪い。昼に辛くてニンニクの効いたラーメンを食べたら腹を壊してしまった(隔週火曜の昼はこのラーメンと決めている)。いいことない。生田目(力士)も膝ヤバそうだし。PCは静か。

20250310 発作/temporary value dropped while borrowed

3/9

持病のPC弄り病の発作が出てしまい、秋葉原にすっ飛んで行ってケース・電源・CPUクーラーを買ってしまった。7月の大規模アップグレードのときに電源は変えなかったのだが、電源の劣化を示唆するような症状は見られないと言えども(いや、実は出ているかもしれない…?)、購入から8年間酷使している電源はそろそろ不安だ。そして現在使用しているのがATXの省スペース横置きという変態型であるが故に電源の交換やHDDの追加作業が非常にめんどいという事情がある。このケースの厳しい寸法制限のせいでCPUクーラーは小さくて低性能なものを使わざるを得ず、またエアフローも貧弱であるために追加のファンがうるさい。

このケースを買った当時は学生で部屋が狭く、空間の活用も下手だった。今は違い、いかにもPCを置けそうな遊んでるスペースがデスク下にある。それならクソデカケースを買えばいろいろな問題が一挙に解決するではないか(なにか1つの新手によって全ての問題を一挙に解決できそうになると細かいことを考えるのがめんどくなるやつ)。

最近のケースは3.5インチベイが少ないのがトレンドとのことだが、僕は最低4は欲しく(現状も3使ってるし)、Define R5にした。10年以上前から使われている定番商品らしい。電源とクーラーはあまり詳しくなく、750WGOLDのATX3系であるMSI MAG A750GL PCIE5、そして国産であり低価格帯でAK400と双璧をなす定番・虎徹Mark3にした。

夕食は秋葉原の日乃屋カレーにした。日乃屋カレーってこんな味だったかな…?と思った(プラスの意味なのかマイナスの意味なのかは お察しください )。雨でとても寒い日だったのにメイドカフェ?の呼び込みはみんな足を見せる服装で大変だなあ。

ケースが届く月曜日が、Xデーだ。

3/10

普通の

↑これだけ入力した後温めたお茶を取りに行ったら何を書こうとしていたのか忘れた。何が普通だよ(さっき考えていたことを思い出そうとしても思い出せないこと、あるよね…あるよね?)。

家事

明日のPC換装・配置換え作業を控えて今日は念入りに掃除をした。昔は長机1つをPCデスクにしていたのだが、今は友人から貰ったクソデカ机(なんと天板120cm x 70cm)の左側にもう1枚机を連結してクソデカスギ机として運用している。クソデカ机の下にはキャビネットと僕の太ももが入っているが、追加机の下は何も活用されない空間になっていた(実際のところ故障して直線が引けない液タブが放置されている)。

なぜ液タブが放置されていたのか。それは捨てるのが難しそうだったからだ。一般に家電は捨てるのが難しいし、液タブは粗大ゴミとして捨てようにも分類が不明で問い合わせが必要そうだったので面倒そうで放置していた。今回改めて調べてみると近所のジョーシンで550円払って回収してもらえた。半導体はリサイクルされて回り回って今度はLLMのパーツにでもなるんだろうか。

その流れでベルトや食品を買って帰宅。冷凍餃子ってレンジじゃなくてフライパンで解凍するんですね。知らなかった。

RimWorld

RimWorldは人生の多くの洞察を与えてくれるが、一般規則と個別事例の関係もそうだ。後半のpawnが増えてきたコロニーは一人ひとりの行動をチェックして最適化していくのは困難だ。それはチェックが手間というのもあるし、一人ずつ最適化しても全体最適にならないからだ。そこでなるべく少ない数の一般的な規則を発布し、各pawnが自律的に行動することで全体が円滑に回ることを期待する。たとえば衣服に関して言えば

  • pawnのデフォルト着脱ルール(気温に合わせた服を着る)
  • pawnに「HP50%の服は着てはいけない」
  • 溶鉱炉「HP50%以下の服が存在する限りそれを燃やす」
  • ミシンに「衣服の在庫が1になるように製作する」

という4つのルールを設定することでpawnが衣服に関して困ることがなくなる。これが一般規則による問題の解決だ。

しかし現実は複雑だ。pawnが着るべき服は各pawnの性質によって大きく異なる。食人嗜好者なら人皮製の服、ヌーディストなら衣服なしにしたいし、戦闘時に前衛か後衛かによって防具も変わってくる。ミシンで製作できない拾い物の高性能衣服があるならそれを誰が着るかという設定も必要だ。

つまり、一般規則と個別事例の両方を意識しないと物事はうまく回らない。誰かが割を食うという可能性もあるし、システム全体が破綻するという可能性もある。思えば刑法が裁判官に対して量刑の範囲を指定し、裁判官が個別事例に応じて量刑を決定するというのはこれに通じるところがあるだろう。

Rust

このようなコードをコンパイルしようとすると

fn f() -> Vec<i32> {
    vec![1,2,3,4,5]
}

fn main() {
    let v1 = f().iter();
    println!("{:?}", v1);

    let v2 = f().into_iter();
    println!("{:?}", v2);
}

v1のほうだけ失敗する。

error[E0716]: temporary value dropped while borrowed
 --> src/main.rs:6:14
  |
6 |     let v1 = f().iter();
  |              ^^^       - temporary value is freed at the end of this statement
  |              |
  |              creates a temporary value which is freed while still in use
7 |     println!("{:?}", v1);
  |                      -- borrow later used here
  |
help: consider consuming the `Vec<i32>` when turning it into an `Iterator`
  |
6 |     let v1 = f().into_iter();
  |                  ~~~~~~~~~
help: consider using a `let` binding to create a longer lived value
  |
6 ~     let binding = f();
7 ~     let v1 = binding.iter();
  |

そもそも解説ページに全部書いてあるのだが、メソッドチェーンの形が解説のコード例につながるということがしばらくわからなかった(それが自明に思える人は以下読む必要ない)。
https://doc.rust-lang.org/error_codes/E0716.html

v1がやろうとしていることは、メソッドチェーンを分解するとつまりはこういうことであり

let v1 =
    {
        let tmp = f();
        tmp.iter()
    };
println!("{:?}", v1);

v1はtmpをborrowしているが、当のtmpはprintln!が実行されるころには存在していない。そもそもprintln!の場所でv1はもう使えないということだ。言われてみればRustの目玉機能である所有権の基礎of基礎なのだが、テキストで読んだ形と少しでも変わるともうわからなくなってしまっていた。やはり実践は重要だ。

20250306 ぎっくり腰?

項目 内容 得点
起床 7:15 100
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 85点, discipline: 80点(複雑) 83
ジム 有酸素+筋トレ 100
勉強会 参加 100
個人開発 実施 100
あすけん - 26
総合 1日の総合評価 82

↑睡眠時間と節電を追加すべきかも

久々に入眠がクソ下手だった。割った睡眠薬の小さい方の欠片を飲むという蛮勇のせいだ。

腰が痛い。便座に腰掛けようと中腰になった途端に腰に軽く痛みが走り、その直後は大丈夫だったが夜になってじわじわ痛んできた。ジムは行ったが背筋系の種目は休んだ。参ったなあ。バックエクステンションはマシンが壊れていて重量が上がらないのでその分可動域を広く取ってみていたが、それが悪かったかもしれない。

これと同じタイプのマシンなんだが、理屈のうえでは体を直立よりも反らせようとしたら尻浮きませんか?どうやって成立するのかあまり理解ができない。

昼食は寒さと、それに伴うreproduction・搾取・愛玩・本能等の鬱っぽい思考をを辛さで追い払うために日高屋のチゲ味噌ラーメンにした。昨日・一昨日の松屋よりかなり安いけど満足度は負けていない。日高屋の餃子以外のメニューは侮れない。

写真をアップしようとしたら、スマホからPCに画像を転送するのに使っているKDE Connectが壊れていた。メンテナが修正版を出してくれたので数日以内にはストアに入って直るだろう。しかしなんで海外のOSSで活躍してるエンジニアってのはみんな雰囲気のあるイケメンで写真写りもいいんだろう。
https://github.com/GSConnect/gnome-shell-extension-gsconnect/issues/1932#issuecomment-2701205070

例のパケットキャプチャのプロジェクトを久々に少し触った。Clineの登場で界隈が賑やかいが、このプロジェクトに限ってはRustとインターネットプロトコルスイートを学習するという生存戦略が目的であるので、LLMは封印することにした。これで本当に生存できるかは10年後わかります。所有権の話いつまで経ってもよくわからない(というかメソッドチェーンと所有権の絡みってBookで説明されてなくない?)のだが、とりあえずこのひたすらエラーを解説するページが便利っぽいということを今日は発見した。
https://doc.rust-lang.org/error_codes/E0716.html

20250305 松屋の固形燃料メニューやけどしない食える人いるの?

項目 内容 得点
起床 7:55 100
散歩 実施・ゴミ拾いなし・犬遭遇0匹() 100
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 80点, discipline: 65点(隙) 73
ジム 休養日 100
勉強会 参加 100
個人開発 ノー 0
あすけん - 72
総合 1日の総合評価 84

散歩はめちゃくちゃ寒くて後悔した。人類は暖かい部屋にいたほうがいい。

昼食は松屋のシュクメルリ定食を食べた。辛いもの食べたかったんだけど歩いているうちに気が変わってしまった。昨日に比べるとさすが松屋の準レギュラーだけあって美味い。しかし熱い(松屋の固形燃料メニューやけどしない食える人いるの?)。タンパク質が多い。

あすけんの栄養目標を再調整した。目標体重を現状維持とするかBMI22ちょうどを目指すかで迷ったが22にしておいた。そして体質上タンパク質を78gまで減らし、他をリバランス。厚生労働省の日本人の食事摂取基準を参考にしていたが、章によって結論である表が引用より前にあったり後にあったりして変な感じだ。

仕事は大きめのやつが終わって隙間のタイミングで(年度末でもあり)、今のうちに溜まっている小ネタを消化していきたい。仕事が面白い時期はあんまり書くことないよね。

ジムが休養日なので早々に退勤して昼寝などしてのんびりしていた。Dota2は勝った。ワートリの感想まとめ動画とかいう徳の低い動画を見ていたが、だんだん単行本未収録部分のネタバレが出るようになったので非表示にした。

20250304 サムギョプサル風極厚豚バラ焼肉定食

項目 内容 得点
起床 9:15 38
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 80点, discipline: 65点(待) 73
ジム 有酸素 100
勉強会 参加 100
個人開発 ノー 0
あすけん - 69
総合 1日の総合評価 67

昼食は松屋の『サムギョプサル風極厚豚バラ焼肉定食』を食べてみた。1180円という松屋の中でも超重量級のメニューだ。しかしこれはしょっぱすぎる。ニンニクとかコチュジャンとかそれっぽい薬味も用意されているのだがとにかくベースの肉がしょっぱい。肉質も厚いがブヨブヨした脂身が多くあまり良いとは言えない。松屋の固形燃料付きのメニューは固形燃料が活きていることがあまりなく、意味なく熱いだけだ。量はさすがに多いのだが薬味のバランスで味変を楽しもうにも全部しょっぱくて単調なのでどうにもならなかった。残念ながらかなり評価は低いと言わざるを得ない。素直にシュクメルリ食べておけばよかった(しかし松屋の新メニューは食べると決めているのでな…)。

睡眠が遅れがちなので戻したいな。睡眠薬は強いやつと弱いやつを出されていて、強いやつは自己判断で減らしていいとのことだったので最近は割って半錠にしている(飲み方をミスると超苦い)。

そういえば電気料金がバカ高い。料金が高いだけでなく電力使用量も去年に比べて30%くらい増えている。これがよくわからない。特に新しい家電を導入したわけでもないと思うのだが…こういうときにどうやって原因を調べればいいんだろう。今はwebで1日毎に消費量が見えるから、細かく生活パターンを変えてみて影響を見ればいいのかな。単一事例実験というやつだ。エアコンの温度が高くなりがち(設定は20度なのだが22~23くらいまで上がる)のがコントロール外の電力消費になってるのかな。あるいは布団カバーの洗濯頻度を上げたことによる浴室乾燥機の多用?これは洗濯タイミングを調整して外干しにできれば緩和できそう。

20250302 陽光

のんびり起床し、天気があまりにも良かったのと3月に入ったので家系ラーメンに行ってきた。いつもよりしょっぱかった。満腹で帰宅して暖かい陽光で眠くなりながら『ワールドトリガー』を読み直し(序盤は割と型を作れてなくて危なっかしい感じあって初々しい)、そのまま昼寝。起きてRimWorldをして夕食を食べて寝る。心身の休養という意味では完璧に近い日だったな。これほど天気に恵まれる日は一年にそうないだろうし。

RimWorldは堅固な設計からフレキシビリティへと興味が変わってきた。初期メンバーと地形が決まった時点で拠点の設計をほぼFIXしそこに向かって作り込んでいく方針も良いのだが、このゲームにはどうしても不確定要素がある。中途加入メンバーの得意分野、恋愛の発生、家畜の入手などが大きい。今回は6x6の小さい部屋をどんどんつなげて増設していく形を取った。現段階では11部屋作ったがそのうち6部屋がぶちぬきで宿舎・ダイニング・娯楽室・工作室の兼用になっており、残りが個室・監獄・倉庫・空き部屋になっている。

この方針で大事なのは成長軸の概念だ。建物をどちらの方向に伸ばしていくかはよく計画しなければならない。農業向けの土地の上に建築してしまうのはもったいないし、風力発電を使うなら風を遮らない方向に育てなければならない。つまりソフトウェア開発と同じだ。

拠点の最終的な目標は建造物を全て囲む壁を作り、その入口のキルゾーンで敵を待ち受ける形だ。しかしこれに至るには膨大な建材が必要であり、その途中の防衛は難しい。漸進的建築は建材のロスが多いが、常に隠れられる屋内が存在していて、その中で生活が完結する。

それでもやはりある程度まで成長した後は気合で万里の長城を作ることは必要で、利用できる地形が少ないマップだとなかなか大変だよな。

YouTubeの広告ブロッカーブロッカーの研究

自由研究 としてYouTubeが広告ブロッカーを検知する仕組みを調べていた。有名な広告ブロッカーを狙い撃ちにしているのかと思いきや、僕が 研究用 に作った簡易的なブロッカーにもちゃんと反応していた。

https://www.youtube.com/s/player/5ae7d525/player_ias.vflset/ja_JP/base.js より抜粋

    g.E.onClick = function(k) {
        k && k.preventDefault();
        var p, t;
        dDL(k, {
            contentCpn: (t = (p = this.api.getVideoData(1)) == null ? void 0 : p.clientPlaybackNonce) != null ? t : ""
        }) === 0 ? this.api.zb("onAbnormalityDetected") : (SA.prototype.onClick.call(this, k),
        this.api.zb("onAdSkip"),
        this.api.onAdUxClicked(this.componentType, this.layoutId))
    }

クリックイベントkをdDLに渡し、その返り値が0ならonAbnormalityDetectedイベントが発行され、その結果広告ブロッカーやめろ画面に遷移する。

    dDL = function(k, p) {
        var t = 1;
        k.isTrusted === !1 && (t = 0);
        a3("ISDSTAT", t);
        qO(t, "i.s_", {
            triggerContext: "sk",
            metadata: p
        });
        return t
    }

dDLの実装を見るとisTrustedがfalseなら0が返る。
https://developer.mozilla.org/ja/docs/Web/API/Event/isTrusted

ユーザーを意図しない操作から守るためにブラウザが提供している機能なので、これを出し抜くのは結構難しい。相当な荒業でやる方法はあるようだが、addEventListenerが実行される前にinjectせねばならずなかなか難易度が高い。
https://qiita.com/i11u/items/0a6d38966c75314bacba

Chrome extensionのdeclarativeNetRequestを利用してbase.jsがダウンロードされるときに該当箇所を書き換えてしまえばいいのではと思ったのだが、preload+service workerが使われている影響かbase.jsのGETを捕捉できなかった。あとはプロキシサーバーを立ててbase.jsだけすり替えるとかできるのかなあ。なんならChromiumをforkしてisTrusted機能を殺してしまうのもありかもしれない。Chrome拡張という配布のしやすい形を諦めるなら選択肢はいろいろある。

あくまで 研究 ですからね。私欲のために実行しませんよ。こういう研究をしていると広告が流れてくれた方が都合がいいのだが、そう思っているときに限って意外なほどに流れない。こんなに頻度低かったかな…?と思ってしまい、それなら別にいいやとなってしまった。逆物欲センサー(だいぶ昔の言葉になってしまったな)。

webサービスをどう設計するかは作り手の自由だが、それと同時に我々が自分の所有する計算機でどのような計算を行うかも自由だ。つまりはそういうことだ。

こういう漠然とやりたいことはあるけどどうやるべきかもどう書くべきかもわからない状況、雑にCline+Claudeに書かせておいてよくわからないところはCopilotに説明させてあーそういう意味ねと納得したりしている。Clineが大きなスコープでの作業を得意とする一方でCopilotはインライン操作が充実していて細かい部分について質問しやすい作りになっている。LLMの特性と言うよりはプロダクトとUIの特性だね。

20250228 樋

(インターネットに書くとわかる人にはわかっちゃうと思いますが、このブログは昔からそういうスタンスなのであまり気にしてないです)

昨夜に日記を書いた後、気づくと部屋の廊下が水浸しになっていた。意味がわからなかった。見ると天井の火災報知器や照明から水滴がポタポタと落ちている。とりあえずありったけのバスタオルをかき集めて床を拭き、滴る水をたらいとボウルで受けるようにした。

幸い建物の管理会社は夜も通じるコールセンターを持っていたので電話してみたが、翌朝までできることはなさそうとのことだった。しかし滴下ペースを見ると所有するたらいでは翌朝までとても保たない。そこでゴミ袋を貼り合わせて簡易的な樋を作り、流し台に排水するようにした。

今日になって管理会社が建物に来て、ひとまず原因箇所の水を止めてくれた(詳細な原因はインターネットには書かないことにする)。しかし水が抜けるまでしばらくは漏れ続けるだろうとのことだった。聞くところによると僕より上層階でも被害が出ているとのことで、かつ1階共用部分にも水漏れがあったので、上層階から下の部屋に次々漏れ出しつつ1階まで壁の中を水が流れていったのだろう(定期的にバズる『A KITE』のアレ)。

僕の私財の損害は汚水(上水かもしれないが僕の部屋に漏れ出てきた時点では黄色く濁っていたので汚水と呼称せざるを得ない)を拭いて本来の用途を果たせなくなったバスタオルだけ。一方設備は(私はこの部屋の所有者ではない)火災報知器や照明などの電気設備がガッツリ濡れてしまったし、僕が気づくまで水浸しだった廊下のフローリングも浮いてきてしまっている。これが複数の部屋で起きていて、壁内・共用部にも色々起きてるだろうと考えると、損害の回復にはそこそこの金額が必要なのではないか。誰が払うのかは知りません。

僕としては大変なこともあるものだなあ…くらいの感想(あと睡眠不足)だけど、もしかしたら今後補修とかで騒がしくなるのかもしれない。そうなったら嫌だなあ。

20250227 HSS

遅めに起きて労働。待ちが多い日だった。ジムは少しサボってたので硬くなっていた。近所のスーパーが2日休んで改装したので見に行ってみたけど大して変わってなくてこれで2日?と拍子抜けした。

ここ数日は大きな考え事が頭を占めていてハァーサッパリサッパリしない。甘いものが欲しくなる。