20250503 エラーバジェット

今日は大変な日だった。書きたいこともあれば書きたくないこともあるが、僕の日記なので僕が書きたいことだけ書く。

そもそも昨日ある知らせがあり、誰も悪意を持っていない出来事ではあるのだが、とても辛い気持ちになった。それでジムは力が出ずに中断。やるせなくお菓子をドカ食いし、大夜ふかし。

今日は逆に不意の楽しい話があったのだが、昨晩の不摂生が祟って体調を崩してしまい、失敗。助けてくれた友人に感謝。

一定の生活を心がけていると一定の余力を保持できるので、何か用事ができても余力を使ってそれを実行できる。エラーバジェットだ。しかし今回は昨日の落ち込みでバジェットを消耗していたため、続く用事に対応できなかった。

エラーは減らしたほうがいいが、人生は自分にとって負担だからという理由だけで何でも切り捨てることはできない。バジェット管理力が求められる。

20250501 てんや『海かぜ天丼』

項目 内容 得点 換算点
睡眠時間 7時間40分 100 13.0/13.0
起床 9:00 50 4.0/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 80点, discipline: 80点 80 19.2/24.0
ジム 休養日 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 76 6.8/9.0
総合 1日の総合評価 - 72

あすけんアプリのレスポンスの悪さとリクエストの失敗率、金取っていい水準に達してないと思う(有料会員)。

ランチはてんやの『海かぜ天丼』にした。てんやの季節モノメニューにはあまり関心がなくて天丼や野菜天丼ばかり食べていたんだけど、『海かぜ天丼』(海かぜ天丼って何?)はエビもあおさも太刀魚もそれぞれの鮮烈な香りが感じられてかなり良かった。食べる意義があった。あおさが形態上衣が多く油っぽかったのは少し辛かったが…。

思い立ってマネーフォワードを見て出費の確認などしていた。普段はしない。独身男性なので。固定費ではやはり割引が切れたJCOMがキツい。NTTの設備があるのに配管の問題で使えないのはお前らがなんとか旋回!と管理会社に問い合わせているが返事がない。たぶん来ないだろう。水漏れの補償の話も来てないし。なあ大東建託。

…なんか面白い話を書こうとしていたんだが忘れちゃった。GitHub Copilot ProとかOpenRouterとかさくらのVPSとかも削れるっちゃ削れるだろうけど、一応技術で食ってるので一時の節約のために腕磨きを怠るのは本末転倒だよな〜。

20250430 @ピザ/Effect

項目 内容 得点 換算点
睡眠時間 6時間11分 67 8.7/13.0
起床 8:38 68 5.4/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 75点, discipline: 65点 70 16.8/24.0
ジム 有酸素 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 80 7.2/9.0
総合 1日の総合評価 - 67

近所のスーパーは頻繁に冷凍食品3品買うと5%引きセールをやる。あすけんのポイント調整のために食事にちょい足しするための冷凍食品として今川焼・肉まんを常備しているが、これらには脂質が不足しがちという弱点がある。なのでこの前のセールで小型ピザを買ってみた。これがなかなか良かったので報告する。

調理の手間はイマイチ(冷凍食品の調理の手間をレビューするな)。1枚加熱するのは多すぎるので1/4枚単位で量を調節することになるが、凍った状態で切るのに包丁が必要だ。レンジ加熱時も皿を使わないと溶けたチーズが庫内に付着するという点で肉まんにやや劣る。ただし加熱時間は肉まん1分に対して45秒ほどで短くて済む。栄養としてまあまあの脂質と豊富なカルシウムを持つ。チーズのおかげだ。僕は牛乳が嫌いなのでこれは助かる。

なんとなくTechnology Radarを見ていたらEffectが載っていて驚いた。fp-tsの開発が緩やかに停止した一方で後継?ライブラリとして存在を認知していたがだいぶ存在感を増しているようだ。一見した印象だとTypeScriptの知識と一般的な関数型プログラミングの知識があれば太刀打ちできたfp-tsに比べて、更にインターフェースの独自性が強まっており、Effectの使い方をかなり勉強しなければならなそうだったのだが、いよいよ自分で手を動かしてリサーチしてみる必要がありそうだ。

20250429 IP fragmentation

項目 内容 得点 換算点
睡眠時間 5時間5分 23 3.0/13.0
起床 9:12 40 3.2/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 休日 100 24.0/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 72 6.5/9.0
総合 1日の総合評価 - 61

↑これのせいでOGPのdescriptionが意味ない内容になりがちだったのでちゃんと明示するようにしてみる。

遅く起きて朝食→ジム→ラーメン屋→買い物→帰宅→昼寝→個人開発→今

ジムで顔見知りの人と世間話をした。同じジムでも普段やることが違うといろいろ教わることがあって面白い。

