Home / Nov 2023


Yoshiya@kt3kNov 22, 2023

今年1の渾身の fix https://github.com/denoland/deno/pull/21297

node-fetchgunzip streamfs.createWriteStream を組み合わせたら、ダウンロードした prisma の schema-engine.exe が壊れていたよ、というところから始まって、蓋を開けてみたら vendor して使ってた readable-stream がそもそもバグっていたという話だった。

readable-stream は (具体的な方法はよく分からないけど) 基本的には Node.js 本体の stream 実装をミラーしているので、要は Node.js 本体の Writable に普通に根本的なバグがあった。https://github.com/nodejs/node/issues/46765

そのバグ自体は発見3日後には直されている https://github.com/nodejs/node/pull/46818

これだけ長く使われていてテストも大量に書かれている Node.js の stream に今更バグがあるとは思わなかったので、ここに辿り着く前にあらゆる別の箇所を調査しまくって、可能性をどんどん消していった。犯人の候補が狭くなるに従って、だんだんかなり小さな repro を作れるようになっていって「この repro が出来るということは、これでも再現できるのでは?」という分析のループが回って、気づいたら解決出来ていた。

最終的にこれで repro するということは readable-stream 自体がバグっていたのではないか? -> readable-stream のいろんなバージョンで試す -> 4.3.0 -> 4.4.0 の間で直っている事が分かる。4.3.0 と 4.4.0 の間のコミットを追うと2コミットしかない。

2コミットのうち意味がありそうなのはこっち https://github.com/nodejs/readable-stream/pull/515

Node.js のバージョンを 18.9 から 18.16 に追従したという内容のコミット。これで直るということは Node の 18.9 から 18.16 の間で同じバグ修正がされていたりするのか・・・? -> Node の lib/internal/streams の history を追う。

かなり似てる issue とそれの fix が見つかる。-> fix を試しに Deno に入れてみる -> 現象が直った 🎉

とりあえず、直し方は分かったものの、なぜこれで直るのかはいまいち分かってない。Node.js 側の issue でも、こうやったら直った/上手くいったみたいな trial and error の繰り返しで手探りで解を探しているように見える (実装の中身に対する分析がされていない) ので、おそらく誰も理解していないのではないかという気がしている。(よくみると Ben が、construct 周りで 3回も nextTick してるけど、それは意図的か? という疑問を呈している。


Yoshiya@kt3kNov 20, 2023

いよちぃの実家の庭でアクアの運転の練習をさせてもらった。バックが難しい。


Yoshiya@kt3kNov 15, 2023

catnose さんが運営するしずかなインターネットというサービスがローンチされた。Web Dev 界隈で結構好意的に受け入れられていそう。

マイクロブログサービスだけど、いいねとかコメントを廃して、静かにものを書けるというコンセプトのサービス。いいねとリプにはみんな疲れているので結構上手いコンセプトかもしれない。

ここ (times-kt3k) の趣旨も静かに主に自分のためにつぶやくことなので、ポリシー自体はかなり似ていて、それを誰でも使える Web サービス化したような形かな。


Yoshiya@kt3kNov 15, 2023

オフサイトで突然キッキオフされて、その後3週間ぐらいかけて集中的に作った Deno Subhosting がリリースされた http://deno.com/blog/subhosting

久しぶりにスプリント風に開発出来てなかなか楽しかった。自分は主に Dashboard のフロントエンドを担当した。

こういう突貫の作り方って上手くいくととても気持ち良いんだけど、上手くいかないと色んな軋轢を生む原因にもなるのでリスキーでもあると思っているんだけど、まあ結果うまく行ったからいいか・・・



Yoshiya@kt3kNov 10, 2023

Almost 3 years in Deno Land. It's still very challenging to work here partially because of language problem and partially because of extremely high expectations in members performance.

I tend to think a hard job is a good job. So I like this job.

My ears are much better at hearing English these days, compared to the days before Deno. I can hear people very well when I was able to focus on the speaker very well. Now the problem is that it's a bit difficult to focus long time on the speaker. It's just too tiring. But I feel it's matter of time that I make progress on that.


Yoshiya@kt3kNov 7, 2023

capsule でやってたみたいなローカルイベントハンドラベースのフレームワークもう一度ちゃんと検討したい。

SSR 部分は JSX で書けて、island に相当する部分がローカルイベントハンドラの束として定義された "component" っていう考え方のフレームワークがあったら便利だと思う。


Yoshiya@kt3kNov 2, 2023

社内 slack の DB に詳しい人たちの会話がなんかすごい