Pixel Pedals of Tomakomai

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

北海道へ飛行機輪行

実家の都合で2泊3日で北海道に帰ったのだが、天気を見ると調度うまい具合に晴れの予報だったので、思い切って ブロンプトン を飛行機で輪行して持っていった。 羽田空港 羽田空港の第二ターミナルから飛行機に乗ったのだが、第二ターミナルへ自走で行くの…

traitのaliasを作る ~ associated typeを添えて

Rust には整数の primitive 型が多数あるが、どの型でもよしなに計算してくれる関数を書きたくなる。四則演算子を表す trait はあるのだが、細かく分かれているので指定するのが大変である。 use std::fmt::Display; use std::ops::{AddAssign, Mul, MulAssi…

今日は YAPC::Kyoto 2023 の日です

昨日 に引き続き、今日は Perl 神社 に来ていますので、自分用にメモを残しておきます。 オープニング YAPC Kyoto 成功祈願の様子の動画 開発成就、成果達成! YAPC Kyoto 2020 年から3年ぶりに焼き直し Reboot 蓋付きペットボトル、会場配布のもの、以外は…

今日は YAPC::Kyoto 2023 前日祭の日です

土俵に来た ので、自分用のメモを残しておきます。 オープニング 3 年ぶりのオフライン開催 今日は他の部屋で別のイベント ( 新卒説明会、学会 ) をやっているので、お静かに CoC 遵守 困ったら yapc-kyoto-2020-core@googlegroups.com へ

Tokyo Cabinetのデータベースタイプの誤り

Fundamental Specifications of Tokyo Cabinet Version 1 (Japanese) データベースタイプ ハッシュ表(0x01)かB+木(0x02)か固定長(0x03)かテーブル(0x04) ドキュメントのこの記述、間違えている。 tcutil.h に、 enum { /* enumeration for database …

Redis::Fastのコードリーディングのメモ

Redis::Fast のコードをちょろっと読んだので、自分用のメモ。 hiredis 側には adapters/poll.h というものが用意されているが、自前実装している wait_all_responses と wait_one_response はまったく同じ実装である wait_*_responses を呼んだときのみ red…

父が亡くなった

1 月 11 日に父が 69 歳で亡くなった。 2020 年 8 月 3 日に動脈瘤が破裂して救急搬送され、 2021 年 10 月 17 日に再度破裂して再手術、そして、三度動脈瘤が大きくなったため年始から手術に臨んでいたのだが、難度の高い手術で予定を大幅に上回る 15 時間…

2022年に買ってよかったもの

結論から言うと、 brompton である。 今年の 2 月末に買ったもの だが、今でも使い続けている。 以下のグラフを見て欲しい。 2014 年から何をやっても下がらなかった体重が、コロナ禍で最盛期 77Kg まで上昇したが、 brompton を買っただけであっという間に …

古いrustを新しいMacで動かす

全部 https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/.E2.9C.94.20How.20can.20I.20fix.20Rust.201.2E53.2E0.20or.20earlier.20to.20run.20on.20macOS.2012.2E6.3F/near/299263887 に書いてあった。 一応 TL;DR のためにま…

joinクイズの答え

joinクイズ の解答と解説です。 joinクイズ 第1問の答え perl -E 'say join "0" .. "9"' join の関数プロトタイプを見ると、以下のようになっています。 $ perl -E 'say prototype \&CORE::join' $@ よって、第一引数はスカラコンテキストで評価されます。 …

joinクイズ

このエントリは Perl Advent Calendar 2022 への参加エントリです。 joinクイズ 第1問 以下のコードを実行すると、何が表示されるでしょう? 3 つの中から正しい物を選んで下さい。 $ perl -E 'say join "0" .. "9"' 何も表示されない 0123456789 1020304050…

自転車を買った

電動自転車を10年使っていたのだが、子供が小学生に上がるのに合わせて自転車を買うことにした。 今まで乗っていたのは YAMAHA の PAS 。今の家に引っ越してきたタイミングで、駅までの道が上り坂だったために、高いなあと思いつつ購入したもの。 YAMAHA PAS…

小数第四位までの小数を10000倍して整数に直せるのか

数値が小数第四位まで与えられるとする。例えば、 1234.5678 のような形式である。 それらの数値を使って計算をしたいのだが、何も考えないと計算機上ではこれらの数値は double 型などで保持され、誤差が発生することは有名だろう。 >>> 1001.0000 * 1.1000…

Disco Elysium をクリアした

store.steampowered.com 海外でめちゃくちゃ評判のいい Disco Elysium をクリアした。春に日本語訳される予定だが、英語でゲームをプレイする練習のためにそれを待たずしてクリアした。手元の単語帳によると、クリアまでに調べた単語数は 2,400 語。テキスト…

docker historyがmissingになる

ふと、 docker build をして docker history を実行したら、中間イメージが <missing> と表示されていて、あれ?となった。 $ docker history 790538589d39 IMAGE CREATED CREATED BY SIZE COMMENT 790538589d39 2 minutes ago CMD ["python" "-c" "print(\"OKay\")"]</missing>…

謹賀新年

明けましておめでとうございます。本年もよろしくお願い致します。 去年の同タイトルのエントリを見ると、 2021 年って果たして何をやったのだっけという気分になる。近況だけ記しておくと、最近は英語に興味が向いていて、 スピークバディ と climb 、 ELSA…

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

複数の条件をすべて満たすときだけ、処理を継続したいということはよくあると思う。例えば以下のようなコード。 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 一択なのでこの実装を使っている人は…

謹賀新年

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

cargo test --jobs N -- --test-threads=M

redis-rs の cluster のテストが何度やっても通らなくてハマった。ただし、テスト名を指定して一個ずつであれば成功する。該当するテストは以下。 redis-rs/test_cluster.rs at bd8dc731ded564329d74717dfacc5cce748d891f · mitsuhiko/redis-rs · GitHub こ…

Haskellの古いmkSocketの引数のfamily

Linuxネットワークプログラミングの勉強をきちんとしましょうということなんだけど、とりあえず調べたことをメモっておく。 Haskell に mkSocket という関数がある。 https://hackage.haskell.org/package/network-3.1.2.0/docs/Network-Socket.html#v:mkSoc…

Rustでdocker build時に依存ライブラリの再ビルドを避ける

Rust で書かれたアプリをビルドするための docker image は以下で公開されている。 hub.docker.com しかし、ここに出ているように COPY . . なんてやっていると、 src/main.rs を触るだけで毎回 cargo install 時に依存するライブラリをすべてダウンロードし…

&Tがそのまま&dyn Traitとして使えるわけではない

トレイトオブジェクトを返す次の関数 f はコンパイルできる。 trait X {} fn f(x: &dyn X) -> &dyn X { x } ところが、次のように書くとコンパイルできない。 fn f<T: X + ?Sized>(x: &T) -> &dyn X { x } Compiling playground v0.0.1 (/playground) error[E0277]: the siz</t:>…