Evented Rendering で、ページを適切に更新する方法が思いつかなくてしばらく考えてたら思いついてやつ
通常の(HTTP サーバーモデル)レンダリングでは、ユーザーのリクエストを基にレンダラがサーバー内のリソースを持ってきてページを描画するが、 Evented Rendering ではリソースの更新を基にページの描画が行われる。 ここでは、次のようなことが問題になる。
| let-math \overset m-over m = | |
| text-in-math MathOrd (fun ctx -> ( | |
| let font-size = ctx |> get-font-size in | |
| let ib-over = embed-math (ctx |> set-font-size (font-size *' 0.85)) m-over in | |
| let ib-over = inline-fil ++ ib-over ++ inline-fil in | |
| let ib-m = embed-math ctx m in | |
| let ib-sp = inline-graphics 0pt (font-size *' 0.1) 0pt (fun _ -> []) in | |
| line-stack-bottom [ib-over; ib-sp; ib-m] | |
| )) |
| // 再帰消費数が 10*桁数 程度 | |
| // 適当にテーブルを容易すれば定数倍の改善ができるので必要ならやる | |
| type Repeat<T, N, Acc extends any[] = []> = Acc['length'] extends N ? Acc : Repeat<T, N, [T, ...Acc]> | |
| type EncodeAux<D, Acc extends any[] = []> = `${Acc['length']}` extends D ? Acc['length'] : EncodeAux<D, [0, ...Acc]> | |
| type Encode<T extends number | string> = | |
| T extends number ? Encode<`${T}`> : | |
| T extends `${infer D}${infer Rest}` ? [EncodeAux<D>, ...Encode<Rest>] : | |
| [] |
| abstract class Effect<T> { | |
| #Type!: T | |
| } | |
| type InferEffectType<TEffect> = TEffect extends Effect<infer T> ? T : never | |
| class Nil extends Effect<void> { | |
| #nominal!: true | |
| } | |
| type Eff<TEffects extends Effect<unknown>, T> = (run: EffRunner<TEffects>) => Promise<T> |
| [ | |
| { | |
| "id": "V29yay0yMDMx", | |
| "title": "まほらば ~Heartful days~", | |
| "satisfactionRate": null, | |
| "wikipediaUrl": "", | |
| "officialSiteUrl": "", | |
| "matchedEpisode": { | |
| "id": "RXBpc29kZS00MjMxMQ==", | |
| "title": "まほらば", |
| // ==UserScript== | |
| // @name Scrapboxの検索欄に入力できるようにする | |
| // @namespace https://tosuke.me | |
| // @version 0.2 | |
| // @description Firefox + SKK環境で発生する,Scrapboxの検索欄に文字入力ができなくなる問題を修正します. | |
| // @author tosuke | |
| // @match https://scrapbox.io/* | |
| // @icon https://www.google.com/s2/favicons?domain=scrapbox.io | |
| // @grant none | |
| // ==/UserScript== |
Evented Rendering で、ページを適切に更新する方法が思いつかなくてしばらく考えてたら思いついてやつ
通常の(HTTP サーバーモデル)レンダリングでは、ユーザーのリクエストを基にレンダラがサーバー内のリソースを持ってきてページを描画するが、 Evented Rendering ではリソースの更新を基にページの描画が行われる。 ここでは、次のようなことが問題になる。
| export function test(c: u8): i32 { | |
| switch(c) { | |
| case 0: | |
| return 0 | |
| case 1: | |
| return 1 | |
| case 2: | |
| return 2 | |
| case 3: | |
| return 3 |
| class Stack<T> { | |
| private _intenal: T[] | |
| private _pointer: number = -1 | |
| constructor(size: number = 0) { | |
| this._intenal = new Array(size) | |
| } | |
| get top(): T | undefined { | |
| return this._intenal[this._pointer] |
| # This file has been auto-generated by i3-config-wizard(1). | |
| # It will not be overwritten, so edit it as you like. | |
| # | |
| # Should you change your keyboard layout some time, delete | |
| # this file and re-run i3-config-wizard(1). | |
| # | |
| # i3 config file (v4) | |
| # | |
| # Please see https://i3wm.org/docs/userguide.html for a complete reference! |