mex

父が亡くなったので沖縄に帰省していた。葬儀、告別式、初七日、繰り上げ法要で四十九日まで終わり、東京に戻るために那覇空港に来ている。一応コロナウィルス禍での移動なので那覇空港で抗原検査を受けたのだが、そのために搭乗の三時間前から空港にいる。

急だったせいかあまり実父が亡くなった実感はない。離れて暮らしていた期間が長いからかも知れない。自分は中学校卒業してからは寮だったり一人暮らしだったりで実家でまともに暮らしていない。といってもコロナウィルス流行前は盆と正月は帰省していたので普通の社会人はこんなもんではと思う。もっと話しておけばよかったとか、もっと顔を見せておけばよかったとかそういう後悔はあんまりない。悲しみもそれほど深くはない。今のところは。自分が子供をもったらまた別の感情が生まれてくるのかも知れないけどたらればの話なのでなんでもいい。まぁもう少ししたら悲しくなるかもだし無理に悲しむこともないかと思っている。

遺影をiphoneのカメラで撮影したら、Googleフォトが勝手に3Dやらコラージュやらを提案してきたので笑ってしまった。そういうのじゃないから。

<-

青空文庫でちらっと古事記を読んで興味ね〜となった。なんでだろうな。

<-

pipeline-operatorがどうなってるのか気になり、そのままtc39のproposalsを見ていた。pipeline-operatorは2018に提案されてまだstage1だからもう仕様に入るのはもう少し先の話だと思う。

loading

新しく採択されたのを眺める。Promise.anyももう入ってくるらしい。

loading

どういうシーンで使えるのかちょっと調べる

loading

Promise.allSettled、かなり使いどころがありそう。

allSettled は、 all とは違い、個々が Resolve/Reject どちらになっても、最後までとにかく全て実行する。実行した結果を配列として Resolve するため、基本的に allSettled 自体は Reject しない。
したがって、 status: 'rejected' な結果だけをリトライすれば良い。完了したものを無駄にせず、効率よく簡単に実装することができるだろう。

Promise.anyはどうやって使うのかいまいちわからなかった。でもまぁ使われていくうちに誰かがかっちょいい利用シーンを見つけてくれると思う。

any は rece とは違い、 Resolve する前に Reject する Promise があっても無視し、最初にいずれかが Resolve するまで待つ。そして、全ての Promise が Reject した場合にのみ全体を Reject する。
従って、「最初に Resolve する Promise を待ちたい」という要件を満たす場合は、 any を使えばそれだけで良い。
<-

react-guiが話題になってた。なんか軽量でよく使われるhooksとコンポーネントまとめみたいな感じ。

loading
The library integrates directly with the native DOM event system (i.e., it does not use React DOM’s synthetic event system); this provides excellent flexibility and performance, as well as broad compatibility with alternative renderers.

SyntheticEventではなくてネイティブなDOMEventを使うらしい。ていうかSyntheticEventってこんなにあったんだ。

loading

ReactのEventの仕組みはEvent delegationで実現されているらしいから、それをやめてネイティブなDOMEvent使うことでパフォーマンス向上するってことかしら。まぁ実際のコード見てみないとわからないんですが。

ReactがネイティブなDOMEventを使ってないの理由は↓。仮想DOMはそういうものなのかもしれん。preactはネイティブらしいけど。

loading
 
<-

Core Web Vitalsについてあんまりちゃんと調べてこなかったので調べた。

loading

あと複数のgithubアカウントでsshするやりかた知らなかった。これを見たらいけました。

loading
 
<-

ここ3ヶ月ほど、あすけんってアプリを使ってカロリーを気にしながら食事を摂っていたが、自分に合わなかったらしくてそれほど成果もでず、いちいち記録しないといけないめんどくささでストレスが溜まったのでやめた。体動かしたほうが自分としてはいいのかもしれない。本当はどっちもやったほうがいいのだろうけど。

食品まつりをよく聴いている。

loading

あとDNA。Apple MusicにCBGBでのライブ盤があった。なつかしくてDNA on DNAも買ってしまった。シンプルでミニマムでかっこいいですね。

