日記

今日は朝かなり早く起きたので、珍しく朝御飯を作った。 グリルで焼いた焼き魚と目玉焼き、あとは味噌汁と漬物と納豆御飯と海苔だ。 朝から大量にたべてしまったこともあって、昼飯も晩飯も特に食べなくても活動が維持できている。豪勢な朝御飯は体験がいいので明日も作っていきたいが、魚のストックを切らしてしまったので維持することができない。残念。 一人暮らしで焼き魚を食うのはコスパが悪い食事だとおもっていたのだが、1パックで4食くらい食べられることを考えると実はコスパがいいのでは?とおもった。特に塩さばは肉と違って賞味期限も長いのでしらすと同時にこれからも食べていきたい。 冬といえばブリが安くておいしい季節なので魚を楽しむという意味ではこれからの季節が楽しみである。 魚で思い出したのだが、最近はメガ盛りみたいな感じで安くてボリュームディスカウントが効いてるこま切れ肉を買うのをやめた。 というのも魚を食べるようになってから魚と肉、どっちも消費するのが厳しいので肉の量を減らしてグレードを上げたのだ。 肉は国産の豚しゃぶを買うようになったが正直冷しゃぶばっか作っていて、あまり違いはわかっていない。できれば肉の質で変わるような料理を作って試してみたいところだ。 今日は早朝からひどく冷えた朝で、常にホットな飲み物や味噌汁を飲みながら仕事をしていた。この時期からこの寒さだと冬になったらどんな寒さになってしまうのだろう。 冬という季節は花粉がなく、厚着をしていれば外は歩きやすいし汗もかかない快適な季節だ。しかし、寒さというのは人間の不安を煽る成分があり、夜になると気分が下振れしやすいのが困りポイントだ。

Posted

日記

今日は朝まで会社で飲んでいた。会社のベッドが壊れていたので、始発で家に帰りそのまま寝ていて17時くらいに起きた。 総じてなんもしていない。飯を作ろうとおもったが面倒なので海鮮丼をデリバリーしてもらって食べた。 自作Zshプラグイン・CLIツールの使用状況報告 - 茅の下 を読んだ。 ここの筆者は友人で、数々の自作ツールを作って自分で作業環境を整えている同士だ。 この記事はそんな数々の自作ツールをどういうモチベーションがあって作ったのか、や実際使ってみてどうだったのかというのがまとまっている。 僕も自作したツールを日常生活でかなりの頻度で使っており、その利用状況をまとめてもいいかなとおもった。が、しかし最近はリポジトリすら作らず、$PATHを通した ~/bin に書いてそのまま、みたいなツールも多くそれらを整理してpublicにしていく方が先なのでは?と考えている。 今日はゲームをしないで、のんびり過ごすかゲームをするかコードを書くかの三択で迷っている。こういうやることで迷っている時間が一番無駄なのでなるべくなくしていきたいのだが、行動ポリシーみたいなのが自分の中で定まっていないので減らすことができていない。 ダイエットはかなり進捗がよい。停滞期を完全に脱したっぽい。今週には78kg台にさしかかれそうだ。

Posted

日記

先日Amazonでゴミ箱ホルダーみたいなのを購入したのが届いた。以前まではAmazonのダンボールのゴミ箱を使っていたが、ゴミ袋が取りやすくなったりゴミ袋を付けたりしやすくなっていい感じ。 その他たまってたダンボールを片付けたりしていた。切らしていた雑巾なども補充したので生活をぼちぼちやっていきたい。 今日は久々に昼にマクドナルドを食べた。自分の料理ばっかり食べていると飯に飽きてくる節があるなあと感じたので、月1くらいで出前を頼んで家で食べたいなとおもった。 最近季節の変わり目だからか朝起きるのがかなりきつい。業務に支障が出てきているので、pavrokをまた購入してもいいかもなあと考えている。 明日は家の契約の更新処理と様々な支払いのために外出したいなと考えている

Posted

日記

夜に東京で予定があったので、オフィスに出社して仕事していた。 深夜にやったツイートがなんかすごい伸びてたのでミュートにした。基本的にTweetがたくさんfavられることとかないので、初めてミュートにする機能を使った。 仕事は自作したデータ構造をReactコンポーネントのレンダリングサイクルと接続するためのAPIを書いたり、説明用のドキュメントを書いていたりしていた。 自作したMutableなオブジェクトの変更に対してReactコンポーネントを接続する時に次のようなコードをよく書く。 import {useState, useEffect} from 'react' interface Collection<T> = { updateSnapshot(value: T): void getSnapshot(): T subscribe(callback: () => void): () => void } const useCollection = <T>(observableCollection: Collection<T>): T = (observableCollection) => { const [state, updateState] = observableCollection.getSnapshot() useEffect(() => { return observableCollection.subscribe(() => { updateState(observableCollection.getSnapshot()) }) }, [observableCollection]) return state } ReactコンポーネントはupdateStateが呼び出される度にuseStateが書かれているコンポーネントを再レンダリングするという特徴を利用して、自前で定義したMutableなCollectionに変更がある度に、useCollectionを呼び出したコンポーネントが再レンダリングさせる。ということを実現している。 これにselectorやmemo化を加えた概念がReact17までのStoreライブラリとReactを繋ぐhooksの実装としてメジャーだったのだが、React18から追加されるConcurrentModeと併用した時に、画面が一瞬だけ前の状態を表示してしまうなどのチラつきが発生してしまう問題を抱えている。 See. https://youtu.be/oPfSC5bQPR8?t=245 この問題を解決するためにReact18から useSyncExternalStore というカスタムフックが提供されていてこれにstoreのメソッドを食わせることでこの問題を解決できる。 職場のコードはReact17を使っているので useSyncExternalStore を使わなくても問題ないし、ReactからこのAPIがexportされていないので使えないが、将来的にReact18に移行する際に実装を変更することなく移行できるようにしたい。 そんな人向けのライブラリとして、 https://www.npmjs.com/package/use-sync-external-store が存在する。 これは古いReactバージョンで useSyncExternalStore を使うためのshimsで、React18が動いている場合は自動でそちらにfallbackしてくれる便利ライブラリだ。

