mex

帰郷話がいよいよ迫ってきている。関東へ来てからちょうど10年経つ。最近ようやく生活が安定してきたところだったので、ちょっと残念なのだけれど、父親が亡くなってからはだいぶ覚悟はしていた。まだまだしっかりしているようだけど、実家に母一人なのは心配でもある。
仕事は辞めない。フルリモートになったのでどこにいても問題なく働くことができる。一番の変化は友人関係。地元に残っている友達はほとんどいない。セッションはもう不可能だと思う。リモートでやれないこともないけれどドラムは無理だろうな。まぁ今でも季節の変わり目にやるかやらないかくらいだし、東京に遊びにくればいいかなと思いました。沖縄で場所を探したり、一緒にセッションできる人を探す予定は今のところない。
今これを聴いています。めちゃくちゃ気持ちがいい。

最近やや忙しい。あんまりダラついているよりはいいとは思うけど少し疲れを感じることがある。書きたいことがたくさんあったような気がするけど、いま一つも思い出せないのでとりあえず最近聴いてよかったアルバムを載せておきます。
Noël Akchoté(ノエル・アクショテ)のアルバム。これはJohn Cageの曲をやっているらしく他のアルバムと比べるとメロディアスで素朴な印象。知ったようなことを書きましたが、他のアルバム2、3枚くらいしか聴けてないです。
秋山徹次さんとのデュオのアルバムが好き。
時の崖でいろいろやられているa0n0さんのEP。長尺の曲が一曲だけ入っています。地元にいたころ近くに軍用飛行場があって、国道を自転車で走っていると軍用機がすげー音立てて頭上を通り過ぎていったのを思い出した。昔語りをしてみました。いかがでしたか。
ryoji ikeaのアルバム。ryoji ikedaではないことに注意。フランスのパリ在住ってなってるけど関係はあるんでしょうか。コミカルでトリッキーな感じが好きでこの軽さというかユルさに癒されます。ジャケとかアー写もとてもよい。
本当はもっと聴いていたんですが、ConvergeとかAi Asoとか、なんか印象に残ったのを挙げました。俺もアルバム作ろうかな。

気づけばもう9月も終わり。2021年も残すところあと3ヶ月程度で早い。
ISRで更新されなくなっていたのでテスト

当ブログのデザインを変更しました。tailwindcssなるcssユーティリティフレームワークをつかいましたが、すでにもう別のを使いたくなっている。多分次はemotion。私はこのブログを作るためにブログを書いています。
あともうそろそろこの /log をなんとかしないといけない。あまりにもコンテンツ量が多すぎてダークモード切り替えやコンポーネント単位のフェイドインがカタつく。多分android端末とかだともっと酷いと思うので次はページネイションを実装します。あと日毎にパーマネントなページあっていい感じがした。ビルド時間めっちゃ長くなりそうですが、まぁ工夫すればなんとでもなりそう。
というかmexって何...。

最近はとても忙しい。仕事にしても家庭にしてもやりたいこととやらないといけないことがそこそこあって、双方のバランスに悩んでいる。もっと厳しく時間を管理してキビキビやれるといいのだけど、弛緩して過ごしてしまうたちなのでなかなかに難しいし、頑張りすぎると成果をもとめだすのでそこそこにしないとストレスになってしまう。ストレスはできるだけ避けた方がいい。これは新卒で入った会社を辞めたときに学んだ。
緊急事態宣言が来週いっぱいで解除される。正確には28日に解除するかどうか判断するらしい。ただ、蒲田では個人経営の飲み屋はもうほとんどアルコールを提供しているし20時以降も気にせず営業していて、客の方もマスクを外し歓談しつつビールを飲んだりしているのが店の外から伺える。緊急事態宣言はもうみんなどうでもよくなってる。
ややご近所に今年四月に開業した居酒屋がある。多分その店は協力金が受け取れないのか、開店当初からアルコールの通常提供しつつ午前二時まで営業していて、寝しなに歓声奇声が響いてくる。ちょっとうるさいけれど寝てしまえるので、一昨年もきっとこんなもんだったと思う。
このアルバムかなりいいです。中でも一番好きな曲。

最近はいろんな人のインタビューや批評を読むようにしている。ユリイカの大友良英特集を買ったりエレキングのジムオルーク完全読本を読んだり。音楽の向き合い方は人それぞれでとても興味深いです。

