2022-01
わかる。無意識にやってた
「使えなくもない」という感じ
キーリマップができなくて特定のキーが送れないとかがあってつらい
node v16.11あたりからSparkplugが有効になったっぽいんでv16.9.0とv16.13.2でwebpackのビルド速度の比較したら10%くらい改善された すごい速くなるかと思ったけど実質分岐コストをなくしてるだけだからそこまでは速くならないのかな
V8 codegenの反省(抽象操作を全部展開した結果異常な量の機械語が生成されてしまった)もあるんだろうが 界隈が「ツールチェインをRustやGoで書き換えて高速に!」みたいな盛り上がりをしているときにJavaScriptがさらに速くなる方向性に夢見てたんですが,まあそうはならんかみたいなところはあるな やはりネイティブには勝てない
とはいえフリーランチってやつは最高ですね,勝手に改善されて勝手に速くなるのはうれしい
react@0.3.0を触って過去を思う回
実は大体のコンセプトは揃っている
誕生日とかいうやつなのだが,ここ数年期末テスト期間が完全に重なるせいで何も誕生日感がない
これも今年で終わりかと思うと少し寂しいですね
困ってます,助けて!
単純に再帰型と言っても実は2種類ある
同型(変換は必要)であるか等価(変換不要)であるか
code:typescript
// equi-recursive
type Fix<A> = (x: Fix<A>) => A
// 不動点コンビネータに型が付く
type F<A,B> = (x: A) => B
const Z = <A,B>(f: (g: F<A,B>) => F<A,B>) =>
((x: Fix<F<A,B>>) => f((y: A) => x(x)(y)))((x: Fix<F<A,B>) => f((y: A) => x(x)(y)))
code:ocaml
(* iso-recursive *)
type 'a fix = Fix of ('a fix -> 'a)
(* -rectypesがあるとequi-recursiveも使える *)
type 'a fix = 'a fix -> 'a
let f x = x x (* : ('a -> 'b as 'a) -> 'b のように,推論結果としても出てくる *)
let Fix(f) = aみたいな
最近とても人には勧められないような学習方法ばかり取っていて,どうなんだという感じになっている
Next.jsやReactの実装を読むことで理解を進めて実装を書いているわけだけど,結局新たな独自フレームワークが生えることになるわけで,それはそれでどうなんだという ブログ的なものを題材にしているのはだいぶ微妙で,Metaの人間が作っているということは背景としてはFacebookでSSRをやるには 既存の仕組みではダメで
コンテンツの優先度がはっきりありそう
かつSPAとしての遷移も考えると
初回だけサーバーでやるのは厳しい
データ集約もしたい
Relayでも悪くなかったんだろうけど,ちょっと大きすぎた みたいな事情がありそうではある。Facebookありきなのでそういうサイトでしか効果を発揮しないよねというのはまあある Likely after React 18.0: Suspense for Data Fetching
- Built-in Suspense <Cache> which will likely be the primary recommended way for third-party data fetching libraries to integrate with Suspense. (For example, react-fetch uses it internally.)
これは知ってた
ちゃっかり<SuspenseList>もない
またreact@experimentalに篭ることになるのか……
とはいえMajorになるような仕様変更は不要になるわけで,hooksくらいにはスッと入ってくれるのではないか
なんか謎の勘違いをしている気がしてきた,悲しい
なんというか,クネクネしているときのどうしようもない自分が本来の自分であって,過集中で実力を発揮している自分は他人なんじゃないかという気持ちになっている
このとき,サーバー側も全てのデータを持っているわけではないので,状態変化をストリームでクライアントに通知する仕組みを組む必要がある
SSRがstreamで流れてくるってことはSuspense boundaryが開く度に新しいNEXT_DATA(的なデータ)の差分が流れてくるってことか
ちゃんとやってるはずなのにhydration errorが起きる
→Streaming HTMLでは<Suspense/>は実体(<!--$-->と<!--/$-->で囲まれた部分)を持つので<Context.Provider/>みたいな実体を持たないコンポーネントと同一と考えてると死ぬ,了解! できたぜ
https://gyazo.com/98d7b1b6a521a656fcf862de4face136
読み込み中でもカウンタが動いてる
Reactアプリケーションから見るとServer Componentsは「APIを叩くとVDOM的なやつがストリームで送られてくるやつ」であり,サーバー - クライアント間での早いタイミングでのデータの共有が必要 そもそもStreaming HTMLはDOMContentLoadedの発火をめちゃくちゃ遅くする技術であって,これを待っていたら普通に体験が最悪になってしまうというのもある そろそろデプロイするかと思ってminiflareを使っているが,2.0.0-rc.3以降でストリームがメチャクチャになるバグがあるっぽい なんかもうめちゃくちゃハックした
真の仲間は最長文字数として有用です!
「岩の重さは安心できます!」的な不安定さがあってなんかすき(日記)
すっかりZenn Scrapsと化した弊Scrapbox 普通にtopological runがあるのえらすぎるだろ
これ今見たらちゃんと実装されてて nodeLinker: pnpm ってやるとpnpmと同じ仕組みのnode_modulesができる。これだとyarn linkの挙動は最適じゃないもののyarn PnP (ローダーにフックして頑張る方) 特有の苦しみからは解放されるから、とりあえずみんなこれを使えばいいのでは
工業化MODとかいうやつが鉱石粉砕→洗浄→遠心分離→焼く(数分かかる)になって久しいの,どうしてそんなことに……感があるな
硫化水素と反応させたりして5倍精錬するガチの工業プラントを要求するやつ(Mekanism)もあったな 原神とかいうやつ何も考えずにやっていたら武器突破素材を全然集めていない状態で世界ランクが3になってしまい,完全に止まった 救済措置的に璃月で突破素材を1回分だけ交換できるけど,全然足りない ここに到達する時間を考えても素材が足りるわけがなく,エーッになった
ぼちぼちキャラ突破と育成をやるか……と思っていたところだったので
突破段階2以上だとそれぞれの属性ごとに一日一回しか取れないボス素材が必要だし,ここ超えると天賦育成でもだいぶ資源を使うので,この速度で敵のレベルが上がるとかなり困ってしまう
実はオープンワールドとソシャゲの周回って相性微妙じゃない?
__webpack_chunk_load__と__webpack_require__をモックすればreact-server-dom-webpackを使うこともできそうな気もする
Next.jsはloaderでServer Componentの中身を吹き飛ばすことで解決してた。それはそう 3日ほどで序章クリアして1章に入り,今第3幕の開始条件をクリアしている
ぴょんぴょん法器キャラ
重撃が範囲攻撃なので雑魚の掃討に便利
とはいえガイア+バーバラの配布キャラコンビを使うと安定した高火力が出せる(永遠に敵を凍らせ続ける戦法ができる)のでそれも楽しい
煙緋の突破のために氷アタッカー育成が必要なのでね…… かえるよん
面倒な操作なしに複数環境を切り替えて使える
Edge functionからpublicに配置したファイルをHTTP経由で取ろうとしてるんだけどフルパスが必要で魂がサービスディスカバリの形になってる
何かがおかしいと思ってたらClient Componentはdefault exportじゃないと動かなかった。なんでだよ
おそらくreact-server-webpackの問題であることまではわかった
Client ComponentをインポートしているShared ComponentをServer ComponentからインポートしてServer Componentとして動かしたとき,Client Componentとしての利用が行われないバグがありそう
依存関係を解析する必要がありつらいというのはまあわかるのだが,Shared ComponentからClient Componentをインポートできないのはだいぶしんどい制約
単純にShared Componentにloaderかけてないだけな気がする
CSSをインポートするときにimport assertionsでmedia query記述したらいい感じにlink要素に反映されたりしないだろうか
ダークテーマのときにライトモードのCSSは落としたくない