-
Notifications
You must be signed in to change notification settings - Fork 0
๐ ๏ธ AGT โ Automatic Git & Github Tool
AGT(Automatic Git & GitHub Tool)๋ GitHub Issue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ธ๋์น ๊ด๋ฆฌ์ ํ ๋ฆฌํ์คํธ(PR) ์์ฑ์ ์๋ํํ์ฌ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฅ์์ํค๊ณ , ๋ธ๋์น ๊ด๋ฆฌ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋๊ตฌ์ ๋๋ค.
AGT ๊ฐ๋ฐ ๋ฐฐ๊ฒฝ ์์ธํ ๋ณด๊ธฐ
ํ๋ก์ ํธ์ ๋ธ๋์น ์ ๋ต์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ๋ฐ๋ณต์ ์ธ Git ๋ฐ GitHub ์์ ์ ์๋ํํ๊ธฐ ์ํด AGT๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋์์ต๋๋ค. ํนํ, ์ด์ ๊ธฐ๋ฐ ๋ธ๋์น ์์ฑ๊ณผ PR ์์ฑ์ ์๋ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ๋์ด๊ณ , ๋ธ๋์น ๊ด๋ฆฌ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ ํ์ต๋๋ค.
AGT๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ ๊ณผ ๋๊ตฌ์ ๋ํด ํ์ตํ์์ต๋๋ค:
- ๋ธ๋์น ๊ด๋ฆฌ: Git์ ๋ธ๋์น ์์ฑ, ์ ํ, ๋ณํฉ ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ตํ์ต๋๋ค.
- ๋ฆฌ๋ฒ ์ด์ค ๋ฐ ๋จธ์ง ์ ๋ต: ๋ธ๋์น ์ ๋ต์ ๋ง๋ ์ ์ ํ ๋ณํฉ ๋ฐฉ๋ฒ์ ์ ํํ๊ณ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ์ต๋๋ค.
- ์คํฌ๋ฆฝํธ ๋ด Git ๋ช ๋ น์ด ํ์ฉ: ์คํฌ๋ฆฝํธ์์ Git ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ์๋ํ๋ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ต๋๋ค.
- ์ค์น ๋ฐ ์ค์ : GitHub CLI๋ฅผ ์ค์นํ๊ณ ์ธ์ฆํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ์ต๋๋ค.
-
์ด์ ๊ด๋ฆฌ:
gh issue
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ๋ชฉ๋ก ์กฐํ, ์ด์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. -
PR ๊ด๋ฆฌ:
gh pr
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ PR ์์ฑ, PR ์ํ ํ์ธ ๋ฑ์ ์์ ์ ์๋ํํ์ต๋๋ค. -
API ํ์ฉ:
gh api
๋ช ๋ น์ด๋ฅผ ํตํด GitHub API๋ฅผ ํธ์ถํ์ฌ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ต๋๋ค.
- ์ํฌํ๋ก์ฐ ์์ฑ: YAML ํ์ผ์ ์์ฑํ์ฌ ํน์ ์ด๋ฒคํธ์ ๋ํ ์๋ํ๋ ์์ ์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ํ์ตํ์ต๋๋ค.
-
์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ: PR ๋จธ์ง ์ ์ด์๋ฅผ ์๋์ผ๋ก ํด๋ก์ฆํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด
pull_request_target
์ด๋ฒคํธ์ ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ต๋๋ค. - ๊ถํ ์ค์ : ์ํฌํ๋ก์ฐ์์ ํ์ํ ๊ถํ์ ์ค์ ํ์ฌ ์์ ํ๊ฒ ์์ ์ ์ํํ ์ ์๋๋ก ํ์ต๋๋ค.
-
๋น๋ฐ ๊ด๋ฆฌ:
GITHUB_TOKEN
๊ณผ ๊ฐ์ ์ํฌ๋ฆฟ์ ํ์ฉํ์ฌ ์ํฌํ๋ก์ฐ์์ ์์ ํ๊ฒ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ต๋๋ค. - ์คํฌ๋ฆฝํธ ํตํฉ: ์ํฌํ๋ก์ฐ ๋ด์์ Bash ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ๋ณต์กํ ์์ ์ ์๋ํํ์ต๋๋ค.
GitHub Actions์ ์ฌ์ฉ์ AGT ์คํฌ๋ฆฝํธ์ ํตํฉ๋์ด ์ด์์ PR ๊ฐ์ ์๋ ์ฐ๊ฒฐ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ต๋๋ค. ํนํ, PR์ด ๋จธ์ง๋ ๋ ๊ด๋ จ ์ด์๋ฅผ ์๋์ผ๋ก ํด๋ก์ฆํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด GitHub Actions๋ฅผ ํ์ฉํ์ต๋๋ค.
AGT ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค:
-
์ด์์ PR ์ฐ๊ฒฐ ๋ฌธ์ : ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด์๋ ์ด์๋ฅผ PR์ ์ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์์์ผ๋, GitHub CLI(
gh
)๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์์ ์ ์ํํ๋ ค๊ณ ํ ๋ ์ด๋ ค์์ด ์์์ต๋๋ค. ํนํ, ์๋์ผ๋ก ์ด์๋ฅผ ํด๋ก์ฆํ๋ ๊ธฐ๋ฅ์ CLI๋ก ๊ตฌํํ๋ ๋ฐ ํ๊ณ๊ฐ ์์์ต๋๋ค. -
๋ชจ๋ ธ๋ ํฌ ์ ํ: ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ธ๋ ํฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด, ํน์ ํค์๋(์:
Close
)๋ฅผ ์ฌ์ฉํ์ฌ ์ด์๋ฅผ ์๋์ผ๋ก ํด๋ก์ฆํ๋ ๊ฒ์ด ์ด๋ ค์ ์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ํจํค์ง๊ฐ ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์, ํน์ ํจํค์ง์ ์ด์๋ฅผ ํด๋ก์ฆํ๋ ๋ฐ ์ ์ฝ์ด ์์์ต๋๋ค. -
GitHub Actions ์์กด์ฑ: ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ฒฐ๊ตญ GitHub Actions๋ฅผ ์ฌ์ฉํ์ฌ PR ๋จธ์ง ์ ์ด์๋ฅผ ์๋์ผ๋ก ํด๋ก์ฆํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํด์ผ ํ์ต๋๋ค. ์ด๋ ์คํฌ๋ฆฝํธ ๋ด์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋์ , GitHub Actions์ ์๋ํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด AGT๋ GitHub Actions์์ ์ฐ๋์ ๊ฐํํ์ฌ, ๋ณด๋ค ์์ ์ ์ด๊ณ ์๋ํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์ ๊ณตํ๊ฒ ๋์์ต๋๋ค.
- Git์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค
- GitHub ๊ณ์ ์ด ํ์ํฉ๋๋ค
- ํ๋ก์ ํธ์ dev-fe์ dev-be ๋ธ๋์น๊ฐ ์กด์ฌํด์ผ ํฉ๋๋ค
-
.github/CODEOWNERS
ํ์ผ์ด ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค -
.github/pull_request_template.md
ํ์ผ์ด ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค
-
GitHub CLI ์ค์น
# Homebrew๋ฅผ ํตํ ์ค์น brew install gh
-
GitHub ๊ณ์ ์ฐ๋
gh auth login
- ํ๋กฌํํธ์ ๋ฐ๋ผ ์งํ:
-
? What account do you want to log into?
โGitHub.com
์ ํ -
? What is your preferred protocol for Git operations?
โHTTPS
์ ํ -
? Authenticate Git with your GitHub credentials?
โYes
์ ํ -
? How would you like to authenticate GitHub CLI?
โLogin with a web browser
์ ํ - ํ์๋ one-time code๋ฅผ ๋ณต์ฌ
- ์๋์ผ๋ก ์ด๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์์ GitHub ๋ก๊ทธ์ธ
- ๋ณต์ฌํ ์ฝ๋ ์ ๋ ฅํ์ฌ ์ธ์ฆ ์๋ฃ
-
- ํ๋กฌํํธ์ ๋ฐ๋ผ ์งํ:
-
AGT ์คํฌ๋ฆฝํธ ์ค์น
# AGT ์คํฌ๋ฆฝํธ๋ฅผ ์ํ ๋๋ ํฐ๋ฆฌ ์์ฑ mkdir -p ~/agt-tool # ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋ ๋ฐ ์ค์น curl -o ~/agt-tool/agt.sh https://raw.githubusercontent.com/boostcampwm-2024/web19-Clovapatra/refs/heads/main/.agt/agt.sh chmod +x ~/agt-tool/agt.sh
-
ํ๊ฒฝ๋ณ์ ์ค์
# .zshrc ํ์ผ์ ๋ค์ ๋ด์ฉ ์ถ๊ฐ echo 'export PATH="$PATH:$HOME/agt-tool"' >> ~/.zshrc echo 'alias agt="agt.sh"' >> ~/.zshrc # ์ค์ ์ ์ฉ source ~/.zshrc
-
GitHub CLI ์ค์น
a. ์น ๋ธ๋ผ์ฐ์ ์์ https://cli.github.com ์ ์
b. "Download for Windows" ๋ฒํผ ํด๋ฆญ
c. ๋ค์ด๋ก๋๋ ์ค์น ํ์ผ(gh_x.x.x_windows_amd64.msi) ์คํ
d. ์ค์น ๋ง๋ฒ์ฌ์ ์๋ด์ ๋ฐ๋ผ ์งํ:
- "Next" ํด๋ฆญ
- ์ค์น ๊ฒฝ๋ก ํ์ธ ํ "Next" ํด๋ฆญ
- "Install" ํด๋ฆญ
- ์ค์น ์๋ฃ ํ "Finish" ํด๋ฆญ
-
GitHub ๊ณ์ ์ฐ๋
a. PowerShell ๋๋ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ
b. ๋ค์ ๋ช ๋ น์ด ์คํ:
gh auth login
c. ํ๋กฌํํธ์ ๋ฐ๋ผ ์งํ:
-
? What account do you want to log into?
โGitHub.com
์ ํ (๋ฐฉํฅํค๋ก ์ด๋ ํ Enter) -
? What is your preferred protocol for Git operations?
โHTTPS
์ ํ -
? Authenticate Git with your GitHub credentials?
โYes
์ ํ -
? How would you like to authenticate GitHub CLI?
โLogin with a web browser
์ ํ - ํ์๋ one-time code๋ฅผ ๋ณต์ฌ
- ์๋์ผ๋ก ์ด๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์์ GitHub ๋ก๊ทธ์ธ
- ๋ณต์ฌํ ์ฝ๋๋ฅผ ์ ๋ ฅํ์ฌ ์ธ์ฆ ์๋ฃ
-
-
AGT ์คํฌ๋ฆฝํธ ์ค์น
a. PowerShell์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ
b. ๋ค์ ๋ช ๋ น์ด๋ค์ ์์๋๋ก ์คํ:
# AGT ์คํฌ๋ฆฝํธ๋ฅผ ์ํ ๋๋ ํฐ๋ฆฌ ์์ฑ mkdir "$env:USERPROFILE\agt-tool" # ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋ Invoke-WebRequest -Uri "https://raw.githubusercontent.com/boostcampwm-2024/web19-Clovapatra/refs/heads/main/.agt/agt.ps1" -OutFile "$env:USERPROFILE\agt-tool\agt.ps1" # agt.cmd ํ์ผ ์์ฑ (PowerShell ์คํฌ๋ฆฝํธ๋ฅผ cmd ๋ช ๋ น์ด๋ก ์คํํ๊ธฐ ์ํ ๋ํผ) @" @echo off powershell -ExecutionPolicy RemoteSigned -File "%USERPROFILE%\agt-tool\agt.ps1" %* "@ | Out-File -FilePath "$env:USERPROFILE\agt-tool\agt.cmd" -Encoding ascii
-
ํ๊ฒฝ๋ณ์ ์ค์
a. ์์คํ ํ๊ฒฝ ๋ณ์ ํธ์ง์ฐฝ ์ด๊ธฐ:
- Windows ํค + R ์ ๋๋ฌ ์คํ ์ฐฝ ์ด๊ธฐ
- "sysdm.cpl" ์ ๋ ฅ ํ ํ์ธ
- "๊ณ ๊ธ" ํญ ์ ํ
- "ํ๊ฒฝ ๋ณ์" ๋ฒํผ ํด๋ฆญ
b. Path ํ๊ฒฝ๋ณ์ ํธ์ง:
- "์ฌ์ฉ์ ๋ณ์" ์น์ ์์ "Path" ์ ํ
- "ํธ์ง" ๋ฒํผ ํด๋ฆญ
- "์๋ก ๋ง๋ค๊ธฐ" ๋ฒํผ ํด๋ฆญ
-
%USERPROFILE%\agt-tool
์ ๋ ฅ - "ํ์ธ" ๋ฒํผ ํด๋ฆญํ์ฌ ๋ชจ๋ ์ฐฝ ๋ซ๊ธฐ
c. PowerShell ์คํ ์ ์ฑ ์ค์ :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
-
์ค์น ํ์ธ
a. ์๋ก์ด ํฐ๋ฏธ๋ ์ฐฝ์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ด๋ก AGT๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธ:
agt --help
ํ์ฌ ์ ์ฅ์์ ๋ชจ๋ ์ด์๋ฅผ ๋ฒํธ ์์ผ๋ก ์ ๋ ฌํ์ฌ ๋ณด์ฌ์ค๋๋ค.
$ agt list
=== Open Issues ===
#2 [BE] ์๋ก์ด ๊ฒ์๋ฐฉ์ ์์ฑํ๋ค.
#4 [BE] ๊ฐ์ค๋ ๊ฒ์๋ฐฉ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค.
#8 [FE] ๊ฒ์๋ฐฉ ์ปดํฌ๋ํธ ์์ฑ
#9 [BE] ๋๋ค์์ ์ค์ ํ๋ค
์ด์ ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ์ ํด๋น ์ด์์ ์ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ธ๋์น ๋ช
๋ช
๊ท์น:
feature-{fe/be}-#{issue-number}
- ์์ค ๋ธ๋์น:
- FE ์ด์:
dev-fe
- BE ์ด์:
dev-be
- FE ์ด์:
$ agt branch
=== Open Issues ===
#2 [BE] ์๋ก์ด ๊ฒ์๋ฐฉ์ ์์ฑํ๋ค.
#4 [BE] ๊ฐ์ค๋ ๊ฒ์๋ฐฉ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค.
#8 [FE] ๊ฒ์๋ฐฉ ์ปดํฌ๋ํธ ์์ฑ
#9 [BE] ๋๋ค์์ ์ค์ ํ๋ค
Select issue number: 2
Creating and switching to branch: feature-be-#2 from dev-be
Successfully created and switched to branch: feature-be-#2
ํ์ฌ feature ๋ธ๋์น์์ PR์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
- PR ์ ๋ชฉ์ ์ด์ ์ ๋ชฉ๊ณผ ๋์ผํ๊ฒ ์ค์ ๋ฉ๋๋ค.
- Reviewer๋ CODEOWNERS ํ์ผ์์ ๋ณธ์ธ์ ์ ์ธํ ๋ชจ๋ ์ฌ๋์ผ๋ก ์ค์ ๋ฉ๋๋ค.
- Assignees๋ ๋ณธ์ธ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
- PR ํ ํ๋ฆฟ์ด ์๋์ผ๋ก ์ ์ฉ๋๋ฉฐ ์ด์ ๋ฒํธ๊ฐ ์๋ ์ ๋ ฅ๋ฉ๋๋ค.
$ agt pr
Creating PR with title: [BE] ์๋ก์ด ๊ฒ์๋ฐฉ์ ์์ฑํ๋ค.
Base branch: dev-be
Reviewers: @reviewer1,@reviewer2
Successfully created PR for issue #2
-
Git ์ ์ฅ์๊ฐ ์๋ ๊ฒฝ์ฐ
Error: Not a git repository. Please run 'git init' first.
โก๏ธ ํด๊ฒฐ:
git init
๋ช ๋ น์ด๋ก Git ์ ์ฅ์ ์ด๊ธฐํ -
GitHub CLI ์ธ์ฆ ์ค๋ฅ
Error: Please run 'gh auth login' to authenticate with GitHub.
โก๏ธ ํด๊ฒฐ:
gh auth login
์คํํ์ฌ ์ฌ์ธ์ฆ -
์๋ชป๋ ์ด์ ์ ๋ชฉ ํ์
Error: Issue title must start with [FE] or [BE]
โก๏ธ ํด๊ฒฐ: ์ด์ ์ ๋ชฉ ํ์์
[FE]
๋๋[BE]
๋ก ์์ํ๋๋ก ์์ -
์์ค ๋ธ๋์น๊ฐ ์๋ ๊ฒฝ์ฐ
Error: Source branch 'dev-fe' does not exist
โก๏ธ ํด๊ฒฐ: ํด๋นํ๋ dev-fe ๋๋ dev-be ๋ธ๋์น๊ฐ ์กด์ฌํ๋์ง ํ์ธ
-
feature ๋ธ๋์น๊ฐ ์๋ ๊ณณ์์ PR ์์ฑ ์๋
Error: Current branch is not a feature branch
โก๏ธ ํด๊ฒฐ: feature-fe-#๋ฒํธ ๋๋ feature-be-#๋ฒํธ ํ์์ ๋ธ๋์น์์๋ง PR ์์ฑ ๊ฐ๋ฅ
# ์คํฌ๋ฆฝํธ ์คํ ๊ถํ ๋ถ์ฌ
chmod +x ~/agt-tool/agt.sh
# PowerShell ์คํ ์ ์ฑ
๋ณ๊ฒฝ
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
๐ค Ground Rule
๐ Convention
๐ณ Git Branch ์ ๋ต
๐ ๏ธ AGT - Automatic Git & Github Tool
๐ WebRTC Mesh โ ํธ๋ํฝ ๊ณ์ฐ
๐ข WebRTC Mesh - ํ๋ํ ์ฌ์
๐ฌ WebRTC๋ฅผ ์์๋ณด์
๐ฎ SSE(Server Sent Events)
๐ SSE Pagination
โณ Socket ํต์ ์์ ๋น๋๊ธฐ ์์
์์ ๋ณด์ฅ ๋ฐฉ๋ฒ
๐ก Redis pub/sub๋ฅผ ํ์ฉํ SSE ์ ์ฉ๊ธฐ
๐๏ธ Naver Cloud Platform์ ํ์ฉํ ๋ฐฐํฌ ์ ๋ต
โ๏ธ๐ ๋ถํ ํ
์คํธ: ๋จ์ผ ์ธ์คํด์ค VS NKS
๐ดโโ๏ธ Redis๋ก ๊ฒ์๋ฐฉ ๊ด๋ฆฌ ์ต์ ํ: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฑ๋ฅ ๊ฐ์
๐ ํ์๋ก ์บ๋ฆฐ๋
๐ค ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ ํ
ํ๋ฆฟ
๐ค ํ๊ณ ํ
ํ๋ฆฟ
0๏ธโฃ 0์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
1๏ธโฃ 1์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
2๏ธโฃ 2์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
3๏ธโฃ 3์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
4๏ธโฃ 4์ฃผ์ฐจ ๋ฉํ ๋ง ์ผ์ง
0๏ธโฃ 0์ฃผ์ฐจ ๋ฐํ
1๏ธโฃ 1์ฃผ์ฐจ ๋ฐํ
2๏ธโฃ 2์ฃผ์ฐจ ๋ฐํ
3๏ธโฃ 3์ฃผ์ฐจ ๋ฐํ
4๏ธโฃ 4์ฃผ์ฐจ ๋ฐํ
5๏ธโฃ ์ต์ข
๋ฐํ