loading
<-

時の崖っていうレーベルを最近聴いている。今のところ月一でオムニバスのようなリミックスのような作品をだしていてかなりいいです。安部公房の作品からレーベル名をとっているのも好き。

時の崖radioというのもdiscord上でやっていて、最後のほうちょっとだけ聴いてました。

loading
loading
loading
 
<-

インゲボルク・バッハマンの「三十歳」という短編小説集を読んだ。オーストリアの作家らしいが自分はとくにオーストリア文学に興味があったわけではない。今年三十歳になり、三十歳っぽい本ないかなーと思って読んだ。アマゾンへのリンクを貼っていますが、実際は大田区馬込図書館で借りました。

loading

もともとバッハマンは詩人だったらしく、ストーリを表現するというよりも風景を描写するだけみたいな文章が多い。そこまで詩に詳しくないのでこれが詩人だったためなのかはわからない。一人称、二人称、三人称が混在する作品や、登場人物の説明がまったくない作品があったりで、なんのことやらわからないまま読み終えてしまう人もいそう。

正直、表題作の「三十歳」は退屈だったけど、「すべて」、「人殺しと狂人たちのなかで」、「ゴモラへの一歩」はとても面白かった。とくに「すべて」は父親となった人やこれからなるであろう人は読んでみるといいかもしれない。

バッハマンに興味をもったので他の作品も読んでみようと思う。ちなみに一番有名なのはラブレターらしい。

loading
<-

昨日のエラーについて根本的な原因はわからんけども直接の原因と回避策はわかった。別のissueとQiita記事がヒントになった。

loading
loading

ページ遷移の際、page.waitForSelectorを使い、次のページにしかない要素の出現を待って遷移が完了したかどうかを確認しているのだけど、このときに Protocol error (Runtime.callFunctionOn): Target closed.が発生しているようにみえた。

要は↓のような感じのコード。page.gotoだけじゃなくてclickで画面遷移する場合も同様に発生する。

await page.goto("https://......");
await page.waitForSelector("#kokonisikanaiID"); //ここでエラー

↓のようにすると Protocol error (Runtime.callFunctionOn): Target closed. は発生しなくなる。なぜこれでエラーがでなくなるのかはさっぱりだが、Promise.allで解消するところをみるとおそらく実行順序が原因なのだと思う。この辺のテストを見ても参考になりそう

await Promise.all(
	page.goto("https://......"),
	page.waitForSelector("#kokonisikanaiID")
);

検証はここ終わりです。なぜなら今朝になって元のコードでもテストが落ちなくなったからです。レスポンスの遅延か?また発生したらまとめます。

 
<-

最近悩まされているエラー。issueに解消方法書いてあるがこれではちょっと解決しなかった。

loading
<-

そういえばNotion APIが公開されていた。このブログではNotion内のコンテンツを取得するのにsplitbee社が作った非公式なAPIを使っている。まぁもともとNotionのAPIをこっそり叩く方法はみんな知っていたし、notion-blogとかもそういう類だったと思う。

loading
loading

さらに言えばsplitbeeは上述のAPIと組み合わせてreact-notionという簡単にNotionっぽく作れちゃうreact componentを提供しているので、公式のAPIを使うには自前でデザインとか色々凝ってやったるでっていうモチベーションが必要になってくるのだった。

loading
 

話を変えます。

最近はすこぶる仕事が捗っている。どんどんとタスクを消化している。緊急な仕事をやりつつ重要な仕事も進めている。優秀ですね。理由はわかっていてあんまりおおっぴらに書けないですが、まぁとにかくめちゃくちゃ気持ちよく仕事ができています。お仕事楽しい。

そしてここ2、3日、屁がすごいでる。なんかの病気か?本当に尋常じゃなくてずっとブーブーやってます。リモートワークで本当によかった。

<-

Rustの本読んでるけどトレイトの導出がさっぱり理解できないです。

 
<-