Posted

近況

ブログを書くのが習慣になっていないと近況記事みたいなのでまとめていろいろ書きがち 例によってまとめて書く。 労働 やっていた、が今回のクォーターは成果が芳しくなかった。 なんか単順に仕事する元気があんまりなかった。とはいえ仕事をしなければいけないのでやることはやっていたのだが、やることしかやってなかった感じだ。 最近はすっかり調子も回復してきており、自分が提案した仕様をアプリケーションに入れるためにあーでもないこーでもないみたいなコミュニケーションを頻繁にやったり、サンプル実装を書いてちゃんと動くか検証したりなどをやっている。 検証は順調であり、プロダクションリリースしたらちゃんとブログとして設計する上で考えたことを記述したいなとおもえるほどの自信作なので、これを読んでいる人間がまだいるのであれば楽しみにしていてくれ。:smile: 調子はよくなってきているが、なんか自分があまりやりたくないことに対する気合みたいなのがまだ回復してない気がするので、この辺りの熱意も回復するといいなーとおもいつつがんばる。 ちなみに仕事で元気がなかったのは、大規模な作り直しを終えてしまったから。燃え尽き症候群である 趣味 ゲームしていたり、TypeScriptで パーサーコンビネーター を書いていたりした。 こいつも完全なPrivateなプロジェクトで既に使っていて、使いながら機能を拡張していってる。型で困っていたところこりーさんに助けてもらったりして、だいぶ使いやすい感じのInterfaceになってきてよい。 このプロジェクトを作る上でランタイムとしてdenoをはじめて使ってみた。 denoモジュールからparser-combinatorを呼び出す時は、GitHubのReleasesからrawなmod.tsをimportして使えるのでパッケージマネージャーがなくてもライブラリを動かせて大変便利だなあっておもった。 また、dnt を使ってnpm向けのartifactを出力してpublishすることでNode.jsのスタックでも使うことができる点もよい。 dntを使ってビルドするのはNode.js + TypeScript でnpm packageを作るのに比べてかなり楽だ。denoを使うことで何もしなくてもTypeScriptの型チェック環境やテスト環境が提供されるし、rollupを使ってバンドルする時もd.tsを出力するために設定を自炊する必要がない。 また、Denoのstdに入っている assertEquals は jestと違い 型定義が <T>(actual: T, expected: T, msg?: string) ⇒ void なのもよくて、この型定義だとactualで入力した値のexpectedを手書きする時に補完が効くので,全てがanyになるjestの toStrictEquals などに比べてテストを書く時の体験がよい。 今後はTypeScript用のライブラリを自炊する必要がある場合はdeno + dntを使っていこうとおもった。 ErgoDash EZ 8月の末に長く使っていた自作キーボードが壊れてしまって、直そうとしたのだがスプリングピンヘッダが存在しなくて、なくなく購入した。 届いてみるとキー配列は一瞬で手に馴染むし親指周りで使えるキーは増えるしでいい買い物だった。 ダイエット 油断したら87kgまで増えてたので再開した。今回は白米は完全にカットせず量を少量にして、野菜や肉はちゃんと食べる感じでやっている。 糖質制限ダイエットをやるとまじで昼間仕事にならないほど脳味噌が死んでしまうので、ちゃんと仕事になるくらいまでの糖質は取るようにした。 とはいえこれだけだと絶対に痩せないので週3くらいで腹筋をやっている。 2ヶ月で87kgから80kgまで体重が落ちたのでこのままやっていきたい。とはいえ最近79.9kgから全然体重が下がらないのだが… 最近の悩みは毎週金曜出社して外食したり酒を飲んだりしているのだが、一週間のダイエット成果がこれで撃ち消されてる感じがする点だ。出社をやめれば解決するのだが、このイベント自体は結構好きなのでなるべくそういうことはしたくない……… 自炊 一時期ダレてやっていなかったが、やっている。最近は料理を作ることが日常になってしまい、一々写真とったりしなくなってしまった。 最近では豚の冷しゃぶサラダやポトフなど、ヘルシーなメニューがメインに作ってたべている。 昨日は豚肉を食べる気合がなかったので、蒸し鶏をキャベツと人参と一緒にフライパンで蒸して作った。優しい味がしてよかった

Posted