์ํ๋ ์นธ์ ํฐ๋ฏธ๋์ ์ถ๊ฐํ๊ณ , ๋๋ ์ฐ๋ macOS ์ฑ
๋น ์นธ์ +๋ก ์์ํ๊ณ ,
ํญยท์ข์ฐยท์ํยท๊ฒฉ์๋ก ์์
์ ๋ง๊ฒ ํผ์นฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ ยท ๋ ์ด์์ ยท ์์ํ๊ธฐ ยท ๋จ์ถํค ยท ๊ธฐ์ฌํ๊ธฐ
์ค์ Chop ์ฐฝ์ ์ค๋ฆฌ์ง๋ ๋ฐฐ๊ฒฝ ์์ ๊ตฌ์ฑํ ์ด๋ฏธ์ง ยท ๋ผ์ดํธ / ๋คํฌ
Chop์ ์ฌ๋ฌ ์ ธ์ ํ ์ฐฝ์์ ๋ค๋ฃจ๋ macOS ๋ค์ดํฐ๋ธ ํฐ๋ฏธ๋ ์ฑ์ ๋๋ค. Swift์ AppKit์ผ๋ก ๋ง๋ค๊ณ , Ghostty์ libghostty ์์ง๊ณผ Metal ๋ ๋๋ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฒ์ ์ด๋ฉด 2ร2๋ก ๋๋ ๋ค ์นธ ์ค ํฐ๋ฏธ๋ 1์ด ๋ฐ๋ก ์คํ๋ฉ๋๋ค. ๋๋จธ์ง ์นธ์ ์ค์์ +๋ฅผ
๋๋ฅผ ๋ ์ด๋ฆฝ๋๋ค. ํฐ๋ฏธ๋์ ๋ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐฐ์น๋ฅผ ๋ฐ๊พธ๋ฉด์ ๊ฐ ์นธ์์ ์์
์ ์ด์ด๊ฐ ์ ์์ต๋๋ค.
ํฐ๋ฏธ๋๊ณผ ํ์ผ ํธ๋ฆฌ ์ฌ์ด์ ์ธ๋ก ์์ญ์ ์๋ + ๋๋ โT๋ก ๊ณ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋น ์นธ์ ์์๋๋ก ์ฑ์ด ๋ค, ๋ชจ๋ ์ฐจ๋ฉด ์๋์ ๋ ์นธ์ง๋ฆฌ ํ์ ์ถ๊ฐํ๊ณ ์ฒซ ์นธ์ ์ฝ๋๋ค.
๋ค์ ์ถ๊ฐ๋ ์์ ๋น ์นธ์ ์ฑ์๋๋ค. ์ด ๋ฒํผ์ ์คํฌ๋กคํ๊ฑฐ๋ ํ์ผ ํธ๋ฆฌ๋ฅผ ์จ๊ฒจ๋ ๋จ์ต๋๋ค.
์ด๋ฆ์ ๋ฒ๊ธฐ์ ๋๊ฐ๋๊ฐ ์ด๋งค์์ ๊ฐ์ ธ์์ต๋๋ค. ํ๋์ ์ฐฝ์ ๋๊ฐ๋๊ฐ ๋๋ ์ฌ๋ฌ ํฐ๋ฏธ๋๋ก ์ฐ๋ ๋ชจ์ต์์ ์ถ๋ฐํ์ต๋๋ค.
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| GitHub ํ๋ก์ ํธ ํด๋ก | ์ค๋ฅธ์ชฝ ์ถ๊ฐ ์์ญ ํ๋จ์์ ์ ์ฅ์๋ฅผ ํด๋ก ํ๊ณ , ์ ์ฐฝ์ ํฐ๋ฏธ๋๊ณผ ํ์ผ ํธ๋ฆฌ๋ฅผ ํด๋น ํด๋์์ ์ฝ๋๋ค. |
| ์น์ฌ์ดํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | ํฐ๋ฏธ๋ ์์ ์ ์นธ์์ ๋ก์ปฌ ํ์ด์ง์ ์น์ฌ์ดํธ๋ฅผ ์ด๊ณ , ๋ฐฐ์น๋ฅผ ๋ฐ๊ฟ๋ ์ ๋ ฅ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. |
| ๋ก์ปฌ ์๋ฒ ์ฃผ์ | ๊ฐ ํฐ๋ฏธ๋์ ์คํ ์ค์ธ ๋ก์ปฌ ํฌํธ๋ฅผ ํค๋์ ํ์ํ๊ณ ์ ์น ์นธ์ผ๋ก ์ฝ๋๋ค. ์ฌ๋ฌ ๊ฐ๋ฉด ์ฃผ์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค. |
| ํ๋ก์ ํธ๋ณ ์๋์ฐ | ํ์ผ ๋ฉ๋ด๋ Dock ๋ฉ๋ด์์ ์ ์ฐฝ์ ์ฝ๋๋ค. ํ๋ก์ ํธ๋ง๋ค ์ ธยท๋ ์ด์์ยทํ์ผ ํธ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ ์งํฉ๋๋ค. |
| ์ต๊ทผ ํ๋ก์ ํธ์ ์์ ๊ตฌ์ฑ | ์ต๊ทผ ํด๋๋ฅผ ๋ค์ ์ด๊ฑฐ๋, ์ด๋ฆ ๋ถ์ฌ ์ ์ฅํ ๋ฐฐ์นยท์์ ๊ฒฝ๋กยท์น ์ฃผ์๋ฅผ ์ ์ฐฝ์์ ๋ถ๋ฌ์ต๋๋ค. |
| ๊ณ์ ํฐ๋ฏธ๋ ์ถ๊ฐ | ๋น ์นธ ์ค์์ + ๋๋ ์ค๋ฅธ์ชฝ ์ธ๋ก ์์ญ์ +๋ก ํฐ๋ฏธ๋์ ์ฝ๋๋ค. ๋ค ์นธ์ ์ฑ์ด ๋ค์๋ ์๋๋ก ์ถ๊ฐํฉ๋๋ค. |
| ๋ค ๊ฐ์ง ๋ณด๊ธฐ | ์๋จ ํญ, ์ข์ฐ, ์ํ, ๊ฒฉ์๋ก ์ ํํ๋ฉฐ ๊ธฐ์กด ํฐ๋ฏธ๋์ ๋ชจ๋ ์ ์งํฉ๋๋ค. |
| ์์ ๋ก์ด ๋ฐฐ์น | ๋ถํ ๊ฒฝ๊ณ๋ฅผ ๋๋๊ทธํด ํฌ๊ธฐ๋ฅผ ๋ฐ๊พธ๊ณ , ํธ์ง ๋ชจ๋์์ ์นธ์ ๋์ด ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ๋๋ค. |
| ํ ์นธ์ ์ง์ค | ํ์ฌ ์นธ์ ํฌ๊ฒ ๋ณด๊ฑฐ๋ ์๋ ๋ฐฐ์น๋ก ๋์๊ฐ๋๋ค. ๋ค๋ฅธ ์ ธ์ ์์ ์ ๊ณ์๋ฉ๋๋ค. |
| ๋ผ์ดํธยท๋คํฌ ๋ชจ๋ | ์๋จ์ ๋ฌยทํด ์์ด์ฝ์ผ๋ก ์ ํํฉ๋๋ค. ํฐ๋ฏธ๋ ์์๋ ํจ๊ป ๋ฐ๋๋ฉฐ ์ ํ์ ๊ธฐ์ตํฉ๋๋ค. |
| ์ค๋ฅธ์ชฝ ํ์ผ ํธ๋ฆฌ | ๊ฒฝ๋ก ์ ๋ ฅ, macOS ํด๋ ์ ํ๊ธฐ, ํยท๋ค์ด๋ก๋ยท๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ๋ก ํด๋๋ฅผ ํ์ํฉ๋๋ค. |
| ํ์ผ ์ด๋ฆ ๊ฒ์ | ํ์ฌ ํด๋์ ํ์ ํด๋์์ ํ์ผยทํด๋๋ฅผ ์ฐพ๊ณ , ๊ฐ์ ์ด๋ฆ์ ์๋ ๊ฒฝ๋ก๋ก ๊ตฌ๋ถํฉ๋๋ค. |
| ๊ฒฝ๋ก ๋๋๊ทธ ์ ๋ ฅ | ํ์ผ์ด๋ ํด๋๋ฅผ ํฐ๋ฏธ๋์ ๋์ผ๋ฉด ์ ธ ์ธ์๋ก ์ธ์ฉํ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค. Enter๋ ๋ณด๋ด์ง ์์ต๋๋ค. |
| ์์ ๊ณต๊ฐ ๋ณต์ | ๋ฐฐ์นยท์ด๋ฆยท๊ฒฝ๋กยท์ ํํ ์นธ์ ์ ์ฅํ๊ณ , ๋ค์ ์คํ ๋ ์ ์ ธ๋ก ์ฝ๋๋ค. |
ํ๊ธ ์
๋ ฅ, ํ
์คํธ ์ ํ, ์คํฌ๋กค๋ฐฑ, ๋ณต์ฌยท๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. ์คํ ์ค์ธ ์์
์ ๋ซ์ ๋๋
ํ์ธํ๋ฉฐ, ์
ธ์ด ์ข
๋ฃ๋ ์นธ์ ๋ค์ +๋ก ์ด ์ ์์ต๋๋ค.
ํค๋์ ์ด๋ฆ์ด๋ ์ฐํ ์์ด์ฝ์ ๋๋ฅด๋ฉด ํฐ๋ฏธ๋ ์ด๋ฆ์ ๋ฐ๊ฟ๋๋ค. ์๋จ ํญ ๋ณด๊ธฐ์์๋ ํญ์
์ฐํด๋ฆญํด **์ด๋ฆ ๋ฐ๊พธ๊ธฐโฆ**๋ฅผ ์ ํํฉ๋๋ค. โโงR๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ฐ๊พผ ์ด๋ฆ์ ๋ค์ ์คํ์๋ ์ ์ง๋ฉ๋๋ค.
์๋จ ์ผ์ชฝ์ ๋ค ์์ด์ฝ์ผ๋ก ๋ณด๊ธฐ๋ฅผ ๋ฐ๊ฟ๋๋ค.
| ๋ณด๊ธฐ | ๋ฐฐ์น |
|---|---|
| ํญ | ๋ชจ๋ ์นธ์ ์๋จ ํญ์ผ๋ก ์ ์งํ๊ณ ์ ํํ ํฐ๋ฏธ๋ ํ๋๋ฅผ ํฌ๊ฒ ํ์ํฉ๋๋ค. |
| ์ข์ฐ | ์ด๋ฆฐ ์นธ์ ๊ฐ๋ก๋ก ๋๋ํ ๋ฐฐ์นํฉ๋๋ค. |
| ์ํ | ์ด๋ฆฐ ์นธ์ ์ธ๋ก๋ก ์์ต๋๋ค. |
| ๊ฒฉ์ | ๊ธฐ๋ณธ 2ร2์์ ๋ ์ด์ ์ ์งํ๋ฉฐ ์๋๋ก ๋์ด๋ฉ๋๋ค. |
ํฐ๋ฏธ๋์ด ๋ง์๋ ๋ณด๊ธฐ ์ ํ ๋๋ฌธ์ ์ ธ์ ๋ซ์ง ์์ต๋๋ค. ์นธ์ ์ต๋ 16๊ฐ๊น์ง ์ถ๊ฐํ ์ ์๊ณ , ์ต์ ํฌ๊ธฐ์ธ 280ร180pt๋ฅผ ๋๋ ๋ฐฐ์น๋ ๊ฐ๋กยท์ธ๋ก ์คํฌ๋กค๋ก ํ์ํฉ๋๋ค. ํค๋ณด๋๋ก ํฌ์ปค์ค๋ฅผ ์ฎ๊ธฐ๋ฉด ํด๋น ์นธ์ด ๋ณด์ด๋๋ก ์คํฌ๋กคํฉ๋๋ค.
๋ ์ด์์ ํธ์ง์ ์ผ๋ฉด ์คํ ์ค์ธ ์นธ ์ค์์๋ ์ถ๊ฐ ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค. ํค๋์ ์ด๋ ์์ก์ด๋ฅผ ๋ค๋ฅธ ์นธ์ผ๋ก ๋๋๊ทธํ๋ฉด ์นธ ์ ์ฒด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๋ฐ๋ผ์ค๊ณ , ๋์ ์๋ฆฌ๋ก ์ด๋ํฉ๋๋ค. ์ ธ๊ณผ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ ์ ์ง๋ฉ๋๋ค. ๋น ์นธ์ ๋ซ์ผ๋ฉด ์ธ์ ์นธ๊ณผ ํฉ์ณ์ง๋ฉฐ ๋ง์ง๋ง ํ ์นธ์ ๋จ์ต๋๋ค.
๋๊ฒ ๋ณผ ๋๋ ํญ์ผ๋ก. ๋ค์ ๋๋ ๋๋ ๊ธฐ์กด ํฐ๋ฏธ๋์ ๊ทธ๋๋ก.
ํฐ๋ฏธ๋ ์ถ๊ฐ ์์ญ ํ๋จ์ ๋ค์ด๋ก๋ ์์ด์ฝ ๋๋ ํ์ผ โ GitHub ํ๋ก์ ํธ ํด๋ก โฆ์ ๋๋ฆ
๋๋ค.
GitHub ์ ์ฅ์์ HTTPSยทSSH ์ฃผ์๋ owner/repo๋ฅผ ์
๋ ฅํ๊ณ , ์ ์ฅ ์์น์ ํด๋ ์ด๋ฆ์ ์ ํ ๋ค
ํด๋ก ํ๊ณ ์ด๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ ํ๋ก์ ํธ ์ฐฝ์์ ํฐ๋ฏธ๋์ด ์คํ๋ฉ๋๋ค. ํ์ผ ํธ๋ฆฌ๋ ๊ฐ์ ํด๋์์ ์์ํฉ๋๋ค.
์งํ ์ค์๋ ์ทจ์ํ ์ ์์ผ๋ฉฐ, ์คํจํ๋ฉด ์ ๋ ฅ์ ์ ์งํด ์์ ํ ๋ค ๋ค์ ์๋ํฉ๋๋ค. ๊ฐ์ ์ด๋ฆ์ ํด๋๋ ํ์ผ์ ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ๋น๊ณต๊ฐ ์ ์ฅ์๋ ์ด Mac์ ์ค์ ๋ Git credential helper๋ SSH agent๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ์ฆ ์ค์ ์ด ์๊ฑฐ๋ SSH ํธ์คํธ๋ฅผ ์์ง ํ์ธํ์ง ์์๋ค๋ฉด ๋จผ์ ํฐ๋ฏธ๋์์ Git ์ธ์ฆ์ ์ค์ ํด์ผ ํฉ๋๋ค. GitHub ๊ณ์ ์ฐ๊ฒฐยท์ ์ฅ์ ๋ชฉ๋ก ํ์ยท์ ์๊ฒฉ ์ ์ฅ์ ์์ฑ์ ํฌํจํ์ง ์์ต๋๋ค. ํด๋ก ํ ์์กด์ฑ ์ค์น๋ ์ ์ฅ์์ ๋ช ๋ น์ ์๋์ผ๋ก ์คํํ์ง ์์ต๋๋ค.
ํฐ๋ฏธ๋์์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํ๋ฉด ํค๋์ localhost:3000 ๊ฐ์ ์ฃผ์๊ฐ ํ์๋ฉ๋๋ค. ํ๋๋ฉด
ํด๋ฆญํด ๊ฐ์ ์ฐฝ์ ์ ์น ์นธ์ผ๋ก ์ด๊ณ , ์ฌ๋ฌ ๊ฐ๋ฉด +1์ฒ๋ผ ์ถ๊ฐ ๊ฐ์์ ํจ๊ป ์ฃผ์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.
๊ฐ์ ์ฃผ์๊ฐ ์ด๋ฏธ ์ด๋ ค ์์ผ๋ฉด ๊ทธ ์นธ์ผ๋ก ์ด๋ํฉ๋๋ค. ์ฃผ์๋ฅผ ์ฐํด๋ฆญํ๋ฉด ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ๋ก ์ด ์๋ ์์ต๋๋ค.
ํญ ๋ณด๊ธฐ์์๋ ์ ํํ ํฐ๋ฏธ๋์ ์ฃผ์๋ฅผ ์ค๋ฅธ์ชฝ์ ํ์ํฉ๋๋ค. ์๋ฒ ์ข
๋ฃยทํฌํธ ๋ณ๊ฒฝ์ ์ฝ1์ด ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
์ข์ ์นธ์์๋ :3000์ฒ๋ผ ํฌํธ๋ง ํ์ํ๋ฉฐ ์ ์ฒด ์ฃผ์๋ ํดํ๊ณผ ๋ชฉ๋ก์ ๋จ์ต๋๋ค. ๊ฒฝ๋ก๊ฐ ๊ฐ๋ ค์ง๋ฉด ์นธ ์ด๋ฆ์ ํดํ์์ ํ์ธํฉ๋๋ค.
Chop์ด ์ฐ ์
ธ๊ณผ ๊ทธ ์์ ํ๋ก์ธ์ค์ ์ค์ TCP listener๋ฅผ ์กฐํํฉ๋๋ค. ๋ฃจํ๋ฐฑ ๋๋ ์ ์ฒด ์ธํฐํ์ด์ค๋ก
๋ฐ์ธ๋ฉํ ํฌํธ๊ฐ ๋์์ด๋ฉฐ, ๋ค๋ฅธ ํฐ๋ฏธ๋ยท์ธ๋ถ ์ฑ์ ์๋ฒ๋ ์์ง ์์ต๋๋ค. ๋ณ๋ ๊ถํ ์์ฒญ์ด๋ ์๋ฒ ์๋ ์ ์์ ์์ต๋๋ค.
์๋ฒ ์ฃผ์๋ ๊ธฐ๋ณธ HTTP๋ก ์ฝ๋๋ค. ํ์ฌ ํ๋ฉด์ ๊ฐ์ ํฌํธ์ ๋ก์ปฌ ์ฃผ์(localhostยท๋ฃจํ๋ฐฑยท์ ์ฒด ์ธํฐํ์ด์ค)๊ฐ
์์ผ๋ฉด ํ๋ฉด์ ๋ง์ง๋ง ์ฃผ์์ HTTP/HTTPS๋ฅผ ๋ฐ์ํ๋ฏ๋ก, ๋ค์ ๋์จ HTTP ์ฃผ์๊ฐ ์์ HTTPS๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
ํ์ธํ ๋ฐฉ์์ ํ๋ฉด์์ ํํธ๊ฐ ์ฌ๋ผ์ ธ๋ ํด๋น ์๋ฒ๊ฐ ์ข
๋ฃ๋ ๋๊น์ง ์ ์ง๋ฉ๋๋ค.
TCP ํฌํธ๋ง์ผ๋ก HTTP ์๋น์ค ์ฌ๋ถ๊น์ง ํ๋ณํ์ง๋ ์์ต๋๋ค. Docker/๋ณ๋ ๋ฐ๋ชฌ์ด ์์ ํ๊ฑฐ๋ ์
ธ์์ ์์ ํ
๋ถ๋ฆฌ๋ ์๋ฒ, ์๊ฒฉ SSH ์๋ฒ์ ์ฃผ์๋ ์๋ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์คํ ๋ ์ด์ ์ฃผ์๋ฅผ ์ ์ฅํด ๋ณด์ฌ์ฃผ์ง ์์ต๋๋ค.
์ค๋ฅธ์ชฝ ์ถ๊ฐ ์์ญ ํ๋จ์ ์ง๊ตฌ๋ณธ ์์ด์ฝ ๋๋ โโงB๋ก ์น ์นธ์ ์ฝ๋๋ค. ์ฃผ์๋ฅผ ์
๋ ฅํ๊ณ
Enter๋ฅผ ๋๋ฅด๋ฉด ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค. localhost:3000์ HTTP, ๋๋ฉ์ธ๋ง ์
๋ ฅํ๋ฉด HTTPS๋ก ์ฝ๋๋ค.
๋น ์นธ๋ถํฐ ์ฑ์ฐ๊ณ , ๋ชจ๋ ์ฐจ๋ฉด ์๋์ ํ์ ์ถ๊ฐํฉ๋๋ค. ํฐ๋ฏธ๋๊ณผ ์น ์นธ์ ํฉํด ์ต๋ 16๊ฐ๊น์ง ์ด ์ ์์ต๋๋ค.
๋ค๋กยท์์ผ๋กยท์๋ก๊ณ ์นจ๊ณผ ๋ก๋ฉ ์ค์ง๋ฅผ ์ง์ํฉ๋๋ค. ์ฃผ์ ์ ๋ ฅ์ฐฝ๊ณผ ์ค๋ฅธ์ชฝ ์์ ๋ธ๋ผ์ฐ์ ์์ ์ด๊ธฐ ๋ฒํผ์ผ๋ก ์ฃผ์๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ด๊ฐ ์ ์์ต๋๋ค. ๋ก์ปฌ ์๋ฒ๊ฐ ๊บผ์ ธ ์์ผ๋ฉด ์ฃผ์์ ์คํ ์ํ๋ฅผ ํ์ธํ ๋ค ๋ค์ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ๋๋ฆ ๋๋ค. ๋ค์ด๋ก๋๋ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํฉ๋๋ค.
ํญยท๊ฒฉ์ยทํ๋ยท์๋ฆฌ ๋ฐ๊พธ๊ธฐ๋ ๊ฐ์ ์นํ์ด์ง๋ฅผ ์ ์งํ๋ฏ๋ก ์ ๋ ฅ ๋ด์ฉ๊ณผ ์คํ ์ค์ธ ์คํฌ๋ฆฝํธ๊ฐ ์ด์ด์ง๋๋ค. ์น ์นธ์ ๋ซ๊ฑฐ๋ ์ฑ์ ์ข ๋ฃํ ๋ค์๋ ์ฃผ์๋ง ๋ณต์ํ๊ณ ํ์ด์ง๋ฅผ ์๋ก ๋ถ๋ฌ์ต๋๋ค. ํ์ด์ง์ ์ ๋ ฅ ๋ด์ฉ๊ณผ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ์์ ๊ณต๊ฐ ํ์ผ์ ์ ์ฅํ์ง ์์ต๋๋ค. ์ฟ ํค์ ์น ์ ์ฅ์๋ WebKit์ ๊ธฐ๋ณธ ์ ์ฅ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ HTTPยทHTTPS ์ฃผ์๋ฅผ ๋ฐ์ผ๋ฉฐ, ์ธ์ฆ์ ์ค๋ฅ๋ ๊ธฐ๋ณธ ๋ณด์ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
ํ์ผ ํธ๋ฆฌ๋ ๊ณตํต ํด๋ฐ ์๋, ํฐ๋ฏธ๋ ์ค๋ฅธ์ชฝ์์ ์ด๋ฆฝ๋๋ค. โโงE๋ก ํ์ํ๊ฑฐ๋ ์จ๊ธฐ๊ณ ,
๊ฒฝ๊ณ๋ฅผ ๋๋๊ทธํด ํญ์ ์กฐ์ ํฉ๋๋ค. ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํ ๋ค Enter๋ฅผ ๋๋ฅด๊ฑฐ๋ โO๋ก macOS ํด๋
์ ํ๊ธฐ๋ฅผ ์ด์ด ํ์ํ ํด๋๋ฅผ ์ง์ ํฉ๋๋ค.
ํด๋๋ฅผ ํผ์น ๋ ํ์ ํญ๋ชฉ์ ์ฝ๊ณ , ํด๋๋ถํฐ ์ ๋ ฌํฉ๋๋ค. ์จ๊น ํญ๋ชฉ์ ์ ์ธํ๋ฉฐ ์ฌ๋ณผ๋ฆญ ๋งํฌ์
์ฑ ํจํค์ง๋ ํผ์น์ง ์์ต๋๋ค. ํ์ผ์ ๋๋ธ ํด๋ฆญํ๊ฑฐ๋ Enter๋ฅผ ๋๋ฅด๋ฉด Finder์์ ์ ํํ๊ณ , ์ฐํด๋ฆญ ๋ฉ๋ด๋
โC๋ก ๊ฒฝ๋ก๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์คํ ์ค์ธ ํฐ๋ฏธ๋ ๋ณธ๋ฌธ์ผ๋ก ๋๋๊ทธํด ๊ฒฝ๋ก๋ฅผ ๋ฃ์ ์๋ ์์ต๋๋ค.
๋ฐ๋ก๊ฐ๊ธฐ ์๋ ๊ฒ์์ฐฝ์ ์ด๋ฆ์ ์ ๋ ฅํ๋ฉด ํ์ ํด๋๊น์ง ๊ฒ์ํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์๋ ๊ฒฝ๋ก๋ก ํ์ํ๋ฉฐ, ๊ฒ์์ด๋ฅผ ์ง์ฐ๋ฉด ์๋ ํธ๋ฆฌ๋ก ๋์์ต๋๋ค. ๊ฒฐ๊ณผ ํด๋๋ฅผ ๋๋ธ ํด๋ฆญํ๊ฑฐ๋ Enter๋ฅผ ๋๋ฅด๋ฉด ๊ทธ ํด๋๋ฅผ ์ฝ๋๋ค. ๊ฒฐ๊ณผ๊ฐ 500๊ฐ๋ฅผ ๋์ผ๋ฉด ๊ฒ์์ด๋ฅผ ์ขํ ์ ์๋๋ก ์๋ดํฉ๋๋ค.
๊ฒ์ ์ค์๋ ์ฐพ์ ํญ๋ชฉ๋ถํฐ ํ์ํฉ๋๋ค. ๊ฒ์์ด๋ฅผ ๋ฐ๊พธ๋ ๋์ ์ฝ์ ํด๋ ๋ชฉ๋ก์ ์ต๋ 10์ด ๋์ ์ฌ์ฌ์ฉํ๋ฉฐ, ์๋ก๊ณ ์นจ์ด๋ ํด๋ ์ด๋ ์ ์บ์๋ฅผ ๋น์ ์ ํ์ผ๊ณผ ์ญ์ ๋ ํ์ผ์ ๋ฐ์ํฉ๋๋ค.
ํ์ผ ํธ๋ฆฌ์ ํ์ ๊ฒฝ๋ก์ ํฐ๋ฏธ๋์ ์์ ๊ฒฝ๋ก๋ ๋ ๋ฆฝ์ ์ ๋๋ค. ๋ง์ง๋ง ํด๋์ ํจ๋ ํ์ ์ฌ๋ถ, ํญ์ ๋ค์ ์คํ์๋ ์ ์ง๋ฉ๋๋ค. ์ฝ๊ธฐ์ ์คํจํ๋ฉด ๊ฒฝ๋ก ์์ ยทํด๋ ์ ํยท๋ฐ๋ก๊ฐ๊ธฐยท์๋ก๊ณ ์นจ์ผ๋ก ๋ค์ ์๋ํ ์ ์์ต๋๋ค.
- macOS 14 ์ด์
- Xcode 16 ์ด์ / Swift 6 ์ด์
- Xcode Command Line Tools (
xcode-select -p๋ก ํ์ธ)
git clone https://github.com/safethecode/chop.git
cd chop
./scripts/run.sh์ฒซ ๋น๋๋ ๊ณต์ Ghostty ์์ค์ Zig 0.14.1์ ๋ด๋ ค๋ฐ์ libghostty๋ฅผ ์ปดํ์ผํฉ๋๋ค. Metal ๋๊ตฌ๊ฐ ์์ผ๋ฉด Xcode์ ๊ณต์ MetalToolchain ๊ตฌ์ฑ ์์๋ ์ค๋นํฉ๋๋ค. ์ดํ์๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ๊ณ ์ ๋ฒ์ ๊ณผ ๋น๋ ํ๊ฒฝ ์๋ด๋ ์์กด์ฑ ๋ฌธ์์ ์์ต๋๋ค.
๋๋ฒ๊ทธ ์ฑ์ build/debug/Chop.app์ ์์ฑ๋ฉ๋๋ค. ์ด๋ฏธ Chop์ด ์คํ ์ค์ด๋ฉด ๊ธฐ์กด ์ฑ์
ํ์ฑํํ๋ฏ๋ก, ๋ณ๊ฒฝํ ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด ๋จผ์ ์ฑ์ ์ข
๋ฃํฉ๋๋ค.
./scripts/build-app.sh releasebuild/release/Chop.app์ด ์์ฑ๋ฉ๋๋ค. ๋น๋ ํ ๋ฐ๋ก ์คํํ๋ ค๋ฉด ./scripts/run.sh release๋ฅผ
์ฌ์ฉํฉ๋๋ค. ํ์ฌ๋ ๊ฐ๋ฐ์ฉ ์์ ์๋ช
์ ์ฌ์ฉํ๋ฉฐ ์ธ๋ถ ๋ฐฐํฌ์ฉ Developer ID ์๋ช
๊ณผ ๊ณต์ฆ์
ํฌํจํ์ง ์์ต๋๋ค.
| ๋์ | ๋จ์ถํค |
|---|---|
| ์ ์๋์ฐ / ํ๋ก์ ํธ ํด๋์์ ์ ์๋์ฐ | โN / โโงN |
| ํฐ๋ฏธ๋ ์ถ๊ฐ / ํ์ฌ ์นธ ๋ซ๊ธฐ | โT / โW |
| ์น์ฌ์ดํธ ์ถ๊ฐ / ์น ์ฃผ์ ์ ๋ ฅ | โโงB / โL |
| ์น ์๋ก๊ณ ์นจ / ๋ค๋ก / ์์ผ๋ก | โR / โ[ / โ] |
| ์นํ์ด์ง ํ๋ / ์ถ์ / ์๋ ํฌ๊ธฐ | โ= / โ- / โ0 |
| ์ค๋ฅธ์ชฝ / ์๋๋ก ๋๋๊ธฐ | โD / โโงD |
| ๋ ์ด์์ ํธ์ง | โโงL |
| ํ์ผ ํธ๋ฆฌ ๋ณด๊ธฐ / ์จ๊ธฐ๊ธฐ | โโงE |
| ํ์ผ ํธ๋ฆฌ์ ํด๋ ์ ํ | โO |
| ์ธ์ ์นธ์ผ๋ก ์ด๋ | โโฅ๋ฐฉํฅํค |
| ํธ์ง ์ค ์ธ์ ์นธ๊ณผ ์๋ฆฌ ๋ฐ๊พธ๊ธฐ | โโฅโง๋ฐฉํฅํค |
| ํ์ฌ ์นธ ํ๋ / ์ ์ฒด ๋ฐฐ์น ๋ณต๊ท | โโงEnter |
| ํ์ฌ ์นธ ์ด๋ฆ ๋ณ๊ฒฝ | โโงR |
| ์คํฌ๋กค๋ฐฑ ๋งจ ์ / ๋งจ ์๋ | โโ / โโ |
| ํ ํ์ด์ง ์ / ์๋ | โงPage Up / โงPage Down |
| ์๋์ฐ ๋ซ๊ธฐ | โโงW |
ํญ ๋ณด๊ธฐ์์๋ ํญ์ +๋ก ์ถ๊ฐํ๊ณ โW๋ก ์ ํํ ํญ์ ๋ซ์ต๋๋ค. ๋ถํ ๋ณด๊ธฐ์ ๋น ์นธ์์
โW๋ฅผ ๋๋ฅด๋ฉด ๊ทธ ์นธ์ ์ ๊ฑฐํฉ๋๋ค.
**ํ์ผ โ ํ๋ก์ ํธ ํด๋์์ ์ ์๋์ฐโฆ**์์ ํด๋๋ฅผ ๊ณ ๋ฅด๋ฉด ํด๋น ํด๋๋ฅผ ์ ธ๊ณผ ํ์ผ ํธ๋ฆฌ์ ์์ ๊ฒฝ๋ก๋ก ์ฌ์ฉํฉ๋๋ค. ์ ์๋์ฐ๋ ํ์ฌ ์ ํํ ํฐ๋ฏธ๋์ ์์ ํด๋์์ ์์ํฉ๋๋ค. ์ด๋ฆฐ ์ฐฝ์ macOS ์๋์ฐ ๋ฉ๋ด์์ ์ ํํฉ๋๋ค. ๋ชจ๋ ์ฐฝ์ ๋ซ์๋ ํ์ผยทDock ๋ฉ๋ด์์ ๋ค์ ์ด ์ ์์ต๋๋ค.
ํ์ผ โ ์ต๊ทผ ํ๋ก์ ํธ์์ ์ต๊ทผ์ ์ฐ ํด๋12๊ฐ๋ฅผ ๋ค์ ์ด ์ ์์ต๋๋ค. ๋ชฉ๋ก ์ง์ฐ๊ธฐ๋ ์ต๊ทผ ์ด๋ ฅ๋ง ์ง์๋๋ค.
ํ์ผ โ ์์
๊ตฌ์ฑ โ ํ์ฌ ๊ตฌ์ฑ ์ ์ฅโฆ(โโงS)์์ ํ์ฌ ๋ฐฐ์นยท์นธ ์ด๋ฆยท์์
๊ฒฝ๋กยท์น ์ฃผ์์ ํ์ผ ํธ๋ฆฌ ์ค์ ์
์ด๋ฆ ๋ถ์ฌ ์ ์ฅํ์ธ์. ๊ฐ์ ๋ฉ๋ด์์ ๊ตฌ์ฑ์ ๊ณ ๋ฅด๋ฉด ์ ์ฐฝ์์ ์ด๋ฆฝ๋๋ค. ํ์ฌ ์ฐฝ์ ์์
์ ์ ์งํฉ๋๋ค.
๊ตฌ์ฑ์ ํ๋ก์ ํธ๋ง๋ค20๊ฐ, ์ ์ฒด100๊ฐ๊น์ง ์ ์ฅํ ์ ์๊ณ ๊ตฌ์ฑ ์ญ์ โฆ์์ ์ ๋ฆฌํฉ๋๋ค.
์ต๊ทผ ๋ชฉ๋ก๊ณผ ๊ตฌ์ฑ์ ~/Library/Application Support/Chop/projects.json์ ์ธ์
๊ณผ ๋ณ๋๋ก ์ ์ฅํฉ๋๋ค.
๊ธฐ๋ก ํ์ผ์ ์ฝ๊ฑฐ๋ ๊ฒ์ฆํ์ง ๋ชปํ๋ฉด ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ์คํ ๋ช
๋ น๊ณผ ํ๊ฒฝ๋ณ์๋ ๊ตฌ์ฑ์ ํฌํจํ์ง ์์ต๋๋ค.
์์ ๊ณต๊ฐ์ Mac ์์ JSON ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
~/Library/Application Support/Chop/
โโโ session.json
์ด๋ฆฐ ์ฐฝ ๋ชฉ๋ก๊ณผ ์ ํํ ์ฐฝ, ๊ฐ ์ฐฝ์ ๋ ์ด์์, ๋ถํ ๋น์จ, ์นธ ์ด๋ฆ, ์์ ๊ฒฝ๋ก, ์ด๋ฆผ ์ํ, ์ ํํ ์นธ๊ณผ ํญ ๋ณด๊ธฐ ์ฌ๋ถ๋ฅผ ์๋ ์ ์ฅํฉ๋๋ค. ํ์ผ ํธ๋ฆฌ์ ๊ฒฝ๋กยทํญยทํ์๋ ์ฐฝ๋ง๋ค ๊ธฐ์ตํฉ๋๋ค. ์น ์นธ์ ์ข ๋ฅ์ ์ฃผ์๋ ์ ์ฅํฉ๋๋ค. ๊ธฐ์กด ๋จ์ผ ์ฐฝ ์ ์ฅ ํ์ผ๋ ์ฝ์ต๋๋ค. ์ฑ์ ๋ค์ ์ด๋ฉด ํฐ๋ฏธ๋ ์นธ์๋ ์ ์ ธ์ ์คํํ๊ณ ์น ์นธ์ ์ฃผ์๋ฅผ ์๋ก ๋ถ๋ฌ์ต๋๋ค. ์ด์ ํ๋ก์ธ์ค, ์ ธ ๋ณ์, ํ๋ฉด ๋ด์ฉ๊ณผ ๋ช ๋ น ๊ธฐ๋ก์ ์ ์ฅํ๊ฑฐ๋ ์ฌ์คํํ์ง ์์ต๋๋ค. ์ ธ์ ์์ ์ค์ ๊ณผ ํ์คํ ๋ฆฌ๋ ์ฌ์ฉ์ ์ค์ ์ ๋ฐ๋ฆ ๋๋ค.
- ์์ ํด๋๊ฐ ์๊ฑฐ๋ ์ด ์ ์์ผ๋ฉด ์๋ฆผ ํ ํ ํด๋๋ก ๋์ฒดํฉ๋๋ค.
- ์์๋๊ฑฐ๋ ์ง์ํ์ง ์๋ ์ ์ฅ ํ์ผ์
session-unreadable-<UUID>.json์ผ๋ก ๋ณด์กดํฉ๋๋ค. - ์ ์ฅ ์คํจ ์ ํฐ๋ฏธ๋ ๋ฉ๋ด์ ๋ ์ด์์ ๋ค์ ์ ์ฅ์ผ๋ก ์ฌ์๋ํฉ๋๋ค. ์ ์ฅํ์ง ๋ชปํ ์ฑ ์ข ๋ฃํ๋ ค๋ฉด ํ์ธ์ ๊ฑฐ์นฉ๋๋ค.
- ์ฐฝ์ ์ง์ ๋ซ์ผ๋ฉด ๊ทธ ์ฐฝ์ ํฐ๋ฏธ๋๋ง ์ข ๋ฃํ๊ณ ๋ณต์ ๋ชฉ๋ก์์ ์ ์ธํฉ๋๋ค. ์ฑ ์ข ๋ฃ๋ ์ด๋ ค ์๋ ๋ชจ๋ ์ฐฝ์ ์ํ๋ฅผ ์ ์ฅํ ๋ค ์ ธ์ ์ข ๋ฃํฉ๋๋ค.
| ์์ญ | ์ฌ์ฉ ๊ธฐ์ |
|---|---|
| ์ฑ๊ณผ UI | Swift 6, AppKit, SF Symbols |
| ํฐ๋ฏธ๋ ์์ง | libghostty, Metal |
| ์น์ฌ์ดํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | WebKit, WKWebView |
| ๋ ์ด์์๊ณผ ์ ์ฅ | ๋ถํ ํธ๋ฆฌ, Codable, ๋ก์ปฌ JSON ํ์ผ |
| ๋น๋ | Swift Package Manager, ์ ธ ์คํฌ๋ฆฝํธ |
| ๊ฒ์ฆ | swift-format, Swift Testing, ์ค์ ์ ธ ํตํฉ ํ ์คํธ |
| CI | GitHub Actions ยท macOS |
libghostty๋ Ghostty v1.2.3์ ํน์ ์ปค๋ฐ์ผ๋ก ๊ณ ์ ํฉ๋๋ค. ์์ง๊ณผ ์ ๋ ฅ ์ด๋ํฐ์ ์ฐ๊ฒฐ ๋ฐฉ์, ํจ์น์ ๋ผ์ด์ ์ค ๊ณ ์ง๋ Dependencies/README.md์ ๊ธฐ๋กํฉ๋๋ค.
./scripts/check.shSwift ํฌ๋งท, ์ ธ ๋ฌธ๋ฒ, ์ฑ ๋ฉํ๋ฐ์ดํฐ, ๋ฆด๋ฆฌ์ค ๋น๋, ์ฑ ์๋ช ๊ณผ ๋ฒ๋ค ์์ด์ฝ์ ๊ฒ์ฌํ ๋ค ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. GitHub Actions๋ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ํ ์คํธ๋ ๋ถํ ยท๋ณํฉยท์ ์ฅ ๋ณต๊ตฌ์ ์ค์ ์ ธ์ ์ถ๋ ฅยท์ํ ์ ์งยทํญ ์ ํยท๊ฒฝ๋ก ๋๋กญ ๋ฑ์ ๋ค๋ฃน๋๋ค.
Xcode์์ ํธ์งํ๋ ค๋ฉด ./scripts/prepare-ghostty.sh๋ฅผ ์คํํ ๋ค Package.swift๋ฅผ ์ฝ๋๋ค.
๊ฐ๋ฐ๊ณผ PR ์ ์ฐจ๋ CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
๊ฒ์ฆ ํ๊ฒฝ๊ณผ ๋ฏธํ์ธ ๋ฒ์๋ ๊ฒ์ฆ ๊ธฐ๋ก์ ๋จ๊น๋๋ค. macOS 14 ์ค๊ธฐ๊ธฐ์
์ ์ฒด VoiceOver ํ์, ๋ง์ฐ์ค ํ ์ ์ค๊ธฐ ๋์์ ์์ง ๊ฒ์ฆํ์ง ๋ชปํ์ต๋๋ค.
Sources/
โโโ Chop/ # ์ฑ, ์ฐฝ, ํฐ๋ฏธ๋ ์
๋ ฅ๊ณผ ๋ ๋๋ง, ํ์ผ ํธ๋ฆฌ
โโโ ChopCore/ # ๋ถํ ๋ชจ๋ธ, ๊ฒฝ๋ก ์ฒ๋ฆฌ, ์์
๊ณต๊ฐ ์ ์ฅ
Tests/
โโโ ChopTests/ # ์ค์ ์
ธ๊ณผ AppKit ํตํฉ ํ
์คํธ
โโโ ChopCoreTests/ # ๋ ์ด์์๊ณผ ์ ์ฅยท๋ณต๊ตฌ ํ
์คํธ
Resources/ # ์ฑ ์์ด์ฝ, macOS ๋ฉํ๋ฐ์ดํฐ, ํฐ๋ฏธ๋ ํ
๋ง
Dependencies/ # Ghostty ๊ณ ์ ๋ฒ์ , ํจ์น์ ๋น๋ ๊ฒฐ๊ณผ
scripts/ # ์์กด์ฑ ์ค๋น, ๋น๋, ์คํ, ๊ฒ์ฆ
.github/ # CI์ PR ํ
ํ๋ฆฟ
docs/images/ # README ์ฑ ์ด๋ฏธ์ง
docs/showcase/ # ์ค์ ์บก์ฒยท๋ฐฐ๊ฒฝยท์ฌ์ง ๊ตฌ์ฑ ์๋ณธ
design/ # ๋์์ธ ๊ธฐ์ค๊ณผ ๊ฒ์ฆ ๊ธฐ๋ก
๋ฒ๊ทธ ์ ๋ณด์ ๊ธฐ๋ฅ ์ ์์ Issues์ ๋จ๊ฒจ ์ฃผ์ธ์. ๋ฌธ์ ๊ฐ ์๊ธด macOS ๋ฒ์ , ์ฌํ ์์์ ๊ธฐ๋ํ ๋์์ ํจ๊ป ์ ์ด ์ฃผ์๋ฉด ๋์์ด ๋ฉ๋๋ค.
PR์ ํ ๊ธฐ๋ฅ์ด๋ ์์ ๋จ์๋ก ์๊ฒ ๋๋๋๋ค. ๊ธฐ๋ณธ ๊ฒ์ฆ์ ./scripts/check.sh์ด๋ฉฐ,
UI๋ฅผ ๋ฐ๊ฟจ๋ค๋ฉด ์ค์ ์ฑ์์ ํ์ธํ ํ๋ฉด๊ณผ ๋์์ ๊ธฐ๋กํฉ๋๋ค.
์์ธํ ์ ์ฐจ๋ ๊ธฐ์ฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฆ
๋๋ค.
ํ์ฌ ํฐ๋ฏธ๋ยท๋ ์ด์์ยทํ์ผ ํธ๋ฆฌยทํ๋ฉด ๋ชจ๋ยท๋ณต์์ ๊ตฌํํ์ต๋๋ค. ์๋ฆผ, Git ๋ธ๋์น ํ์, CLI์ ๋ธ๋ผ์ฐ์ ยท์์ด์ ํธ ์ฐ๋์ ํ์ ๋ฒ์์ ๋๋ค.
- Ghostty โ libghostty ํฐ๋ฏธ๋ ์์ง๊ณผ macOS ์ ๋ ฅ ์ฒ๋ฆฌ์ ๊ธฐ๋ฐ์ ๋๋ค. ๋ผ์ด์ ์ค ๊ณ ์ง๋ฅผ ๋ณด์กดํฉ๋๋ค.
- cmux โ ์์ ๊ณต๊ฐ๊ณผ ๊ธฐ๋ฅ ๊ตฌ์ฑ์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค.
์ฑ ์์ด์ฝ์ ์๋ณธ๊ณผ ์ฌ์์ฑ ๋ฐฉ๋ฒ์ AppIcon ๋ฌธ์์ ์์ต๋๋ค.