なんとなく普段行かないラーメン屋に行きたくなって行ったら、定休日火曜という表示とともに中で客?と店員が和やかに談笑していて、(今日は休みで店員がまかない食べながら談笑してるのか…?)と思ったけど普通に営業してた。祝日だからかな。メニューが以前来たときから完全に変わっていて驚いた。デフォルトのトッピングがほぼ無な代わりに安いというモジュラー式電源みたいな構成になっていた。

楽しみ

休日と入っても特にやりたいことも行きたいところもないよなあ…と無気力決め込んでいたけどツイッターで友人がめちゃくちゃきれいな島の風景を上げていて俺も何かすればよかったなと少し悲しくなった。人生全部これ。段取り付けて準備してようやく得られる体験というものがあり、それをきちんと遂行できる人間と、最終的な体験は羨ましがるけど行動は起こせないで家で昼寝してる人間がいる。まあ風景が良いからなんだよとも思うが。

よく友人に付き合いが悪いとか遊ぼうとしないと言われる。人と会うのは好きなのだが、事実だ。昔から楽しむということが苦手だ。趣味もなんらかの形で自己研鑽につながるものじゃないとやる気にならない。100%enjoyの娯楽には罪の意識がある。ディズニーランドとか怖い。Dota2は対戦と上達という要素があるから楽しめるが、四川省はある程度は上達の要素もあるが結局配牌次第であり、あまりやる気が出ない。加えて初めてのことをやるのも億劫だ。まあこちらは「人生経験」「これも勉強」みたいな言い方をされれば割と簡単に乗り越えられる。ので僕に違法薬物を勧めないでください。でも誘われるのは嬉しいので何でも可。

ちなみにアニメの聖地巡礼旅行はかなり自由研究的要素があるので好きです。土地とストーリーと制作プロセスが重なって新しい発見が生まれてくるのはかなり楽しい。

最近はジメッとした内省的な話ばかりしていて嫌だね。ずっと睡眠が壊滅していてそのせいで気持ちが落ち込む。まあそれも含めての日記道だから。

IP fragmentation

パケットキャプチャの続きもやった。今日はIPパケットのfragmentationのことを考えていた。昔マスタリングTCP/IPを読んでいたときにはあまり実感していなかったけどIPパケットが下位レイヤのMTUの都合で自らを分割するのってちょっと違和感あるよね。まあこの辺りが教条的ではなく柔軟だったことがIPの広がりにプラスに働いたというのもあろうが。

IPヘッダのfragment offsetは13ビットの領域を割り当てられており、その表現は8ビット単位である。この説明はよく見られるのだが「8ビット単位って何?」という疑問が湧いた。13ビットで表現できる数値は2^13(8192)通りだ。つまりfragment offsetは8の倍数オクテットであって2^16までの数字しか表現できないということになる。そうなの?答えはYesだ。RFC791に明記されているとおり

そもそもIPデータグラムの最大長は65536オクテットなので2^16でちょうど足りる。

This format allows 2**13 = 8192 fragments of 8 octets each for a total of 65,536 octets. Note that this is consistent with the the datagram total length field (of course, the header is counted in the total length and not in the fragments).

そして分割は8オクテット単位でせねばならないと定められている。

The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be).

そう言えばもう一つ、Identificationも他の送信元と被ったら混線しない?と思ったんだけど、これは送信者IP・宛先IP・プロトコルも含めてユニークになるようにassembleせよと定められてたね。

