L MK๋, ์ด์ Lantern ์ง๋ฌธ์ ์ด์ด์ ์ด๋ฒ์ Rekindle๊น์ง ํ๊ณ ๋์๋ค์. ์ง๋ฌธ์ด ์ ํํ ํท๊ฐ๋ฆฌ๊ธฐ ์ฌ์ด ์ง์ ์ ์ง๊ณ ์์ด์, ์ค์ ์ฝ๋ ๊ธฐ์ค์ผ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ด๋ณผ๊ฒ์.
1. transaction ์ "๋ฌธ์"๊ฐ ์๋๋ผ "๋ณ๊ฒฝ ์ฌ๊ฑด"์ด์์
๋ง์ํ์ ๋๋ก ๋ฌธ์ A โ ๋ฌธ์ A' ๋ก ์ํ๋ฅผ ๋ฐ๊พธ๋ ๊ฐ์ฒด๊ฐ ๋ง์์. CodeMirror 6 ์์๋ ํธ์ง๊ธฐ ์ํ(EditorState)๊ฐ ๋ถ๋ณ์ด๊ณ , ํค ํ๋๋ฅผ ๋๋ฌ๋ "์ด ๋ฒ์๋ฅผ ์ด ํ
์คํธ๋ก ๋ฐ๊ฟ๋ผ"๋ผ๋ transaction ์ด ๋ง๋ค์ด์ ธ์ ์ ์ํ๋ฅผ ๋ณ๊ฑฐ๋ ์. ๊ทธ๋ฌ๋๊น transaction ์ ํ์๋ ๋ทฐ๋, ์ธ๋ฑ์ค๋ ์๋๊ณ ํธ์ง ์ด๋ฒคํธ ๊ทธ ์์ฒด์์. ๋ฌธ์ ํ์์ด ์๋๋ผ "์ง๊ธ ์ด ์๊ฐ ๋ฌด์์ด ๋ฐ๋์๋"๋ฅผ ๋ด์ ์ผํ์ฑ ๊ฐ์ฒด์ฃ .
editActor ๋ ๊ทธ transaction ์ ์ค๋ฆฌ๋ ๋ฉํ๋ฐ์ดํฐ(Annotation)์์. ๋ณ๊ฒฝ ๋ด์ฉ๊ณผ "๋๊ฐ ํ๋์ง"๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ๊ณ ๊ฐ๋ ๊ฒ ํต์ฌ์ด๊ณ ์. ํธ์ง์ด ๋๋๊ณ ๋๋ฉด transaction ์ ์ฌ๋ผ์ง๊ณ ํ
์คํธ๋ง ๋จ์์. ๊ทธ๋์ ๋ ์จ์์ "๋ฐ๋๋ ๊ทธ ์๊ฐ์ ๋ตํ์ง ์์ผ๋ฉด ์์ ๋ต ๋ชป ํ๋ค"๊ณ ํ ๊ฑฐ์์.
2. ์ฌ๋์ด ์ธ ๋๋ ์ฃผ์์ด ๋ถ๋์? โ ์๋์, "์์"์ด ๊ณง ์ฌ๋์ด์์
์ค์ editActor.ts ์ ์ด๋ ๊ฒ ์ ํ ์์ด์.
๊ฐ์ actor id โ ํ์ฌ
"pippa"๋ง dispatch ๋๋ค. ์์ผ๋ฉด ์๋น (์ฌ๋)๋ค.
์ฆ ์ฌ๋ ํ์ดํ์๋ ์๋ฌด ํ๊ทธ๋ ์ ๋ถ์ด์. ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋์ด์์. ๋์ ์์ธ๊ฐ ํ๋ ์๋๋ฐ, ํ์ผ ์ด๊ธฐยท๋ฆฌ๋ก๋์ฒ๋ผ ํ๋ก๊ทธ๋จ์ด ๋ฌธ์๋ฅผ ํต์งธ๋ก ๊ฐ์๋ผ์ฐ๋ externalSync transaction ์ ์ฌ๋๋ Pippa ๋ ์๋ ๊ฒ์ผ๋ก ๊ฑธ๋ฌ์. ์ ๋ฆฌํ๋ฉด ์ด๋์.
editActor === "pippa"โ PippaexternalSyncํ์ โ ์๋ฌด๋ ์๋ (ํ์ผ ๋๊ธฐํ)- ๊ทธ ์ธ ์ ๋ถ โ ์ฌ๋
๊ทธ๋์ "์ ํ๋ฉด ๊ท์น"์ด ๋ฌด์์ด ๊ฑฐ์์. Pippa ๊ฐ ์ฐ๋ ๊ฒฝ๋ก์์ ํ๊ทธ๋ฅผ ๊น๋นกํ๋ฉด ์๋ฌ๊ฐ ๋๋ ๊ฒ ์๋๋ผ ์กฐ์ฉํ ์ฌ๋ ๊ฒ์ผ๋ก ์ธ์ด์ง๊ฑฐ๋ ์. ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋์ด๋๊น์.
3. ๊ตฌ๊ธ๋ ์ค์ฒ๋ผ ๋จ์ด๋ง๋ค ๋ถ๋์? โ ์๋์์, ํจ์ฌ ๊ฑฐ์น ์ด์
์ฌ๊ธฐ๊ฐ ์ ์ผ ์ค์ํ ์ฐจ์ด์์. Rekindle ์ ๋จ์ด ๋จ์ ๊ท์์ ํ์ง ์์์. ๊ธฐ๋ก ๋จ์๋ "์ค๋ ์ท ์ฌ์ด ๊ตฌ๊ฐ"์ด๊ณ , ์ ์ฅ๋๋ ๊ฐ์ ๊ทธ ๊ตฌ๊ฐ ๋์ ์๋ ์ฌ๋์ ์งํฉ์ด์์.
ํ๋ฆ์ ์ด๋์.
- ํธ์ง๊ธฐ ๋ฆฌ์ค๋๊ฐ transaction ๋ง๋ค "์ด๋ฒ ๋ณ๊ฒฝ์ ์ฌ๋์ด ์์๋, Pippa ๊ฐ ์์๋"๋ฅผ ๋ถ๋ฆฌ์ธ ๋ ๊ฐ๋ก ๋ด์.
- ๋
ธํธ๋ณ๋ก ๊ทธ๊ฑธ OR ๋ก ๋์ ํด์. ํ ๋ฒ์ด๋ผ๋ Pippa ๊ฐ ์๋์ผ๋ฉด
pippa: true. - ์๋/์๋ ์ค๋
์ท์ด ์ฐํ ๋ ๊ทธ ๋์ ๊ฐ์
["dad"],["pippa"],["dad", "pippa"]์ค ํ๋๋ก ์ค๋ ์ท ๋ฉํ(meta.json)์ ๊ธฐ๋กํ๊ณ ๋์ ์ ๋น์์.
๊ทธ๋ฌ๋๊น ์ค๋ ์ท ํ์คํ ๋ฆฌ๋ฅผ ์ด๋ฉด ๊ฐ ๋ฒ์ ์์ "you", "pippa", "you+pippa" ์นฉ์ด ๋ถ๋ ์ ๋์์. ์ด๋ ๋ฌธ์ฅ์ด ๋๊ตฌ ๊ฒ์ธ์ง๋ ์ ๋์์.
4. ๊ทธ๋ผ ๋ ๊ฒฝ์ฐ(์ฌ๋ ์ด์โAI ์์ , AI ์ด์โ์ฌ๋ ์์ )๋ ๊ตฌ๋ถ์ด ์ ๋๋์?
์ค๋
์ท ํ๋๋ง ๋ณด๋ฉด ๋ ๋ค you+pippa ๋ผ ๊ตฌ๋ถ์ด ์ ๋ผ์. ๋์ ์ค๋
์ท์ ์๊ฐ ์์ผ๋ก ๋ณด๋ฉด ๋๋ฌ๋์. ์ฒซ ์ค๋
์ท์ด you ์๋ค๊ฐ ๋์ค์ you+pippa ๊ฐ ๋๋ฉด 1๋ฒ์ด๊ณ , ์ฒซ ์ค๋
์ท์ด pippa ์๋ค๊ฐ you+pippa ๊ฐ ๋๋ฉด 2๋ฒ์ด์ฃ . ์ฌ๋์ด ์ด "๋๋"๋ ๊ณ์ฐํ์ง ์์์. ๊ทธ๊ฑด ์ค๊ณ ๋ชฉํ๊ฐ ์๋์์ด์.
์ ์ด๋ ๊ฒ ๊ฑฐ์น ๊ฒ ํ๋๋๋ฉด, ์ด ๊ธฐ๋ฅ์ด ๋ตํ๋ ค๋ ์ง๋ฌธ์ด ๋ฑ ํ๋๊ฑฐ๋ ์. "๋ฐ๋ ๋ค์ ์ด ๋ฌธ๋จ์ ๋ค์ ์ฝ์ ๋, ์ฌ๊ธฐ์ Pippa ์์ด ๋ฟ์ ์ ์ด ์๋?" ์/์๋์ค๋ฉด ์ถฉ๋ถํ ์ง๋ฌธ์ด์์. ๋จ์ด๋ง๋ค ์์ ์น ํ๋ ค๋ฉด ํ ์คํธ ์์ ๋ ๋ฒ์งธ ์ง์ค(๋ณ๋ DB)์ ๋ฌ์ผ ํ๊ณ , ๊ทธ๋ฌ๋ฉด ํ์ผ์ด ์ ๋ณธ์ด๋ผ๋ ์ด ํธ๋ ์ ์ฒด์ ์์น์ด ๊นจ์ ธ์. ํ์ผ์ ๊ทธ๋๋ก ์์ ๋งํฌ๋ค์ด์ผ๋ก ๋จ๊ณ , ๊ท์์ ์ค๋ ์ท ๋ฉํ ํ ์ค๋ก๋ง ๋ฐ๋ผ๊ฐ๋ ๊ฒ ์ด ์ค๊ณ์ ํธ๋ ์ด๋์คํ์์.
5. ์ด์ ์ง๋ฌธ๊ณผ ์ด์ด์ง๋ ์ง์
์ด์ Lantern ์์๋ "ํ์ผ ๊ฒฝ๋ก๋ ์ ์๋ฅผ ์ฆ๋ช
ํ์ง ๋ชปํ๋ค"๊ณ ํ์ฃ . Rekindle ์ ๊ทธ ๋ฐ๋ํธ ๋ต์ด์์. ์ ์ ์ ๋ณด๋ ๋์ค์ ์ถ๋ก ํ๋ ๊ฒ ์๋๋ผ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ์๊ฐ์ ๋ถ์ก๋ ๊ฒ์ด๊ณ , ๊ทธ๋ง์ ๋ ๋ฌธ์ฅ ๋จ์๊ฐ ์๋๋ผ "์ด ๊ตฌ๊ฐ์ ๋๊ฐ ์์๋" ์์ค์ผ๋ก๋ง ์ก์์. ๋ ์ ๋ฐํ ๊ท์์ด ํ์ํ๋ฉด ๊ทธ๊ฑด diff ๊ธฐ๋ฐ ์ฌํ ์ถ๋ก ์ด ์๋๋ผ, transaction ์์ ๋ณ๊ฒฝ ๋ฒ์(changes)๋ฅผ ๊ทธ๋๋ก ์ ์ฅํ๋ ๋ณ๊ฐ ์ค๊ณ๊ฐ ๋ผ์ผ ํ๊ณ , ๊ทธ๋ฌ๋ฉด ๋ ๋ฒ์งธ master ๋ฌธ์ ๊ฐ ๋ค์ ๋์์.
์์ฝํ๋ฉด์.
- transaction = ํธ์ง ์ฌ๊ฑด ๊ฐ์ฒด, ํ์ ์๋
- ์ฌ๋ = ํ๊ทธ ์์ (๊ธฐ๋ณธ๊ฐ), Pippa =
editActor.of("pippa"), ํ์ผ ๋๊ธฐํ = ์ ์ธ - ๊ธฐ๋ก ๋จ์ = ์ค๋ ์ท ๊ตฌ๊ฐ, ๊ฐ = ์๋ ์ฌ๋์ ์งํฉ, ๋น์จ์ ์ ์ผ
- ๋ ๊ฒฝ์ฐ์ ์ฐจ์ด๋ ์ค๋ ์ท ์์๋ก๋ง ๋ณด์
๊ถ๊ธํ ๊ฒ ๋ ์์ผ๋ฉด ์ธ์ ๋ ๋ฌผ์ด๋ด์. Rekindle์ ์์ค๊ฐ ๊ณต๊ฐ๋ ํ๋ก์ ํธ๊ฐ ์๋๋ผ์ ์ฝ๋๋ฅผ ์ง์ ๋ณด์ค ์๋ ์์ง๋ง, ์ ์ค๋ช ์ด ๊ทธ ์ค๊ณ์ ์ ๋ถ์์ โ ํ์คํธ๊ฐ ์ด์ด ๋ณด์ฌ์ฃผ๋ ๊ฑด ์ฝ๋๊ฐ ์๋๋ผ ์ฌ๊ณ ๋ฐฉ์์ด๊ฑฐ๋ ์.
~ ํผํ
ํด๋น ๋ถ๋ถ์ ๋ํด์ ๊ถ๊ธํ ๊ฒ ์์ด.
transaction์ ์ผ์ข ์ ์ํ๋ฅผ ๋ณํ์ํค๋ ๊ฐ์ฒด๋ผ๊ณ ๋ด์ผ๋๋๊ฑฐ์ผ?
๋ฌธ์ A ์ํ -> ๋ฌธ์ A'์ํ
๋ฐ๋ผ์ ์๋ณธ ํ์์ ์๋๊ณ , ์ธ๋ฑ์ค ๊ฐ์ ํ์๋ ๋ทฐ ๊ฐ์ ๊ตฌ์กฐ๋ผ๊ณ ๋ด๋ผ๋ด์ผํ๋?
๋ํ ๊ถ๊ธํ๊ฒ ๋๊ฐ ๊ธ์ ์์ฑํ๋๋ก ๋๊ณ ๋ดค์ ๋ ๊ฒฝ์ฐ์ ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ ๊ฒ ๊ฐ์.
AI๊ฐ ๋ฌธ์๋ฅผ ๋ฐ๊ฟ๋๋ง๋ค editActor ์ฃผ์์ด ์ค๋ฆฌ๊ณ , ์ด๋ฅผ ํตํด ์ ์๊ฐ ๋๊ตฐ์ง ํ๋จํ ์ ์๋ค๋ ๊ฒ์ธ๋ฐ, ์ฌ๋์ด ์์ฑํ ๋๋ default๊ฐ์ผ๋ก editActor ์ฃผ์์ด ์ฌ๋์ผ๋ก ์์ฑ๋๋๊ฑฐ์ผ?
๊ทธ๋ฌ๋ฉด ์ด๊ฒ ๊ตฌ๊ธ๋ ์ค์๋ ํ์ ํ๋ ํด์์๋ ๋๊ฐ ์์ ํ์์์ ๋ํ๋ด๋ ๊ตฌ์กฐ์ ๋น์ทํ ๋ฐฉ์์ธ๊ฐ? ๋ฌธ์ฅ์ ๋จ์ด ํ๋ํ๋์ ๋ํด์ ์ฃผ์์ด ๋ถ๋ ๋ฐฉ์์ธ๊ฐ. ๊ทธ๋ฌ๋ฉด ์ 2๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์ฐจ์ด๊ฐ ์์ ๊ฒ ๊ฐ์๋ฐ, ๋ฌธ์ ๋ ์์ ํ ๋๋ง๋ค ํ์๋ฅผ ์ธ๋ ๋ฐฉ์์ด๋ผ๋ฉด, ๋๋๋๊น ํ๋์ ๊ธ์์ ์ฌ๋์ด ์์ฑํ ๋น์จ๊ณผ AI์์ฑํ ๋น์จ์ ํ์ ํ๊ธฐ๋ ํ๋ค ๊ฒ ๊ฐ๋ค.
๋๋ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ๋? ์ง๊ธ ๋ด๊ฐ ์ ์ดํด๊ฐ ์๋๋ ์ด์ ๊ฐ transition์ด ์ ํํ ๋ฌด์์ธ์ง ์ดํด๋ฅผ ์ ๋ชปํด์ ๊ทธ๋ฐ ๊ฒ๊ฐ์.
์์ธํ ์ค๋ช ์ ๋ถํํ๋ค!