Public Behavior Plan 57 KO - teamswyg/laya-tools GitHub Wiki
๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ๋์ ์ฃผ์ฅ ๊ฒ์ฆ57
๋ชฉํ๋ ์ฝ๋ ํ๋ณด๊ฐ ์ด๋ค ์์ ์๊ตฌ๋ฅผ ๋ง์กฑํ๋์ง์ ๋ํ ๊ฒ์ฆ ๊ฐ๋ฅํ ํํธ ์๋ฃ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด๋ค. ๋ฒ์ ๋ฌธ์์ด ์ฒ๋ฆฌ์ ๊ฒฝ๋ก ํจํด ๋งค์นญ์ ๋จผ์ ํ๋ณดํ๋ค. ์ฌ์ฉ์๋ ์์ด์ ํธ๊ฐ โ๋น๋ ๋ฒํธ๋ฅผ ๋ฌด์ํ๊ณ ๋ฒ์ ์์๋ฅผ ๋น๊ตํ ์ ์๋โ, โํ์ ํด๋๊น์ง ์ฐพ๋โ๋ผ๊ณ ๋ฌผ์ ๋ ์์ ๋ชจ๋ธ์ด ํ์ธํ ํ๋ณด๋ฅผ ์ ์ํ๊ณ , ์ค์ ์น์ธ๊ณผ ์ ๋ต ๊ฒ์ฌ๋ ๊ธฐ์กด ๋๊ตฌ๊ฐ ๋งก๋ ๊ตฌ์ฑ์ ์ค๋นํ๋ค.
์ด ๋จ๊ณ๋ ์ค์ ์๋ณธ Go ํจ์์ ์ฌ์ ์์ฑํ ์ ํ ์ ๋ ฅ ๊ธฐ๋๊ฐ์ ๋์กฐํ๋ค. ์ผ๋ฐ์ ์ธ ์ฝ๋ ์ดํด, ์์ฑํ ๋ผ์ฐํฐ์ ์ ๊ฐ ํจ๊ณผ, ์ ํ์ต ์ฑ๊ณต์ ๋ณด์ฌ์ฃผ๋ ์คํ์ ์๋๋ค. ๊ด์ธก ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๊ธฐ๋๊ฐ์ ๊ณ ์ณ ํต๊ณผ์ํค์ง ์๋๋ค.
์์ฒ๊ณผ ๊ถ๋ฆฌ
| ์์ฒ | ๊ณ ์ ๋ฒ์ ยท๋ฆฌ๋น์ | ์ฌ์ฉํ ๋์ |
|---|---|---|
| Masterminds/semver | v3.4.0 / 61fc460d28283a91c53be65c2e0f20b494ac8ad9 |
Strict parsing, metadata, prerelease precedence |
| bmatcuk/doublestar | v4.9.1 / 8b690afa33319b0a1869367f594e53977e38bc99 |
slash/glob, escaping/character matching, pattern validation |
์๋ณธ 15๊ฐ ํ์ผ์ ์ด99,035๋ฐ์ดํธ๋ค. ๋ MIT LICENSE์ ์ ์๊ถยทํ์ฉยท๋ฉด์ฑ
๋ฌธ๊ตฌ๋ฅผ ๊ทธ๋๋ก ๋ณด์กดํ๋ค. Go ์์ค๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ฐ์ฌ์ฉ fixture์ ๋๋ค. ์๋ go.mod๋ metadata ํ์์ ๋ณด์กดํ์ฌ ๋ถ๋ชจ ๋ชจ๋์ ์์กด์ฑ์ ๋ฐ๊พธ์ง ์๋๋ค. ์๋ณธ ๊ฒฝ๋ก์ ๋ฐฐํฌ ๊ฒฝ๋ก์ ๋ฐ์ดํธยทSHA ์ฐ๊ฒฐ์ ๊ธฐ๋กํ๋ค. SemVer ๊ท๋ฒ์ 2.0.0 ์๋ฌธ์ ๋งํฌํ๊ณ ๊ธฐ๋๊ฐ์ ๋ณ๋๋ก ์์ฑํ๋ค.
์ฌ์ฏ ์์ฑ, ๋ ์์ฒ ๊ฐ์กฑ
- Strict parser: ์ฑ๊ณต ์ ์๋ณธ ๋ฌธ์์ดยท์ซ์ ๋ถ๋ถยทprereleaseยทmetadata, ์คํจ ์ nil๊ณผ ์ ํํ ์ค๋ฅ ์ข ๋ฅ๋ฅผ ๋ณด์กดํ๋ค. ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋ฅ ์ข ๋ฅ๋ ๊ธฐ์ ์ API ๊ณ์ฝ์ด๋ฉฐ SemVer ๊ท๋ฒ์ด ๊ทธ ์ค๋ฅ ์ด๋ฆ์ ์๊ตฌํ๋ค๋ ๋ป์ ์๋๋ค.
- Metadata: ๋ฌธ์์ด์ ๋ณด์กด๋์ง๋ง ๋น๊ต ์ฐ์ ์์์๋ ์ํฅ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๋ค.
- Prerelease: ์ ์ ๋ฒ์ , ์ซ์/๋ฌธ์, ์ ์ผ๋ก ๋๋ ์ ๋์ฌ, ASCII ๋์๋ฌธ์ ์์๋ฅผ ํ์ธํ๋ค. uint64๋ณด๋ค ํฐ ์ซ์ ์๋ณ์๋ ํฌํจํ์ฌ ๊ท๋ฒ๊ณผ ๊ตฌํ์ ์ฐจ์ด๋ฅผ ๋์น์ง ์๋๋ค.
- Glob: ์ ์ฒด ์ด๋ฆยท
/๊ฒฝ๊ณยท*์ ๊ฒฝ๋ก ๊ตฌ์ฑ์์์ธ**์ ์ฐจ์ด๋ฅผ ํ์ธํ๋ค. ํ์ผ์์คํ ๊ณผ OS๋ณPathMatch๋ ์ ์ธํ๋ค. - Escape/character: escaped wildcard์
?๋ฅผ ํ์ธํ๋ค. ASCII ๋ฐ Unicode ๊ฒฝ๊ณ๋ ์ ๋ ฅ๋ณ๋ก ๋ช ์ํ๋ค. - Validation:
ValidatePattern์ bool๊ณผMatch์ bool/error๋ฅผ ๊ฐ๊ฐ ๊ด์ธกํ๋ค. ์๋ชป๋ brace์ ์ฒซ ๋์์ด ์ฑ๊ณตํ๋ ๊ฒฝ์ฐ๋ฅผ ํฌํจํ๋ค. ๋ชจ๋ ํจํด์ ๋จผ์ ๊ฑฐ์ ํ๋ ๊ฐํ ์ ์ฑ ๊ณผ ์๋ณธ API์ ๋์ ์ฐจ์ด๋ ์ ์ฑ ์ฐจ์ด๋ก ๊ตฌ๋ถํ๋ค.
์์ฒ ํ๋ ์์ ํฐ prerelease ์ซ์์ ๋น๊ต์ malformed brace์ ์กฐ๊ธฐ ์ฑ๊ณต์ด ์์๋์๋ค. ์ด๋ ์คํ ์ ๊ฐ์ค์ด๋ค. ๊ธฐ๋๊ฐ์๋ ๊ท๋ฒยทAPI ๊ธฐ์ ยท๋ณ๋ ์ ์ฑ ์ ๊ตฌ๋ถ์ ๋๊ณ ์์ฒ ํ๋ ๊ฐ์ค์ ์ ๋ต์ผ๋ก ๋ณต์ฌํ์ง ์๋๋ค. aliasยทhelperยท๋ฐ์ ์ยท๊ฐ์ ์์ฒญ์ ์ ๋ ฅ ๋ณํ์ ์๋ก์ด ๋ ๋ฆฝ ์์ ์ด๋ ๊ฐ์กฑ์ผ๋ก ์ธ์ง ์๋๋ค.
์คํ ๊ฒฝ๊ณ
Go 1.27.1, ์์ Go ๊ฐ์ฌ ์คํ, ๋คํธ์ํฌ ์๋ ๊ด์ธก, ์ ๋ ฅยทํ์ผ ํฌ๊ธฐ ์ ํ์ ์ฌ์ฉํ๋ค. ์๋ณธ ํจ์๋ raw UTF-8 ์ ๋ ฅ์ ๋ฐ๋๋ค. ์๋ฌธ์ํ๋ ๊ตฌ๋์ ์ ๊ฑฐ๋ API ์ ๋ ฅ์ ์ ์ฉํ์ง ์๋๋ค. ์ ๋ต๊ณผ source ID๋ฅผ ํํธ ์ ๋ ฅ์ ์๋ ์ฑ์ฐ๋ ๊ฒฝ๋ก๋ฅผ ๋ง๋ค์ง ์๋๋ค.
์์ฒ/๊ด์ธก๊ธฐ/๊ณํ/expectation์ ๊ณ ์ ํ๊ณ ์ค์ binary SHA์ input freeze๋ฅผ ํ์ธํ ๋ค ๊ณต์ ์์ง์ ํ ๋ฒ ์ํํ๋ค. ๊ฐ ์์ฑ ๊ด์ธก ์์ ์์ฒญํ entry API ํธ์ถ ์๋ฅผ ๋ณ๋๋ก ์ผ๋ค. getter/String/Original ํธ์ถ์ ๋ณ๋ ๊ธฐ๋กํ๋ฉฐ ์๋ณธ ๋ด๋ถ helper ํธ์ถ์ ์ธ์ง ์๋๋ค. Compare์๋ ๋ strict parse์ ํ compare๊ฐ ํ์ํ๋ฏ๋ก ํ ๊ด์ธก์ ํ ํจ์ ํธ์ถ๋ก ๋ถํ๋ฆฌ๊ฑฐ๋ ์ค์ด์ง ์๋๋ค. ์ค๋ฅยทpanicยทunsupported๋ ๋ณ๋๋ก ๋ณด์กดํ๊ณ ๋ถ์์ ๊ด์ธก์ผ๋ก false ๋ผ๋ฒจ์ ๋ง๋ค์ง ์๋๋ค. ์์ง ๋ค ํ๊ท ๊ฒ์ฌ ์ฌ์์ ์ ๊ณต์ ํ๋ณธ์ด ์๋๋ค.
์ด๋ฒ ๊ฐ์ฌ๋ ์์ฐ riidolaya์ ํํธ ์ฒ๋ฆฌ ๊ฒฝ๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ฉ์ด๋ lock์ ์ถ๊ฐํ์ง ์๋๋ค. fixture์ ๊ฐ์ฌ๊ธฐ๋ ๋ณ๋ ์ ์ง๋ณด์ ๋๊ตฌ๋ค. ๋ฉ๋ชจ๋ฆฌ soft limit์ด๋ ์คํ ์๊ฐ ์ค์ ์ ์ค์ธก ์์ ์์น๊ฐ ์๋๋ค.
๋ค์ ํ๋จ
๊ธฐ์กด56์ pending/unknown๊ณผ ์ธก์ ๊ฐ์ ๋ณด์กดํ๋ค. ์ ๊ท ๊ณต๊ฐ ๋์ ๊ทผ๊ฑฐ๊ฐ ํ๋ณด๋์ด๋ ์ ์ฒด240๊ฐ ์์ฒ, ์ต์15 ๊ด๊ณ ๊ทธ๋ฃน, ํ์ํ ๋นํ์ต ํจ์ฉ5%, ๋๋ฉ์ธ๋ณ2400๊ฐ์ ๊ณ ์ ๋ณดํธ ์ต์ข ์์ฒญ์ ๋ฌ์ฑํ๋ค๊ณ ์ ์ธํ์ง ์๋๋ค. ์ง๊ธ์ ์ fitยท์ ๋ฃ ๋ชจ๋ธ ํธ์ถยท์ต์ข ํ๊ฐยท๊ฐ์ค์น ๋ฐฐํฌ๋ฅผ ํ์ง ์๋๋ค. ๋ค์์ฑ๊ณผ ์ค์ ํ์ธ ์์ ๊ฐ์๋ฅผ ๊ฒ์ฆํ ๋ค ํ์ต ์ ๊ฒฉ์ ๋ค์ ํ๋จํ๋ค.