Native Record Field Assembly - kimjooyoon/meta-ontology-go GitHub Wiki
κΈ°λ‘μ κ° νλμ ν보μμ μ¬κ³ 쑰립νκΈ°
Gooo λ³Έλ¬Έμ κΈ°λ‘ μμ±μ μμ νλλ³ ν보μμ μ μ μ μμ΅λλ€. μ λͺ©Β·μνΒ·μ¬μ κ° μλ μμ μλ°μ μκ°νλ©΄ λ©λλ€. κ° μ리μ λ€μ΄κ° λΆνμ μ μΈνκ³ , μμ λͺ¨λΈμ μ‘°ν©μ μλν μμλ₯Ό μ μν©λλ€. κΈ°λκ°κ³Ό λΉκ΅ν΄ μ΄λ μλ¦¬κ° μ±μμ‘λμ§ κΈ°λ‘ν λ€, κ³ λ₯Έ λ³Έλ¬Έμ Goλ‘ μμ±νκ³ μ€μ λ‘ μ€νν©λλ€.
νμ¬ λ¨κ³
κ°λ° PR #1225λ νμ CI 6κ°μ
ν΄λΉ μμ€μ κ²°κ³Ό νμΈ ν λ³ν©νμ΅λλ€. λ°°ν¬ PR #1226λ
μ 체 CIλ₯Ό ν΅κ³Όν΄ main f6da667eλ‘ λ³ν©νκ³ λ μ€νκΈ°λ₯Ό Go1.27.1Β·SDK0.2.21λ‘ μ€μΉνμ΅λλ€.
μ»΄νμΌλ¬ μμ±λ²κ³Ό
κ³΅κ° μ€ν PR #11μ
22κ° CI μμ
μ ν΅κ³Όν΄ λ³ν©νκ³ , μ 체 μμ μ μλ³Έ κ²°κ³Όκ° μμ΅λλ€.
μ€μΉλ³Έμ μ 30κ° κ΄μΈ‘λ ν보μ μμ€Β·μμ± GoΒ·μ νΒ·μμ μ± μμΉλ₯Ό μ μ§νμ΅λλ€.
λΆλΆ κ²°κ³Όμ λ¨μ νλ μμ½κ³Ό μμν λͺ¨λΈ λΉκ΅λ
νμ μ°κ΅¬ PR #12μμ νμΈν©λλ€.
μ΄ μ°κ΅¬ PRλ 22κ° μμ
μ
λͺ¨λ ν΅κ³Όν΄ μ°κ΅¬ main ad007f6bλ‘ λ³ν©νμ΅λλ€. μ€μΉν μ»΄νμΌλ¬μ Linux
μμ±Β·μ μ₯ μ¬μ€ν 32κ° κΈ°λ‘μ λ°λ‘ λ΄λ €λ°μ μ€μ κ°κ³Ό νλ μλ₯Ό κ²μ°νμ΅λλ€.
κ·Έμ€ μ μ₯ μ¬μ€ν 16κ°λ μΆκ° μΆλ‘ μ΄ λͺ¨λ 0λ²μ
λλ€.
μ νμ§λ₯Ό μ λ λ°©λ²
choice "title" field_value at "0" alternative "input0.title" intent "μλ μ λͺ©μ μ¬μ©νλ€. Keep the original title."
choice "state" field_value at "1" alternative "\"ready\"" intent "μνλ₯Ό readyλ‘ λ§λ λ€."
choice "reason" field_value at "2" alternative "input0.reason + \":accepted\"" intent "κΈ°μ‘΄ μ¬μ μ νμμ λΆμΈλ€."
μ΄ μΈ μ€μ νλμ assembling λΈλ‘ μμ λ‘λλ€. atλ κΈ°μ€ λ³Έλ¬Έμμ
κΈ°λ‘ μμ±μμ νλ κ°μ΄ λ±μ₯νλ μμμ
λλ€. κΈ°μ‘΄ μκ³Ό alternative μ€ νλλ₯Ό
κ³ λ₯Ό μ μκ³ , μ€μ νλ νμ
κ³Ό κ·Έ μμΉμ λ³μ λ²μλ₯Ό νμΈν©λλ€. νκΈΒ·μμ΄
μλλ νλ ID, λ ν보μκ³Ό ν¨κ» λͺ¨λΈ λ¬Έλ§₯μΌλ‘ μ λ¬λ©λλ€.
value_caseλ μμΉμ μ
λ ₯ λ°°μ΄κ³Ό μμ ν κΈ°λ κΈ°λ‘μ JSONμΌλ‘ λ°μ΅λλ€.
κΈ°λ‘Β·μ°Έκ±°μ§Β·μ μΒ·ν
μ€νΈλ₯Ό μμ μ
λ ₯μ μ μΈν μ μμ΅λλ€. κΈ°λ‘ νλλ νμ¬
νμ λ¬Έμμ΄μ΄λ©°, λ³Έλ¬Έμλ 쑰건μκ³Ό μ§μκ° μ 체 κ΅μ²΄λ₯Ό ν¨κ» μ¬μ©ν μ μμ΅λλ€.
μ 체 μμ μλ Select(Candidate, Boolean)μ κ²°κ³Όλ₯Ό Label(Candidate)μ
μ λ¬νλ bindλ λ€μ΄ μμ΅λλ€.
λΆλΆ μμ μ±μ μ½κΈ°
μ λͺ©Β·μνΒ·μ¬μ λ₯Ό ν¬ν¨ν μ ν μ¬λ‘ 5κ°κ° κΈ°λ νλ 15κ°λ₯Ό μ 곡ν©λλ€. μλ μμ°μ λ리며 μ체 λͺ¨λΈκ³Ό κ²°μ λ‘ κ²½λ‘λ₯Ό κ°κ° μΈ λ²μ© μ€ννμ΅λλ€.
| νμ© μλ | μ ν νλ | μ ν μ¬λ‘ | μ€μ μ€νμ κΈ°λ‘ μΆλ ₯ νλ | μ€μ μ€νμ μ΄λ¦ μλ μΆλ ₯ |
|---|---|---|---|---|
| 1 | 6/15, 40% | 2/5 | 9/21 | 6/14 |
| 2 | 9/15, 60% | 2/5 | 13/21 | 6/14 |
| 4 | 12/15, 80% | 2/5 | 17/21 | 6/14 |
| 8 | 15/15, 100% | 5/5 | 21/21 | 14/14 |
λ λ°©μμ μΆ©μ‘± μλ κ°μμ΅λλ€. 4ν μμ°μμλ μλ‘ λ€λ₯Έ νλλ₯Ό μ±μ κ³ , 8νμμλ κ°μ μμ±λ λ³Έλ¬Έμ μμ±νμ΅λλ€. μ 체 μ¬λ‘λ λ§μ§λ§ νλκ° μ±μμ§ λκΉμ§ 2/5μ§λ§, νλ μ§νλ κ·Έ μ¬μ΄μ μ§μ μ 보μ¬μ€λλ€.
μ€μ μ€νμ μ¬λ‘ 7κ°λ₯Ό μ¬μ©ν©λλ€. κ·Έμ€ 5κ°λ μ ν μ¬λ‘μ κ²ΉμΉκ³ , 2κ°λ ν μ€νΈμ μ€λ°κΏΒ·λ°μ΄νμ κΈ°λ‘μ κ·Έλλ‘ λλ κ²½λ‘λ₯Ό μΆκ°ν©λλ€. μ ν ν΄μκΈ°μ κΈ°λκ°κ³Ό μ€μ μ»΄νμΌλ νλ‘κ·Έλ¨μ κΈ°λκ°μ λ°λ‘ νμν©λλ€. μ΄ λΆλͺ¨λ μ 곡ν μμ μ λ²μμ΄λ©°, λ€μν λ³Έλ¬Έ λͺ¨μμ λν νμ΅μ λ€μ λ¨κ³μ λλ€.
λͺ¨λΈκ³Ό μ°κ²° ν΄μ
body-codegen --path-model λλ body-compose --modelλ‘ κΈ°μ‘΄ μ체 μν λͺ¨λΈμ
μ°κ²°ν©λλ€. μ΅μ
μ λΉΌλ©΄ μ‘°ν© λ²νΈ μμλ‘ κ²°μ λ‘ μ μΌλ‘ μ§νν©λλ€.
body-contextλ μΆκ° μΆλ‘ μ΄λ ν보 μ€ν μμ΄ μ νν λ¬Έλ§₯μ 보μ¬μ€λλ€.
μ νν Goooμλ κΈ°μ€ λ³Έλ¬Έκ³Ό pickedλ₯Ό λ¨κΈ°κ³ , body-realizeμ μ μ₯ν 쑰립
μ¬μ€νμ μΆκ° μΆλ‘ μμ΄ κ°μ κ°μ νμΈν©λλ€.
νμ¬ λͺ¨λΈμ μ μ μ νμ νμ΅ν κΈ°μ‘΄ κ°μ€μΉλ₯Ό μ¬μ©ν©λλ€. νλ μ νμ μν λ³λ μ΄λ¦μ μμ λ¬Έλ§₯μ ꡬμ±νκ³ , μ ν μ¬λ‘μ κΈ°λ μΆλ ₯μ λͺ¨λΈ μ λ ₯μμ μ μΈνμ΅λλ€. μ μμ±μ μ΄κΈ° μμλ₯Ό ν λ² λ°μΌλ©°, νλ νλ‘νμ μ€ν¨ μ¬λ‘ μ¬μ νμ νμ μμ μ λλ€. κΈ°μ‘΄ μ μ 쑰립μλ λ³λμ μ€ν¨ λ¬Έλ§₯ μ¬μ νμ΄ μμ΅λλ€.
μμ ν λ¬Έλ§₯μ΄ λͺ¨λΈ ν¬κΈ° μ νμ λκ±°λ μ νμ§ μκ° λ§μ§ μμΌλ©΄ κ·Έ μ΄μ λ₯Ό
κΈ°λ‘νκ³ μΆκ° μΆλ‘ 0νμ κ²°μ λ‘ κ²½λ‘λ‘ μ§νν©λλ€. μμ²λ³ μμ
곡κ°μ μ¨μ
λΆλ³ κ°μ€μΉλ μ¬λ¬ μμ²μ΄ 곡μ ν μ μμ΅λλ€. μμ
μλ κΈ°λ‘ λ³Έλ¬Έμ λ³λ ¬λ‘
μμ±νκ³ , κΈ°λ‘ κ·Έλνμ μ€μ μ€νμ body-composeλ₯Ό μ¬μ©ν©λλ€.
μ€μ λΉμ©κ³Ό λ€μ νμ΅
μ€μΉλ³Έμ μ μ 체 μμ° μΈ‘μ μμ μΆλ‘ μ€μκ°μ31.625Β΅sμμ΅λλ€. κ·Έλν μμ±μ λͺ¨λΈ9.890msΒ·κ²°μ λ‘ 9.337ms, λͺ λ Ή μ 체λ323.462msΒ·324.194ms, μ΅λ νλ‘μΈμ€ λ©λͺ¨λ¦¬λ82.94MiBΒ·82.42MiB, μ¬μ©μΒ·μμ€ν CPU μκ° ν©μ κ°κ°0.24μ΄μμ΅λλ€. ν λ³Έλ¬Έμ κ° μ‘°κ±΄μ μΈ λ²μ© λ°λ³΅ν κ°μ λλ€. μλ ν보μ μ€μΉλ³Έ κ΄μΈ‘μ μμ€Β·Go μ§λ¬Έ λ° μ ν μΆ©μ‘± μλ 30κ° λͺ¨λ κ°μμ΅λλ€.
Go μμ½ λꡬλ 4ν μμ°μ κ²°κ³Όλ₯Ό μ ν νλ12/15, μ€μ μΆλ ₯6/14,
μ€μ κΈ°λ‘ νλ17/21λ‘ κ΅¬λΆνκ³ , λ¨μ stateμ μ€μ κ°κ³Ό κΈ°λκ°μ 보μ¬μ€λλ€.
μμ λ¨μΌ λ¬Άμμ μ μ₯ μ¬μ€νμ μΆκ° μΆλ‘ μ μλ΅νκ³ Goλ₯Ό λ€μ λΉλνμ΅λλ€.
νμ κ·Έλν μ¬μ¬μ©μ κ°λ°ν΄ 첫 μ€νμμ λΉλν
νλ‘κ·Έλ¨μ λ°λ³΅ μ
λ ₯μ μ¬μ©ν©λλ€. μ
λ ₯κ³Ό κΈ°λκ°μ λ§€λ² μλ‘ μ€νν΄ κ΄μΈ‘ν©λλ€.
κΉ¨λν κ°λ° ν보μ μ 체 μμ° μΈ‘μ μμ λͺ¨λΈ μΆλ‘ μ€μκ°μ 29Β΅sμμ΅λλ€. κ·Έλν μμ±μ λͺ¨λΈ 9.57msΒ·κ²°μ λ‘ 9.60ms, λͺ λ Ή μ 체λ 349msΒ·342msμμ΅λλ€. μ΅λ νλ‘μΈμ€ λ©λͺ¨λ¦¬λ μ½ 82MiB, μ¬μ©μΒ·μμ€ν CPU μκ° ν©μ μ½ 0.26μ΄μμ΅λλ€. Go λΉλμ μμ μ€νμ ν¬ν¨ν κ°μ΄λ©°, νΈμ€νΈ μ 체 CPU μ¬μ©λ₯ μ¦κ°λ μΈ‘μ νμ§ μμμ΅λλ€. μ΄λ² λ³Έλ¬Έμμ λͺ¨λΈμ ν보 μλ₯Ό μ€μ΄μ§ λͺ»νμ΅λλ€.
λ€μ νμ΅μ λ€μν νλ ννκ³Ό μμ νμ μλ, μ€μ νλ κ°μ λμ μ°κ²°νλ κ²μ λͺ©νλ‘ ν©λλ€. κ°μ μμ°μμ μΌλ§λ λ μ±μ°λμ§μ ν보 κ²μ¬ μ, μΆλ‘ μκ°, κ°μ€μΉ λ©λͺ¨λ¦¬λ₯Ό ν¨κ» λΉκ΅ν©λλ€.
κ³΅κ° λͺ¨λΈμ ν보·μ€μΉ κ΄μΈ‘ Β· μμ κΈ°λ‘ κ° μ λ¬ Β· μ΅κ·Ό μ°κ΅¬μ λ€μ μμ