Native Record Values - kimjooyoon/meta-ontology-go GitHub Wiki
๊ธฐ๋ก์ ๋ง๋ค๊ณ ๋ค์ ๋ณธ๋ฌธ์ ์ ๋ฌํ๊ธฐ
์
๋ฐ์ดํธ: 2026-10-04. ๊ฐ๋ฐ ํ๋ณด fa3c8927์
๊ตฌํ #1223์ ๊ฐ๋ฐ ๋ธ๋์น์
๋ณํฉ๋๊ณ , main #1224์ ๋ฐฐํฌ
๊ฒ์ฌ๋ฅผ ๋ง์ณ main b629a664๋ก ๋ ์คํ๊ธฐ๋ฅผ ์ค์นํ์ต๋๋ค. ์๋ ์คํ ๋ช
๋ น์
์ด ์ค์น ์์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ์คํ ๊ด์ธก #9๋
21๊ฐ ๊ฒ์ฌ ํต๊ณผ ํ ์ฐ๊ตฌ main์ผ๋ก ๋ณํฉ๋์ต๋๋ค.
ํ์ฌ ์ค์น ๋ฆฌ๋น์ ๊ณผ ๋ณํฉ ์ํ๋ ํ์ฌ ์ํ์ ๋ฐ๋ก ๊ธฐ๋กํฉ๋๋ค.
์์ ์๋ฅ๋ฅผ ์์ ๋ ์ฌ์ด์ ์ ๋ฌํฉ๋๋ค
Candidate๊ฐ ์ ๋ชฉ๊ณผ ์ํ๋ฅผ ๋ด๊ณ , ๋ค์ ํ๋์ด ์ํ๋ฅผ ์ฝ์ด Review๋ฅผ ๋ง๋ค ์
์์ต๋๋ค. ๊ธฐ๋ก์ ์ด๋ฆ๊ณผ ์๋ฆฌ๊ฐ ์ ํด์ง ์๋ฅ์ ๊ฐ๊น์ต๋๋ค. ์ฐ๊ฒฐ์ ์ ์๋ฅ ์ ์ฒด๋ฅผ
์ ๋ฌํ๊ณ , ๊ด์ธก์๋ ์ค์ ํ๋๊ฐ์ด ๋จ์ต๋๋ค.
entity Candidate id "records://candidate" fields {
field title id "records://candidate/title" type string required one
field state id "records://candidate/state" type string required one
}
activity Propose(Integer, Text) -> Candidate computes `
if input0 >= 0 {
return Candidate{title: input1, state: "ready"}
} else {
return Candidate{title: input1, state: "wait"}
}`
activity Echo(Candidate) -> Candidate computes "return input"
bind Propose.result -> Echo.input
์ด๋ ์ ์ธ ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๋ ์์ ์ ๋๋ค. ์คํํ ๋๋ IntegerยทText์ ์กฐ๋ฆฝ ๊ท์น๊น์ง ํฌํจํ ์๋ ์ ์ฒด ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ํ์ฌ ํ๋๋ ํ์ ๋ฌธ์์ด ํ ๊ฐ์ ๋๋ค. ๊ธฐ๋ก์ ์ต๋ 16๊ฐ, ๊ฐ ๊ธฐ๋ก์ ํ๋๋ ์ต๋ 16๊ฐ์ด๋ฉฐ, ํ๋์ ์ ๋ ฅ๋ ์ ์ธ ์์๋ก ์ต๋ 16๊ฐ๊น์ง ๋ฐ์ ์ ์์ต๋๋ค. ์ ์ยท์ฐธ๊ฑฐ์งยทํ ์คํธ์ ๊ธฐ๋ก์ ์์ ์ ์์ต๋๋ค.
๋ณธ๋ฌธ์์ ์ธ ์ ์๋ ๋์
| ๋์ | ์ |
|---|---|
| ์ ์ฒด ๊ธฐ๋ก ๊ตฌ์ฑ | Candidate{title: input1, state: "ready"} |
| ํ๋ ์ฝ๊ธฐ | input.state |
| ์ง์ญ๊ฐ์ผ๋ก ๋ณต์ฌ | let copy = input |
| ์ง์ญ๊ฐ ์ ์ฒด ๊ต์ฒด | copy = Candidate{title: copy.title, state: "wait"} |
| ์ ์ฒด ๊ธฐ๋ก ๋ฐํ | return copy |
| ๊ฐ์ ๊ธฐ๋ก ํ์ ์ ๊ฐ ๋น๊ต | input0 == input1 |
์์ฑ์๋ ๋ชจ๋ ์ ์ธ ํ๋๋ฅผ ์ด๋ฆ์ผ๋ก ํ ๋ฒ์ฉ ์ฑ์๋๋ค. ์
๋ ฅ์ ์ฝ๊ธฐ ์ ์ฉ์
๋๋ค.
์ง์ญ๊ฐ ์ ์ฒด๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ์ ํํํฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ฝ๋๋ ์ ์ธํ
์์์ Go ๊ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ , ์์ ์ ID์์ ํ์
ยทํ๋์ ์ด๋ฆ์ ์ ํฉ๋๋ค.
JSON์๋ ์์ค์ title, state ๊ฐ์ ์ด๋ฆ์ ์ ์งํฉ๋๋ค.
์ ํ ํ๋ยท์ฌ๋ฌ ๊ฐยท์ค์ฒฉ ๊ธฐ๋ก๊ณผ ๋ค๋ฅธ ํ๋ ํ์ ์ ์ดํ ์ํฐํฐ ํ๋กํ์ผ ์์ ์ ๋๋ค. ํธ์ถยท๋ฐ๋ณตยท์ธ๋ถ ํจ๊ณผ๋ ๊ฐ ์คํ ๊ณ์ฝ์ ๋ ์ค๋นํด์ผ ํฉ๋๋ค.
ํ ๋ช ๋ น์ผ๋ก ์คํํฉ๋๋ค
์์ ์ฉ ์ ์ฒดํฌ์์์์ ๊ด์ธกํ ํ๋ณด๋ฅผ ๋น๋ํฉ๋๋ค. ์์ ์ค์ธ ํ์ผ์ด ์๋ ์ฒดํฌ์์์ ๋ณ๊ฒฝ์ ๋ณด์กดํ๊ณ ๋ณ๋ ์์ ํด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
git clone --depth 1 https://github.com/kimjooyoon/meta-ontology-go.git
cd meta-ontology-go
git fetch --depth 1 origin b629a664ea4a667945ab5f894557f42e97cafa35
git switch --detach FETCH_HEAD
gooo_go_bin="$(GOTOOLCHAIN=go1.27.1 go env GOROOT)/bin/go"
"$gooo_go_bin" build -trimpath -o gooo ./cmd/gooo
./gooo body-compose \
--source examples/body-codegen/native-records.gooo.fixture \
--cases examples/body-codegen/native-records-cases.json \
--out record-results
์ ํด๋์ ์๋ณธ, ์ ํ๋ Gooo, Go ํจ์, ์ฐ๊ฒฐ ๋๋ผ์ด๋ฒ์ ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ดํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ ๊ฒฐ์ ๋ก ์ ์ ๋๋ค. ์ฌ์ฏ ์ฌ๋ก์ ๊ฐ ํ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด 36/36์ ์ถฉ์กฑํ๋ฉด ์ ๊ณตํ ์ด๋ฆ ์๋ ๊ธฐ๋๊ฐ 36๊ฐ์ ์ผ์นํ ๊ฒ์ ๋๋ค.
์์ฒด ๋ชจ๋ธ์ ๊ณ ์ ๋ ๊ณต๊ฐ ํ์ผ ๋ ๊ฐ๋ฅผ ๋ฐ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
hf download asketeddy/gooo-three-choice-feedback-tiny-v1 \
models/set-feedback/fp32/model.json models/set-feedback/fp32/weights.bin \
--revision 24238ca67048b36bc305731799985271bb752dd1 \
--local-dir gooo-models
./gooo body-compose \
--source examples/body-codegen/native-records.gooo.fixture \
--cases examples/body-codegen/native-records-cases.json \
--model gooo-models/models/set-feedback/fp32/model.json \
--out record-model-results
๋ชจ๋ธ์ Score์ ์ ์ ์ฐ์ฐ ๋ฐฐ์น๋ฅผ ์ ์ํฉ๋๋ค. ๊ธฐ๋ก์ ํ๋ ๊ตฌ์ฑ๊ณผ ์ฝ๊ธฐ๋
Gooo์ ์ ์ ๋ณธ๋ฌธ์ ๋ฐ๋ฆ
๋๋ค. ๋ชจ๋ธ๊ณผ ๊ฒฐ์ ๋ก ๊ฒฝ๋ก ๋ชจ๋ ๊ฐ์ ์ต์ข
์์ค์ ์ฝ๋๋ฅผ
๋ง๋ค์์ต๋๋ค. ๋ชจ๋ธ์ ์ฒซ ํ๋ณด๋ 0/6, ํ์ ํ๋ณด๋ 6/6 ์์๋ฅผ ์ถฉ์กฑํ์ต๋๋ค.
๊ฐ์ค์น๋ ์ด๋ฒ ์์
์์ ์๋ก ํ์ตํ์ง ์์์ต๋๋ค.
์ ์ฅํ ๊ตฌ์ฑ์ ์ ์ถ๋ก ์์ด ์คํํฉ๋๋ค. ์ถ๋ ฅ ํด๋๋ ๋งค๋ฒ ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
./gooo body-compose \
--source record-model-results/original.gooo \
--cases record-model-results/cases.json \
--composition record-model-results/composition.json \
--out record-replay-results
๊ฒฐ๊ณผ๋ฅผ ์ฝ๋ ์์
runtime.json์finite_passed,finite_total๋ก ์์ฑํ ๊ธฐ๋๊ฐ์ ์ถฉ์กฑ ์๋ฅผ ๋ด ๋๋ค.traces[].deliveries[]์actual๊ณผexpected๋ฅผ ๋น๊ตํฉ๋๋ค.- ๊ธฐ๋ก ์ถ๋ ฅ์
actual_fields, ๋จ์ผ ๊ธฐ๋ก ์ ๋ ฅ์input_fields, ์ฌ๋ฌ ์ ๋ ฅ์inputs[].fields์์ ํ๋ IDยท์ด๋ฆยท์ค์ ๊ฐ์ ์ ์ธ ์์๋ก ์ฝ์ต๋๋ค. producer_id๋ก ๊ทธ ๊ฐ์ ๋ง๋ ํ๋์ ์ฐพ์ ์์ ์ค์ ๊ฒฐ๊ณผ์ ๋น๊ตํฉ๋๋ค.realized.gooo๋ฅผ ๋ค์ ๊ฐ๋ฐ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ธ๋ถ ๊ธฐ๋ก ์ ๋ ฅ๊ณผ ๊ธฐ๋ก ๊ธฐ๋๊ฐ์ ์ ํํ ํ๋ ์ด๋ฆ๊ณผ ๋ช ์์ ๋ฌธ์์ด์ ๊ฐ์ง ์์ ํ JSON ๊ฐ์ฒด์ ๋๋ค. ๋ฉค๋ฒ ์์๋ ์์ ์ด๋ฉฐ, ๊ฐ ๋ฌธ์์ด์ UTF-8 1,024๋ฐ์ดํธ๊น์ง ๋ฐ์ต๋๋ค. ๋๋ฝยท์ค๋ณตยท์ถ๊ฐ ํ๋์ nullยทํ์ ์ค๋ฅ๋ ์์ฑ ์ ์ ๊ฒฐ๊ณผ๋ก ์๋ดํฉ๋๋ค.
์์ ์ฑ๊ณผ ๋น์ฉ์ ๊ด์ธก
๊ฐ์ ์ฌ์ฏ ํ๋ ๊ทธ๋ํ์ ์ด๋ ๋ฐ๋ณต ์ ์ด์์ ์ถ๋ ฅ 432/432, ์ ๋ ฅ ์ฌ๋กฏ 648๊ฐ, ์ฐ๊ฒฐ ์ ๋ฌ๊ฐ 432๊ฐ, ํ๋ ๊ด์ธก 1,152๊ฐ, ์ค์ ์คํ 24ํ๋ฅผ ํ์ธํ์ต๋๋ค. ํ๋ ๊ด์ธก์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ ์์น๋ฅผ ํฉํ๋ฉฐ, ๊ฐ์ ๊ฐ์ด ์ฌ๋ฌ ์ฐ๊ฒฐ์ ๋ฑ์ฅํ ์ ์์ต๋๋ค.
๋ณ๋์ ๋์ ๋ ์์ฒญ์ 72/72๋ก ์๋ฃ๋๊ณ , ์๋ก์ด ์คํ ์
๋ ฅ ์ฌ๋ ๊ฐ๋ฅผ ๋ ์ ์ฅ
๊ตฌ์ฑ์ ์ ๋ฌํด 96/96์ ํ์ธํ์ต๋๋ค. ์ ์ฅ ์ฌ์คํ์ ์ ์ถ๋ก ์ 0ํ์
๋๋ค.
์ํ ๊ธฐ๋๊ฐ ํ๋๋ง ready์์ wait๋ก ๋ฐ๊พธ๋ฉด 35/36, ์ฆ 97.22%๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
์ค์ ์ํ ๊ฐ๊ณผ ๋ฏธ์ถฉ์กฑ ๊ธฐ๋๊ฐ๋ ๊ฐ์ด ๋ณด์
๋๋ค. ์ด ๋น์จ์ ๋ถ๋ชจ๋ ์์ฑํ ์ ํ
๊ธฐ๋๊ฐ์ด๋ฉฐ, ๋ ๋ง์ ๊ธฐ๋ฅ์ ์๊ตฌํ๋ฉด ๊ทธ ๊ธฐ๋๊ฐ์ ์ถ๊ฐํด ๊ด์ธกํฉ๋๋ค.
์ค์ ์ถ๋ก ์ค์๊ฐ์ 26.9ฮผs, ์ ์ฒด ๊ทธ๋ํ ์์ฑ์ ๋ชจ๋ธ 12.80msยท๊ฒฐ์ ๋ก 11.77ms, ๋น๋ยท์คํ์ ํฌํจํ ๋ช ๋ น์ ์ฝ 344msยท335ms์์ต๋๋ค. ์ต๋ ๊ด์ธก ๋ฉ๋ชจ๋ฆฌ๋ ์ฝ 83MiB์ด๋ฉฐ ์์ ๋น๋ ๋น์ฉ์ด ํฌํจ๋ฉ๋๋ค. ํ๋ณด๋ ๋ชจ๋ธ 2๊ฐยท๊ฒฐ์ ๋ก 8๊ฐ๋ฅผ ํ์ธํ์ง๋ง, ์ด๋ฒ ํ๋ณธ์ ์ ์ฒด ์์ฑ ์๊ฐ์ ๋ชจ๋ธ ์ชฝ์ด ์กฐ๊ธ ๊ธธ์์ต๋๋ค. ํธ์คํธ CPU ์์น๋์ ๋ณ๋๋ก ์ธก์ ํ์ง ์์์ต๋๋ค.
์๋ณธยท์ธก์ ยท์ฌํ ์ฝ๋.
์ค์น๋ณธ๊ณผ ํ๋๋ณ ์์ฝ
์ค์น๋ณธ์ ๋ณ๋ ์ด๋ ๊ด์ธก๋ ์ถ๋ ฅ 432/432ยทํ๋ ๊ด์ธก 1,152๊ฐ์ ๊ฐ์ ์์ฑ ์ง๋ฌธ์ ์ ์งํ์ต๋๋ค. ์ค์ ์ถ๋ก ์ค์๊ฐ์ 29.7ฮผs, ์์ฑ์ ๋ชจ๋ธ 13.17msยท๊ฒฐ์ ๋ก 12.01ms, ๋ช ๋ น ์ ์ฒด๋ ์ฝ 353msยท347ms์ ๋๋ค. ์ธ๋ถ ๊ธฐ๋ก์ ๋ฐ์ ์ง์ญ๊ฐ ์ ์ฒด๋ฅผ ๊ต์ฒดํ๋ ๋ค๋ฅธ ์์ ๋ ์ ์์ฑยท์ ์ฅ ์ฌ์คํ์์ ๊ฐ ์ถ๋ ฅ 8/8ยท์ถ๋ ฅ ํ๋ 8/8์ ์ถฉ์กฑํ์ต๋๋ค.
๋ณ๋ ์ฐ๊ตฌ ์ ์ฅ์์ Go ๋๊ตฌ๊ฐ ์ซ์์ ๋ฏธ์ถฉ์กฑ ํ๋๋ฅผ ์์ฝํฉ๋๋ค. ๋๊ตฌ์ ์ค์น ๊ด์ธก์ PR #10์ 21๊ฐ ๊ฒ์ฌ ํ main์ ๋ณํฉ๋์ต๋๋ค. ์ด ์ปค๋ฐ์ ์ฒดํฌ์์ ๋ฃจํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค.
go run ./cmd/record-completeness \
--input publication/native-record-values-20261004/installed/partial.json
์ถ๋ ฅ๊ณผ ๊ธฐ๋ก ์ถ๋ ฅ ํ๋๋ ๊ฐ๊ฐ 35/36 (97.22%)์ด๋ฉฐ, Propose.state์ ์ค์
ready์ ๊ธฐ๋ wait๋ฅผ ์๋ดํฉ๋๋ค. ๊ธฐ๋ก ๊ธฐ๋๊ฐ์ ์๋ตํ ์ค์ ์คํ์์๋
ํด๋น ์ถ๋ ฅ ํ๋ 36๊ฐ๋ฅผ ๋ฏธ๊ด์ธก์ผ๋ก ํ์ํ๊ณ ํ๋ ์ ์๋ 0/0ยท๋น์จ์ ๋ฏธ๊ด์ธก์ผ๋ก
๋จ๊น๋๋ค. ์
๋ ฅยท์ถ๋ ฅ์ ํ๋ ๊ด์ธก 1,152๊ฐ์ ๊ธฐ๋ ์ถ๋ ฅ ํ๋์ ๋ถ๋ชจ๋ ๊ฐ์์
์๋ฏธ๋ฅผ ์ ์งํฉ๋๋ค. --json์ผ๋ก ์ฌ๋กยทํ๋ยทํ๋์ ์ฐจ์ด๋ฅผ ๋ค์ ์์
์ ์ ๋ฌํ ์
์์ต๋๋ค. ์ค์น๋ณธ ์๋ณธ๊ณผ ๋น์ฉ.
๋ค์์๋ ๊ธฐ๋ก ํ๋์ ์ ํ์ง๋ฅผ assembling์ ํํํ๊ณ , ๊ธฐ๋ ํ๋์ ๋น ์ง ๋ถ๋ถ์
CLI๊ฐ ๋ฐ๋ก ์์ฝํ๋ฉฐ, ์ปดํ์ผํ ๊ทธ๋ํ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์งํํฉ๋๋ค.
๋ฑ๋กํ ๋๋ฉ์ธ ์คํ ๊ฒฝ๋ก์ #874๋ ํด๋น ๊ณ์ฝ์ ๊ณ์ ๋ค๋ฃน๋๋ค.
๋ค์ ์์ ์คํ: ๋ชจ๋ธ์ด ๊ธฐ๋ก์ ๋ด์ฉ์ ๊ณ ๋ฆ ๋๋ค
์๋๋ ๋ค์ ๊ตฌํ์ ๊ณํ์ ๋๋ค. ํ์ฌ ์ค์น ๊ธฐ๋ฅ๊ณผ ๊ด์ธก์ ์ ์ ์์ ๊ตฌ๋ถํฉ๋๋ค.
Gooo๊ฐ ์๋ฅ์ ์์๊ณผ ํ์ฉํ ๋ถํ์ ์ ํ๊ณ , ๋ชจ๋ธ์ด ๊ฐ ์นธ์ ๋ฃ์ ๋ถํ์ ๊ณ ๋ฅด๋ ๊ตฌ์กฐ๋ก ์์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋ชฉ์ ํ์ฉ๋ ๋ฌธ์์ด ์ ๋ ฅ ์ค์์, ์ํ๋ ์ ์ธํ ๋ ๋ฌธ์์ด ์ค์์ ์ ํํฉ๋๋ค. ์กฐ๊ฑด์ ์ ์ธํ Boolean ์ ๋ ฅ์ ์ฐธ์กฐํฉ๋๋ค. ๋ชจ๋ธ์ด ์ ์ํ ๋์์ ํ์ ์ด ๋ง๋ ์์ ํ ๊ธฐ๋ก ๋ณธ๋ฌธ์ ์ ํ ๋ชฉ๋ก์ ๋๋ค.
| ๋งก๊ธฐ๋ ๊ฒฐ์ | ์ธ์ด๊ฐ ๋จผ์ ์ ํ ๊ฒ | ํ์ธํ ๊ด์ธก |
|---|---|---|
| ์ ๋ชฉยท์์ฝ์ ์ฐธ์กฐ ์ ํ | ํ์ฉํ ์ ๋ ฅ ์์นยทํ๋ IDยท๋ฌธ์์ด ํ์ | ์์ ํ๋๊ฐ๊ณผ ์ค์ ๊ฐ์ ์ผ์น |
| ์ํยท์ฌ์ ๊ฐ ์ ํ | ํ์ฉ๋ ๊ฐ๊ณผ ์กฐ๊ฑด์ ๋์ | ์ฐธยท๊ฑฐ์ง ์์ชฝ์์์ ๊ธฐ๋ฅ ์ถฉ์กฑ |
| ๋ค์ ํ๋ณด ์ ํ | ์๋ ์์ฐ๊ณผ ๋จ์ ํ๋ณด | ์คํจ ํ๋, ํ๊ฐ ์, ์ ํ ์์ |
| ์์ฑ ๊ฒฐ๊ณผ ์ด์ด ์ฐ๊ธฐ | ๊ธฐ์ค ๋ณธ๋ฌธ๊ณผ ๊ณ ๋ฅธ ์ ํ์ ์ฒดํฌํฌ์ธํธ | ๋ค์ ์์ฑ์ ์์คยท์ฝ๋ ์ผ์น |
์ฒซ ์คํ์ ์ง๊ธ ์ง์ํ๋ ํ์ ๋ฌธ์์ด ๊ธฐ๋ก๊ณผ ์ธ ๊ฐ์ ์ด์ง ์ ํ ์ ๋๋ก ๋ฒ์๋ฅผ ์ก์ต๋๋ค. ํ์ ๊ณผ ํ๋ ์ฑ์์ ์ปดํ์ผ๋ฌ๊ฐ ํ์ธํ๊ณ , ์ค์ ๊ธฐ๋ฅ์ ์์ฑํ ๊ธฐ๋๊ฐ์ผ๋ก ์ธก์ ํฉ๋๋ค. ์์ฐ ์์์ ๊ฐ์ฅ ๋ง์ด ์ถฉ์กฑํ ํ๋ณด์ ๋จ์ ํ๋๋ฅผ ๊ธฐ๋กํด ๋ค์ ์์ ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ํ ๋ฒ์ ๋ชจ๋ ์ฌ๋ก๋ฅผ ๋ง์ถ๋ ์์น์ ์์ฐ ํ ์ถฉ์กฑ ์๋ฅผ ๋ฐ๋ก ๋จ๊น๋๋ค.
์คํยท์ค๊ฐ ์ฐ๊ฒฐ์ Go๋ก ๊ตฌ์ฑํฉ๋๋ค. ํ๋ ์์น๋ ์ ์ธ ์์์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ํํํ๊ณ , ์์ฑ๋ ํจ์๋ ํ์ฌ ๊ฐ ๊ตฌ์กฐ์ฒด๋ก ๋ฎ์ถฅ๋๋ค. ๋จผ์ ๊ฒฐ์ ๋ก ์ ๊ฒฝ๋ก๋ฅผ ์ธก์ ํ ๋ค ์์ ํ๋จ๊ธฐ๋ฅผ ์ฐ๊ฒฐํด ํ๋ณด ํ์ธ ๊ฐ์์ ์ถ๊ฐ ์ถ๋ก ๋น์ฉ์ ๋น๊ตํฉ๋๋ค. ์ ํน์ง์ด๋ ๊ฐ์ค์น๋ฅผ ๋ง๋ค๋ฉด ๊ธฐ์กด ์ ์ ํ๋จ๊ธฐ์ ๊ด์ธก๊ณผ ๊ฐ๊ฐ์ ์์คยทํ์ต ์งํฉ์ ๊ตฌ๋ถํฉ๋๋ค. ๊ฐ์ ์ธ์ด ์์์ ์์ ํ๋จ๋ถํฐ ํค์ ํ์ต ๋ฒ์๋ฅผ ์ ํํฉ๋๋ค.