μ΄ λ¬Έμλ Windowsμ macOS μ¬μ©μκ° Dockerμ VSCode DevContainer κΈ°λ₯μ νμ©νμ¬ C κ°λ° λ° λλ²κΉ νκ²½μ λΉ λ₯΄κ² ꡬμΆν μ μλλ‘ λμμ€λλ€.
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/data_structures_docker.git--depth=1μ΅μ μ git commit νμ€ν 리λ₯Ό μλ΅νκ³ μ΅μ νμΌλ§ κ°μ Έμ΅λλ€.
data_structures_docker/
βββ .devcontainer/
β βββ devcontainer.json # VSCodeμμ 컨ν
μ΄λ νκ²½ μ€μ
β βββ Dockerfile # C κ°λ° νκ²½ μ΄λ―Έμ§ μ μ
β
βββ .vscode/
β βββ launch.json # λλ²κΉ
μ€μ (F5 μ€νμ©)
β βββ tasks.json # μ»΄νμΌ μλν μ€μ
β
βββ Data-Structures/
β βββ Binary_Search_Tree/
β βββ Binary_Tree/
β βββ Linked_List/
β β βββ Q1_A_LL.c ~ Q7_A_LL.c # μ°κ²° 리μ€νΈ λ¬Έμ C μ½λ
β β βββ Linked Lists Questions.pdf # λ¬Έμ μ€λͺ
λ¬Έμ
β βββ Stack_and_Queue/
β βββ Q1_C_SQ.c ~ Q7_C_SQ.c # μ€ν/ν λ¬Έμ C μ½λ
β βββ Stack and Queues Questions.pdf # λ¬Έμ μ€λͺ
λ¬Έμ
β
βββ README.md # μ€μΉ λ° μ¬μ©λ² μ€λͺ
λ¬Έμ
β κ° λλ ν°λ¦¬λ μλ£κ΅¬μ‘° μ£Όμ λ³λ‘ λ¬Έμ νμΌλ€μ΄ μ 리λμ΄ μμ΅λλ€.
- VSCodeλ₯Ό μ€ν
νμΌ β ν΄λ μ΄κΈ°λ‘ λ°©κΈ ν΄λ‘ νdata_structures_dockerν΄λλ₯Ό μ ν
- VSCodeμμ
Ctrl+Shift+P(Windows/Linux) λλCmd+Shift+P(macOS)λ₯Ό λλ¦ λλ€. - λͺ
λ Ήμ΄ νλ νΈμμ
Dev Containers: Reopen in Containerλ₯Ό μ νν©λλ€. - μ΄ν 컨ν μ΄λκ° μλμΌλ‘ μ€νλκ³ λΉλλ©λλ€. μ²μ 컨ν μ΄λλ₯Ό μ΄λ©΄ λΉλνλ μκ°μ΄ μ€λ걸릴 μ μμ΅λλ€. λΉλ ν, νλ‘μ νΈκ° 컨ν μ΄λ μμμ μ€νλ¨.
μ΄μ 본격μ μΌλ‘ λ¬Έμ λ₯Ό ν μκ°μ
λλ€. README.md νμΌμ μ°Έμ‘°νμ
μ Linked List -> Stack and Queue -> Binary Tree -> Binary Search Tree μμΌλ‘ λ¬Έμ λ₯Ό νμ΄λ³΄μΈμ. κ° λ¬Έμ ν΄λμλ pdfννλ‘ λ¬Έμ μ€λͺ
μ΄ μμ΅λλ€.
C μΈμ΄λ‘ λ¬Έμ λ₯Ό νλ€κ° λλ²κΉ
μ΄ νμνμλ©΄ μμ€μ½λμ BreakPointλ₯Ό μ€μ ν λ€μ ν€λ³΄λμμ F5λ₯Ό λλ¬ λλ²κΉ
μ μμν μ μμ΅λλ€.
- μ°Έκ³ λ‘ λ³μ, λ©λͺ¨λ¦¬, μ€ν, μΆλ ₯ λ±μ 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 κ°λ° νκ²½μ΄ μμ±λμμ΅λλ€.
- (μ£Όμ) μ λ΄μ©μ μ²μ μ€μΉνλ μ¬λμ κΈ°μ€μΌλ‘ μμ±λ λ΄μ©μ λλ€. Data-Structures ν΄λμμ μλ νλ‘μ νΈλ₯Ό λ°λ³΅μ μΌλ‘ κ°λ°ν κ²½μ° 5μμ 7μ₯μ λ΄μ©λ§ λ°λ³΅νμλ©΄ λ©λλ€.
- μ΄λ€ μ΄μ체μ μμλ λμΌν νκ²½μΌλ‘ κ°λ° κ°λ₯
- VSCode λ΄μμ μ½λ μμ±, μ»΄νμΌ, λλ²κΉ κΉμ§ ν λ²μ κ°λ₯