To assemble the fragments of an internet datagram, an internet protocol module (for example at a destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol.

Ethernetの仕様書は7000ページあった一方でIPは随分読みやすい。

20250427 逆算と積み上げ

項目 内容 得点 換算点
睡眠時間 4時間34分 3 0.4/13.0
起床 8:33 72 5.8/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 休日 100 24.0/24.0
ジム 有酸素 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 59 5.3/9.0
総合 1日の総合評価 - 52

人生、ゴールを決めてそこから逆算して日々のノルマを決めるのか、それとも自分のキャパシティと相談して毎日捻出できるリソースを決めてそれを積み上げていくのか。これは難しい問題だ。前者の方が達成度を厳密に管理しやすいが、ゴールと達成度という最初に決めた一本道の目標に囚われて寄り道が難しくなるという欠点もある。スマホのアプリアイコンを整頓した。これは特定のゴールを設定していないが、日々の改善活動によって今後の生活が遅滞することを防ぐタスクに分類される。人生も開発も同じなんだよな。全てが僕というレンズを通せば同じになるから、僕は文章を書いている。

久々に王将の餃子定食を食べた。やはりどこかのチェーンと違って餃子がちゃんと美味い。しかし高い!

なんとなく物欲しい気分だったのでお菓子を大量に買ってきて食べた。娯楽は何かを犠牲にするものだが、僕の場合栄養スロットには余裕がありがちなのでこの手に限る。

あまり気持ちがハァーサッパリサッパリしない。これじゃ日記じゃなくてチラ裏だよ。それはやっぱり違うものだから。ネマシュ

20250426 EtherType

項目 内容 得点 換算点
睡眠時間 7時間35分 100 13.0/13.0
起床 9:51 8 0.6/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 休日 100 24.0/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 72 6.5/9.0
総合 1日の総合評価 - 68

論理午前中にジム。帰宅して昼寝。昼寝が習慣づくと就寝が下手になる疑惑もあるが…。今日は寒かったね。雨も降ったし。

個人開発はパケットキャプチャ。タイプをパースできるようにした。そろそろwikipediaじゃなくてIEEEの仕様書読むかと思ってダウンロードした。最初は200ページで意外と少ねえな?と思ったらそれは追加分で、実際は7000ページあった。

Rustのモジュールシステムはまだ奇怪な印象が拭えない。#[derive(Debug, PartialEq)] とかは便利だな。テストはまずビルトインなのが嬉しい。as がマジのキャストなのはTypeScriptと感覚が違う。というかこれはTSの方が変なんだろうけど。

自宅のネットワークをパケットキャプチャして見てみると色々発見がある。ときどき送られてくるベンダ不明のMACからのフレームはスマホとPCを連携させるKDEConnectのpingだったし、ときどき送っているIPv6のマルチキャストは近隣探索のようだった。

nanacoをアプリ上で作ってみたがチャージに使えるクレジットカードが専用のやつだけでまたこのパターンかよ…と幻滅。また嫌いになりました。

20250425 チーズバーガー丼

項目 内容 得点 換算点
睡眠時間 3時間30分 0 0.0/13.0
起床 8:31 74 5.9/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 0色カバー 0 0.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 70点, discipline: 70点 70 16.8/24.0
ジム 休養日 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 45 4.0/9.0
総合 1日の総合評価 - 39

↑結構いろいろ改修した(させた)。今回はGemini2.5Pro。小規模アプリケーションだとめっちゃ賢いよ。ちゃんと.clinerulesに従うしpackage.jsonのコマンドも読める。まあコスト的にはハイエンド側だからね。コメントが過剰気味なのは変わってない。そう言えばYouTubeのある英語話者がジェミナイって読んでたけど、本人(?)に聞いたら発音はジェミニって言ってたな。


(世代がバレる)

夜眠れず、眠れないことにイラついて開き直って5時頃まで起きてた。健康も精神も全てが破滅している。

友人からのタレコミで松屋の新メニューチーズバーガー丼を食べた。美味いかまずいか以前に「普通にパンでバーガーにすれば良いのでは…?」という疑問が湧くほどには単にチーズバーガー。味の評価は米に酸味を合わせることをどう思うか次第。僕は若干懐疑(しかし改めて考えてみると酢飯・ケチャップライス・ケバブ・ドリア等は違和感なく食べてはいるな…)。シンプルに肉がデカいのは満足感がある。

休みが多い期間に入る。と言ってもカレンダー通りだが、憂鬱だ。休みは退屈で、休みを退屈にしてしまう自分の至らなさを思い知るのは辛いからだ。

基本的に僕はポイントカードアンチなのだが、ここに住み始めて結構長く、そろそろ近所のスーパーで使えるカードなら作ってもいいかなという気分になってきた。しかし僕は基本的にデジタル国粋主義者なので、GAFAにピンハネさせないでポイントカードを活用するためにはどういう方法がいいかなと考えている。

20250423 MicroStar International

項目 内容 得点
睡眠時間 5時間9分 26
起床 6:41 100
散歩 実施・ゴミ拾いなし・犬遭遇0匹 100
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 80点, discipline: 60点 70
ジム 有酸素+筋トレ 100
勉強会 参加 100
個人開発 実施 100
あすけん - 72
総合 1日の総合評価 81

犬遭遇で荒稼ぎ、ズルいので廃止します。

眠りはあまり良くない。早期覚醒が早起きとして点数化されるのはバグっぽいけど睡眠時間の方が重みがかなり大きいので許して。昼間もあまり調子は良くなかった。春の雨、若干寒いような、でも油断すると蒸し暑いような気温だ。

ジムで腹筋をやっていたら鋭い痛みが走った。くしゃみをするととても痛い。笑わせないでください。

個人開発はパケットキャプチャ。MACアドレスをパースして表示できるようになり、ベンダーを調べて遊んでいた。マザボ側がMicro-Star(MSIってMicroStar Internationalだったゆんか!?)、ルータ(イーサネットのレイヤーはルータって言わないのかも?マサカリ回避)側はHUMAX。JCOMのやつ。

この前のprismaでgroupByに対してサブクエリで良くない?と友人に言われ、なるほどな〜と思った。ちなみに現状は2つのクエリに分けてサブクエリと同等のことをしている。サブクエリ化するとトランザクションになるしオーバーヘッドが小さくなるが、メモリの使用量が増える。あとテーブル名が単数形なのは気持ち悪いとも言われたが、それは後の祭りだ。

米を炊いて冷凍した。カブのサラダ(切っただけ)もまだ大量にある。春なのでカブ。

20250422 フロントエンドDDDの記事を読んで思うこと

項目 内容 得点
睡眠時間 6時間39分 86
起床 7:47 100
散歩 実施・ゴミ拾いなし・犬遭遇3匹(プープーパピ?) 130
朝食の栄養カバレッジ 3色カバー 100
体操 実施 100
労働 した・passion: 75点, discipline: 85点 80
ジム 休養日 100
勉強会 参加 100
個人開発 実施 100
あすけん - 22
総合 1日の総合評価 88

今日はよく眠れた。そのせいか労働は特に気合が入っていたというわけでもないが自然体でスムーズによく進んだ。そうそう、これが僕の本当の能力よ。

いい気分になったのでお菓子を大量に食べてしまった。すまん、あすけん女。

イーサネットフレーム

個人開発ではパケットキャプチャを進めた。久々にRustのBoxやdynのことを思い出していた。Rustはコンパイル時にあらゆるデータのサイズが決まらなくてはいけないので、関数の返り値としてトレイトを返すことは原則できない。なぜならトレイトはその実装ごとに型とサイズが違うからだ。しかしその返り値への参照を返すという作りにすれば参照のサイズは固定だから問題なく、その方法を使ってトレイトを返り値にするときに dyn traitname と書くのだ。

まあなんか書くときの感覚よりもメモリ管理のルールが優先されるのはいかにもRustだよね。

今日は生のイーサネットフレームを得るところまで成功した。 u8[] で得られたのでそのままGeminiに放り込んでみたら普通にパースできてすごい。

フロントエンドDDDの記事を読んで思うこと

そう言えば今日は フロントエンドDDD という記事を読んだ。クラスなりなんなりで豊かなデータ構造を作ってそこにドメインロジックを集約するという考え方はとても良く、業界でも重厚なフロント作っている方だと自認している私としてもぜひ見習いたい考え方だと思った。

一方でこの記事が改めて注目を集めるほどに珍しいのは、フロントエンドの世界はどうしてもバックエンドからの通信でシリアライズされてメソッドが消えたり、Reactベースの世界観になるとクラスの差分検出がめんどいというところもあったりする。『コア価値であるロジックがフロントエンドの技術変遷の影響を受けすぎない』で述べられていることを裏返せば、通信やフレームワークの事情先行で作っていくとプリミティブ中心に薄く薄く…ということになりがち。そういうところを上手く分離して丁寧に構築する作り方をしてもなおメリットが上回るような重いものを作っていて、難なくそれを扱えるチームの熟練度があってこそかなあと思う。

関連記事: https://panda-program.com/posts/clean-architecture-and-frontend

『生成AIの作業領域との分離』という切り口は考えたことがなかったが確かにその通りだ。賢い。

20250421 もう一人のボク

項目 内容 得点
睡眠時間 5時間0分 20
起床 6:30 100
散歩 ノー 0
朝食の栄養カバレッジ 3色カバー 100
体操 ノー 0
労働 した・passion: 75点, discipline: 80点 78
ジム 有酸素 100
勉強会 ノー 0
個人開発 実施 100
あすけん - 64
総合 1日の総合評価 59

入眠困難・眠い浅い・悪夢の三重苦。一応早起きした(してしまった)がその後も半覚醒でボーッとしていたのでゴミを捨てそこねた。

昼食は日高屋のW餃子定食。いつもながらあんまり美味しくない。なんならいつもあんまり美味しくなさすぎて思ったより美味しいまである。あすけんに入力するときキムチか唐揚げか選べるようにしてほしい。

神の気温。むしろ適温に近すぎるせいで日に当たると暑いし風が吹くと寒い。フィードバック処理なら平滑化を入れないと高速で服を着たり脱いだりし始めて他の行動ができなくなる。

最近は睡眠の不調を反映してか頭の動きが悪い。とっさに単語が出てこなかったり、複雑な仕組みをイメージするのに時間がかかったりする。元気もあまりない。年齢もあるだろうが、それよりも体調による短期的変動のほうがずっと大きい。

ふと思い立って自分の全ツイートと全日記をNotebookLMに突っ込んでみた。全然面白くなくて、あれこれ質問しても自分がもう知ってることを自分よりも曖昧で不正確な文章で返答してくるだけだった。