ハードオフ小田栄、マルチトラックレコーダーとドラム用のマイク探しに行ったけどない。楽器とか機材のスペースもそんなにひろくない。ギターとギターケースとアンプが多い。そんなに詳しくないけど、中古機材販売の主戦場はもうメルカリとかなんだろうなと思いました。もしくはもっと専門で扱ってるとこいったほうがいいのかも。

午前4時、眠れないので起きている。久々に日記でも書こうかと思ったが脳は全然冴えていないので、何も思いつかない。仕事でもします。
 

divとspanは同じだ!という記事だがコメントで死ぬほど叩かれている。div要素はデフォルトでdisplay:block だが、これはブラウザによって与えられたもので初期化すると display:inline 。なのでdivとspanは同じです。みたいな主張です。ふーんという感じなんですが。これはフェイクニュースだよクソったれみたいなのがコメントに並んでいたので一部抜粋していきます。
そもそもhtmlタグはスタイルを示すものではない。
HTML Living Standardを改めて眺めて勉強不足を痛感しました。外観に関する記述が一切ない。つまり h1要素がh2要素より小さいpxで表示されてもHTML Standardの仕様に違反していない。
なのでHTMLにおけるブロック/インラインは、cssの display:block 、display:inline といったdisplayの状態とは意味合いが異なる。
htmlタグはスタイルを定義しないとあるのでこちらもなるほどという感じ。あとHTML Living Standardではブロック/インラインって言葉はでてこず、これらはそもそもcssに文脈があるようです。HTML Living Standardにはフローコンテンツ/フレージングコンテンツといった定義がこの辺がcssの仕様の基礎になっていそうとは思ったけどちゃんと調べていない。
うーむこういうの勉強不足が如実にでる。わからないことがあったらHTML Living Standardをちゃんと読もう。

父が亡くなったので沖縄に帰省していた。葬儀、告別式、初七日、繰り上げ法要で四十九日まで終わり、東京に戻るために那覇空港に来ている。一応コロナウィルス禍での移動なので那覇空港で抗原検査を受けたのだが、そのために搭乗の三時間前から空港にいる。
急だったせいかあまり実父が亡くなった実感はない。離れて暮らしていた期間が長いからかも知れない。自分は中学校卒業してからは寮だったり一人暮らしだったりで実家でまともに暮らしていない。といってもコロナウィルス流行前は盆と正月は帰省していたので普通の社会人はこんなもんではと思う。もっと話しておけばよかったとか、もっと顔を見せておけばよかったとかそういう後悔はあんまりない。悲しみもそれほど深くはない。今のところは。自分が子供をもったらまた別の感情が生まれてくるのかも知れないけどたらればの話なのでなんでもいい。まぁもう少ししたら悲しくなるかもだし無理に悲しむこともないかと思っている。
遺影をiphoneのカメラで撮影したら、Googleフォトが勝手に3Dやらコラージュやらを提案してきたので笑ってしまった。そういうのじゃないから。

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

