์ด ๋ฌธ์๋ Windows์ macOS ์ฌ์ฉ์๊ฐ Docker์ VSCode DevContainer ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ C ๊ฐ๋ฐ ๋ฐ ๋๋ฒ๊น ํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค.
[์ฃผ์] ๊ธฐ์กด ์ฐจ์์ ๋ค๋ฅธ ์ ๋ง ํ์ธํ์๋ฉด 4์ฅ๋ถํฐ 6์ฅ๋ง ํ์ธํ์๋ฉด ๋ฉ๋๋ค.
Docker๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ค ์ปดํจํฐ์์๋ ๋์ผํ ํ๊ฒฝ์์ ์คํํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ์ํ ํ๋ซํผ์ ๋๋ค.
Docker๋ ๋ค์ ๊ตฌ์ฑ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค:
- Docker Engine: ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ํต์ฌ ์๋น์ค
- Docker Image: ์ปจํ ์ด๋ ์์ฑ์ ์ฌ์ฉ๋๋ ํ ํ๋ฆฟ (๋ ์ํผ ๐)
- Docker Container: ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ค์ ์คํ ํ๊ฒฝ (์๋ฆฌ ๐)
| ๊ตฌ๋ถ | EC2 ๊ฐ์ VM | Docker ์ปจํ ์ด๋ |
|---|---|---|
| ์คํ ๋จ์ | OS ํฌํจ ์ ์ฒด | ์ ํ๋ฆฌ์ผ์ด์ ๋จ์ |
| ์คํ ์๋ | ๋๋ฆผ (์์ญ ์ด ์ด์) | ๋งค์ฐ ๋น ๋ฆ (๊ฑฐ์ ์ฆ์) |
| ๋ฆฌ์์ค ์ฌ์ฉ | ๋ฌด๊ฑฐ์ | ๊ฐ๋ฒผ์ |
DevContainer๋ VSCode์์ Docker ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ฐ ํ๊ฒฝ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ ๋๋ฒ๊น ํ ๋ ์ปจํ ์ด๋ ๋ด๋ถ ํ๊ฒฝ์์ ๋์
- ํ์ ๊ฐ ํ๊ฒฝ ์ฐจ์ด ์์ด ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ ๊ฐ๋ฅ
.devcontainerํด๋์ ์ ์๋ ์ค์ ์ VSCode๊ฐ ์ฝ์ด ์๋ ๊ตฌ์ฑ
-
Docker ๊ณต์ ์ฌ์ดํธ์์ ์ค์น ํ์ผ ๋ค์ด๋ก๋:
๐ https://www.docker.com/products/docker-desktop -
์ค์น ํ Docker Desktop ์คํ
- Windows: Docker ์์ด์ฝ์ด ํธ๋ ์ด์ ๋ ์ผ ํจ
- macOS: ์๋จ ๋ฉ๋ด๋ฐ์ Docker ์์ด์ฝ ํ์ธ
ํฐ๋ฏธ๋(CMD, PowerShell, zsh ๋ฑ)์์ ์๋ ๋ช ๋ น์ด๋ก ํ๋ก์ ํธ ํด๋๋ง ๋ด๋ ค๋ฐ์ต๋๋ค:
git clone --depth=1 https://github.com/krafton-jungle/malloc_lab_docker.git--depth=1์ต์ ์ git commit ํ์คํ ๋ฆฌ๋ฅผ ์๋ตํ๊ณ ์ต์ ํ์ผ๋ง ๊ฐ์ ธ์ต๋๋ค.
malloc_lab_docker/
โโโ .devcontainer/
โ โโโ devcontainer.json # VSCode์์ ์ปจํ
์ด๋ ํ๊ฒฝ ์ค์
โ โโโ Dockerfile # C ๊ฐ๋ฐ ํ๊ฒฝ ์ด๋ฏธ์ง ์ ์
โ
โโโ .vscode/
โ โโโ launch.json # ๋๋ฒ๊น
์ค์ (F5 ์คํ์ฉ)
โ โโโ tasks.json # ์ปดํ์ผ ์๋ํ ์ค์
โ
โโโ malloc-lab
โ โโโ short1-bal.rep # ํ
์คํธ ์ผ์ด์ค
โ โโโ Makefile # ๊ณผ์ ๋ฅผ ์ปดํ์ผํ๊ณ ํ
์คํธํ๊ธฐ ์ํ ํ์ผ
โ โโโ README.md # malloc-lab ๊ณผ์ ์ค๋ช
โ
โโโ README.md # ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ ์ค๋ช
๋ฌธ์
- VSCode๋ฅผ ์คํ
ํ์ผ โ ํด๋ ์ด๊ธฐ๋ก ๋ฐฉ๊ธ ํด๋ก ํmalloc_lab_dockerํด๋๋ฅผ ์ ํ
- VSCode์์
Ctrl+Shift+P(Windows/Linux) ๋๋Cmd+Shift+P(macOS)๋ฅผ ๋๋ฆ ๋๋ค. - ๋ช
๋ น์ด ํ๋ ํธ์์
Dev Containers: Reopen in Container๋ฅผ ์ ํํฉ๋๋ค. - ์ดํ ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์คํ๋๊ณ ๋น๋๋ฉ๋๋ค. ์ฒ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ฉด ๋น๋ํ๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋น๋ ํ, ํ๋ก์ ํธ๊ฐ ์ปจํ ์ด๋ ์์์ ์คํ๋จ.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ์๊ฐ์
๋๋ค. malloc-lab/README.md ํ์ผ์ ์ฐธ์กฐํ์
์ rbtree ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์ธ์.
C ์ธ์ด๋ก ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ๋๋ฒ๊น
์ด ํ์ํ์๋ฉด ์์ค์ฝ๋์ BreakPoint๋ฅผ ์ค์ ํ ๋ค์ ํค๋ณด๋์์ F5๋ฅผ ๋๋ฌ ๋๋ฒ๊น
์ ์์ํ ์ ์์ต๋๋ค.F5๋ฅผ ๋๋ฅด๋ฉด malloc-labํด๋์์ mdriver -V -f short1-bal.rep ๋ฅผ ์คํํ์ฌ ํ
์คํธ ์ฝ๋๋ฅผ ๋๋ฒ๊น
๋ชจ๋๋ก ์คํํฉ๋๋ค.
- ์ฐธ๊ณ ๋ก ๋ณ์, ๋ฉ๋ชจ๋ฆฌ, ์คํ, ์ถ๋ ฅ ๋ฑ์ VSCode์์ ํ์ธํ ์๋ ์์ต๋๋ค.
๊ธ์ฃผ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ธ Git ๋ฆฌํฌ์ ๊ฐ์ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ก๋ํ๋ ค๋ฉด, ๊ธฐ์กด Git ์ฐ๊ฒฐ์ ์ ๊ฑฐํ๊ณ ์๋กญ๊ฒ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ ์์๋๋ก ์คํํ์ธ์:
rm -rf .git
git init
git remote add origin https://github.com/myusername/my-new-repo.git
git add .
git commit -m "Clean start"
git push -u origin mainrm -rf .git: ๊ธฐ์กด Git ๊ธฐ๋ก๊ณผ ์ฐ๊ฒฐ์ ์์ ํ ์ญ์ ํฉ๋๋ค.git init: ํ์ฌ ํด๋๋ฅผ ์๋ก์ด Git ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ด๊ธฐํํฉ๋๋ค.git remote add origin ...: ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์ฃผ์๋ฅผ origin์ผ๋ก ๋ฑ๋กํฉ๋๋ค.git add .๋ฐgit commit: ๋ชจ๋ ํ์ผ์ ์ปค๋ฐํฉ๋๋ค.git push: ์๋ก์ด ๋ฆฌํฌ์ ์ต์ด ์ ๋ก๋(Push)ํฉ๋๋ค.
์ด ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๊ธฐ์กด ๋ฆฌํฌ์์ ์ฐ๊ฒฐ์ ์์ ํ ์ ๊ฑฐ๋๊ณ , ์๋ก์ด ๋ ๋ฆฝ์ ์ธ ํ๋ก์ ํธ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ด์ Docker์ DevContainer๋ฅผ ํ์ฉํ C ๊ฐ๋ฐ ํ๊ฒฝ์ด ์์ฑ๋์์ต๋๋ค.
- (์ฃผ์) ์ ๋ด์ฉ์ ์ฒ์ ์ค์นํ๋ ์ฌ๋์ ๊ธฐ์ค์ผ๋ก ์์ฑ๋ ๋ด์ฉ์ ๋๋ค. malloc-lab ํด๋์์ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ๋ฐํ ๊ฒฝ์ฐ 5์์ 7์ฅ์ ๋ด์ฉ๋ง ๋ฐ๋ณตํ์๋ฉด ๋ฉ๋๋ค.
- ์ด๋ค ์ด์์ฒด์ ์์๋ ๋์ผํ ํ๊ฒฝ์ผ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
- VSCode ๋ด์์ ์ฝ๋ ์์ฑ, ์ปดํ์ผ, ๋๋ฒ๊น ๊น์ง ํ ๋ฒ์ ๊ฐ๋ฅ