最近は電子音楽をよく聴いている。よかったやつを載せておきます。多いけどこれでも絞った感じです。Bandcampサイコー。

loading
loading
loading
loading
loading
loading
loading
loading
<-

今日で三十歳になりました。とくに感慨はないです。

二十五歳を超えてから時間の経つスピードが増しているように思ったけど、二度の転職、結婚、引越しをやっているのでそのせいかもしれない。

三十歳になる直前に電動シェーバーが壊れたので今髭が伸びまくっている。妻に縄文人みたいだねって言われた。

<-

警察は別に好きじゃないんだけど刑事ドラマは結構好き。最近は警視庁捜査一課長やってると観てしまう。熱心なファンではないので食卓についたときにやってたら観るみたいな感じ。たいてい犯人の登場シーンは見逃しているから、クライマックスで犯人がでてきても誰かわからない。だから驚きも爽快感もない。じゃあなんで観ているかというと泥臭い人海戦術でしらみつぶしに手掛かりを捜すシーンが好きだから。様式美があり、あのシーンが出てくるとああもう終わりだなと思う。あと内藤剛志が帰宅して妻とのやりとりの最中(もしくは猫の様子から)、ハッとなにか思いつくのも好き。

loading
<-

アップダウン奏法についての動画みている。こういうのちゃんと意識したことなかった。意識しろよ。近所にスタジオ見つけたので練習します。

loading

ユリイカがレイハラカミ特集をやってたので買って読んでいる。

loading

特集と関係ない「新しい動物文学の誕生」っていう記事が面白かった。大江健三郎の「飼育」、「人間の羊」を引用して、人間を動物のように表現する技法が生み出す効果について紹介している。物語を食べるっていうシリーズで赤坂憲雄って人がやってるらしい。

<-

コンビニを利用しまくっている。夕ご飯以外はコンビニで買ったものを飲み食いしていてほぼコンビニ人間になっている。マネーフォワードを見ると一日2~3回ほど利用していて一度で300~800円くらい使っていた。節約しよう。

とりあえず6月はコンビニの利用回数を減らします。タバコをやめたので抵抗がすくない。一週間くらい続けてみてどれくらい節約できたかチェックしてみます。

  • アイスコーヒやアイスティー、麦茶は作り置きしておく。
  • 朝昼晩はできるだけ作る。朝は喫茶店のモーニングでもよい。

話を変えます。

先日、ファミコン探偵倶楽部 消えた後継者 クリアしました。久々にゲームを頭からケツまでやった。すげー長く感じた。

loading

後半。登場人物が手紙を書くシーンがあるんですが、その手紙を読み上げるセリフに合わせて手紙を書く手が動いたり止まったりしてめっちゃ凝ってんなと感動しました。まぁゲームめっちゃやってる人からしたら当たり前かもしれないですが。あとシナリオも面白い。

<-

Rustの本を読んでいる。トレイトって馴染みないなぁ。

loading

以下は雑なメモ。

RustはGCを持たない。所有権、借用、ライフタイムとプログロミング言語でメモリ管理を行う。

スコープを出た途端に破棄することを言語レベルでサポートしていることです。
loading

ゼロコスト抽象化を追求、抽象化の機能を追加のコストなく使用できる(静的ディスパッチ)。

loading

関連関数は型から関数を呼ぶ形式で定義される関数のこと。

loading
<-

React Hook APIの不満について述べた記事。依存関係が変更されたかどうかを参照でしか比較しないのが不満らしい。個人的には基本型以外をhook内で扱わないようにしています。特定の関心事に集中できていればローカル変数がCustom Hook内で登場してもあまり気にならない...と思うけど、続きの記事を読んでいくにつれて何を問題としているのかよくわからなくなってきた。

loading

続きの記事

loading

正直、現状のReact Hook APIにはかなり満足していて記事で述べられている問題点に関してはあまり意識できない。ただこれは自分がプログラミングパラダイムへの理解が浅いことにあるかもしれない。のでその辺勉強しようと思います。

<-

ぼけと利他という連載を読んでいます。おもしろい。

loading
<-