pipeline-operatorがどうなってるのか気になり、そのままtc39のproposalsを見ていた。pipeline-operatorは2018に提案されてまだstage1だからもう仕様に入るのはもう少し先の話だと思う。
新しく採択されたのを眺める。Promise.anyももう入ってくるらしい。
どういうシーンで使えるのかちょっと調べる
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とコンポーネントまとめみたいな感じ。
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ってこんなにあったんだ。
合成イベント (SyntheticEvent) - React
このリファレンスガイドでは、React のイベントシステムの一部を構成する SyntheticEvent(合成イベント)ラッパについて説明します。詳細については、 イベント処理 ガイドを参照してください。 イベントハンドラには、 SyntheticEvent のインスタンスが渡されます。これはブラウザのネイティブイベントに対するクロスブラウザ版のラッパです。 stopPropagation() と preventDefault() を含む、ブラウザのネイティブイベントと同じインターフェイスを持ちつつ、ブラウザ間で同じ挙動をするようになっています。 何らかの理由で実際のブラウザイベントが必要な場合は、単に nativeEvent 属性を使用するだけで取得できます。合成イベントはブラウザのネイティブイベントとは別物であり、直接の対応があるわけでもありません。例えば onMouseLeave イベントの場合、 event.nativeEvent は mouseout イベントになっています。個々の対応については公開 API の範疇ではなく、常に変わる可能性があります。すべての SyntheticEvent オブジェクトは以下の属性を持っています。 補足 v17 以降、 SyntheticEvent は プーリングされなくなったため、 e.persist() は何も行わなくなります。 補足 v0.14 以降、イベントハンドラから false を返してもイベントの伝播は止まりません。代わりに、 e.stopPropagation() または e.preventDefault() を手動で呼び出す必要があります。 React は異なるブラウザ間でも一貫したプロパティを持つようにイベントを正規化します。 以下のイベントハンドラはイベント伝搬のバブリングフェーズで呼び出されます。キャプチャフェーズのイベントハンドラを登録するには、イベント名に Capture を追加します。たとえば、キャプチャフェーズでクリックイベントを処理するには onClick の代わりに onClickCapture
合成イベント (SyntheticEvent) - React
ReactのEventの仕組みはEvent delegationで実現されているらしいから、それをやめてネイティブなDOMEvent使うことでパフォーマンス向上するってことかしら。まぁ実際のコード見てみないとわからないんですが。
ReactがネイティブなDOMEventを使ってないの理由は↓。仮想DOMはそういうものなのかもしれん。preactはネイティブらしいけど。
 

ここ3ヶ月ほど、あすけんってアプリを使ってカロリーを気にしながら食事を摂っていたが、自分に合わなかったらしくてそれほど成果もでず、いちいち記録しないといけないめんどくささでストレスが溜まったのでやめた。体動かしたほうが自分としてはいいのかもしれない。本当はどっちもやったほうがいいのだろうけど。
食品まつりをよく聴いている。
あとDNA。Apple MusicにCBGBでのライブ盤があった。なつかしくてDNA on DNAも買ってしまった。シンプルでミニマムでかっこいいですね。

インゲボルク・バッハマンの「三十歳」という短編小説集を読んだ。オーストリアの作家らしいが自分はとくにオーストリア文学に興味があったわけではない。今年三十歳になり、三十歳っぽい本ないかなーと思って読んだ。アマゾンへのリンクを貼っていますが、実際は大田区馬込図書館で借りました。
もともとバッハマンは詩人だったらしく、ストーリを表現するというよりも風景を描写するだけみたいな文章が多い。そこまで詩に詳しくないのでこれが詩人だったためなのかはわからない。一人称、二人称、三人称が混在する作品や、登場人物の説明がまったくない作品があったりで、なんのことやらわからないまま読み終えてしまう人もいそう。
正直、表題作の「三十歳」は退屈だったけど、「すべて」、「人殺しと狂人たちのなかで」、「ゴモラへの一歩」はとても面白かった。とくに「すべて」は父親となった人やこれからなるであろう人は読んでみるといいかもしれない。
バッハマンに興味をもったので他の作品も読んでみようと思う。ちなみに一番有名なのはラブレターらしい。

昨日のエラーについて根本的な原因はわからんけども直接の原因と回避策はわかった。別のissueとQiita記事がヒントになった。
ページ遷移の際、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") );
対策を施したコード
検証はここ終わりです。なぜなら今朝になって元のコードでもテストが落ちなくなったからです。レスポンスの遅延か?また発生したらまとめます。
 

そういえばNotion APIが公開されていた。このブログではNotion内のコンテンツを取得するのにsplitbee社が作った非公式なAPIを使っている。まぁもともとNotionのAPIをこっそり叩く方法はみんな知っていたし、notion-blogとかもそういう類だったと思う。
さらに言えばsplitbeeは上述のAPIと組み合わせてreact-notionという簡単にNotionっぽく作れちゃうreact componentを提供しているので、公式のAPIを使うには自前でデザインとか色々凝ってやったるでっていうモチベーションが必要になってくるのだった。
 
話を変えます。
最近はすこぶる仕事が捗っている。どんどんとタスクを消化している。緊急な仕事をやりつつ重要な仕事も進めている。優秀ですね。理由はわかっていてあんまりおおっぴらに書けないですが、まぁとにかくめちゃくちゃ気持ちよく仕事ができています。お仕事楽しい。
そしてここ2、3日、屁がすごいでる。なんかの病気か?本当に尋常じゃなくてずっとブーブーやってます。リモートワークで本当によかった。