Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

2021-01-01から1年間の記事一覧

条件チェックの順の最適化

複数の条件をすべて満たすときだけ、処理を継続したいということはよくあると思う。例えば以下のようなコード。 fn some_function(x: &Hoge) { if !check0(x) { return; } if !check1(x) { return; } if !check2(x) { return; } if !check3(x) { return; } /…

TypeScriptの分配条件型

最近オライリーのTypeScript本を読んでいるが、型システムが頭がおかしくて(褒めてる)とても面白い。 www.oreilly.co.jp TypeScriptでは、こんな感じの型レベル関数が定義できる。以下の Extract2 は T のうち、 U であるものを展開するというものである。…

ECS について調べたこと

ECS とは Entity Component System のこと。 Entity component system - Wikipedia wikipedia の歴史によれば、 2002 年の Scott Bilas の GDC2002 での講演が起源のようだ。 https://www.gamedevs.org/uploads/data-driven-game-object-system.pdf 元々は、…

aiboの良くない点

aibo を手放すことにした。「最新の技術を集めて作ったオープンな電子ガジェット」を期待して買ったが、実態は「ITに疎い富裕層向けのインテリア」だったので、正直言って とても不満な商品 である。 aibo の良い点は色んな所で吹聴されているので、良くない…

NLLとDropトレイト

NLL (non-lexical lifetimes) について誤解していた。 次のコードは NLL のおかげで、 _y に代入した &x が次の行以降使われていないため、 &mut で可変参照を生成できる。 use anyhow::Result; struct X<'a> (&'a i32); fn main() -> Result<()> { let mut …

macOS Big Surでマウスポインタと違うところがクリックされる問題の解消

ゴミ箱 を macOS Big Sur にアップグレードをしたら、クリックした時にマウスカーソルが指している場所と全然違う部分がクリックされるようになって、詰みかけた。 guest アカウントでログインすると発生しないので、ハードウェア的な問題ではなさそう。 30 …

ROG Strix SCAR 15 G533 を買った

rog.asus.com 見ての通り、完全にゲーミングノートである。去年 Surface Book 3 を買ったばかり なので買う必要はまったくなかったのだが、コロナ禍のお陰で PC を触る時間が極端に増えたのと、 PS5 も switch のマリオレッド×ブルー セットも買い逃してつい…

CellとRefCell

Cell と RefCell はどちらも「内側のミュータビリティ」を実現するものだが、実現方法が違う。 RefCell については、ランタイムでボローチェックしていることはよく知られている(と思う)。 let ref_cell = RefCell::new(20i32); println!("ref_cell (1): {…

Data.Vaultの非GHC実装

ふと、 Data.Vault ってどうやって実装してるんだろと中身を覗いていたら、なんかすごいものを見つけた。 vault/IORef.hs at 39cf64b47c24b83c24924d47d2385f8213a3f322 · HeinrichApfelmus/vault · GitHub 今はほぼ GHC 一択なのでこの実装を使っている人は…

謹賀新年

明けましておめでとうございます。本年もよろしくお願い致します。 新型コロナで在宅勤務が始まってからは、自然と育児にコミットする時間が激増していて、まあ、間近で子供の成長を見られるのは他では体験できないとても幸せなことではあるのですが、一方で…