
๋ฆฌ์คํธ์ ๋์ ๋๋ฆฌ๋ฅผ ์๋ฃ๊ตฌ์กฐ๋ก ํ๋ ์ธ์ด๋ ๋ฌด์์ธ๊ฐ?
๋ฆฌ์คํธ(List)์ ๋์ ๋๋ฆฌ(Dictionary)๋ฅผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ก ์ ๊ณตํ๋ ๋ํ์ ์ธ ์ธ์ด๋ ๋ฐ๋ก **ํ์ด์ฌ(Python)**์ ๋๋ค.
๐งฉ ํ์ด์ฌ(Python)์ ์๋ฃ๊ตฌ์กฐ ๊ฐ์
โ ๋ฆฌ์คํธ(List)
- ์์๊ฐ ์๋(ordered) ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ ๋ณ์์ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ์ธ๋ฑ์ค๋ก ์ ๊ทผํฉ๋๋ค.
- ์์:
-
fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "ํฌ๋"] print(fruits[1]) # ์ถ๋ ฅ: ๋ฐ๋๋
โ ๋์ ๋๋ฆฌ(Dictionary)
- ํค(key)-๊ฐ(value) ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ์ ๋๋ค.
- ์์๋ณด๋ค๋ ์ฐ๊ด ๊ด๊ณ(association) ๊ฐ ์ค์ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ์์:
-
person = {"์ด๋ฆ": "ํ๊ธธ๋", "๋์ด": 30, "์ง์ ": "๊ฐ๋ฐ์"} print(person["์ง์ "]) # ์ถ๋ ฅ: ๊ฐ๋ฐ์
๐ ๊ทธ ์ธ ์ธ์ด์ ๋์ ๊ตฌ์กฐ
| ์ธ์ด | ๋ฆฌ์คํธ ์ ์ฌ ๊ตฌ์กฐ | ๋์ ๋๋ฆฌ ์ ์ฌ ๊ตฌ์กฐ |
| JavaScript | Array | Object / Map |
| Java | ArrayList | HashMap |
| C++ | vector | map / unordered_map |
| Ruby | Array | Hash |
| Go | slice | map |
| AI | line (์ ํ) | non-line (๋น์ ํ) |
์ด์ฒ๋ผ ๋ฆฌ์คํธ์ ๋์
๋๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๊ฑฐ๋ ์ ์ฌ ๊ตฌ์กฐ๋ก ์ ๊ณตํ๋ ์ธ์ด๋ ๋ง์ง๋ง,
‘๋ฆฌ์คํธ(list)’์ ‘๋์
๋๋ฆฌ(dictionary)’๋ผ๋ ์ด๋ฆ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ์ธ์ด๋ ํ์ด์ฌ์ด ๋ํ์ ์
๋๋ค.
์๋ฐ: ์ ํ๊ตฌ์กฐ : ๋ฆฌ์คํธ/ ๋น์ ํ๊ตฌ์กฐ: ๋งต
์๋ฐ์คํฌ๋ฆฝํธ: ์ ํ๊ตฌ์กฐ: ์ด๋ ์ด/๋น์ ํ๊ตฌ์กฐ json
ํ์ด์ฌ: ์ ํ๊ตฌ์กฐ: ๋ฆฌ์คํธ/ ๋น์ ํ๊ตฌ์กฐ: ๋์ ๋๋ฆฌ
์ข์ ์ง๋ฌธ์ด์์ ๐
๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด, JavaScript์ ์ค๋ธ์ ํธ(Object) ์ JSON(JavaScript Object Notation) ์ ์๋ก ๊ด๋ จ ์์ง๋ง, ์์ ํ ๊ฐ์ ๊ฒ์ ์๋๋๋ค.
๐งฉ 1. ์ค๋ธ์ ํธ(Object)
- JavaScript์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค.
- ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ์ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์.
- ํค(key)-๊ฐ(value) ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- ์์:
-
const person = { name: "ํ๊ธธ๋", age: 30, job: "๊ฐ๋ฐ์" }; console.log(person.name); // ์ถ๋ ฅ: ํ๊ธธ๋
๐ง ์ฆ, ์ค๋ธ์ ํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์์ ์ง์ ์ฌ์ฉํ๋ "๋ฐ์ดํฐ ๊ทธ ์์ฒด" ์ ๋๋ค.
๐พ 2. JSON (JavaScript Object Notation)
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ๊ธฐ ์ํ ํ์(format) ์ ๋๋ค.
- ์ค๋ธ์ ํธ ๋ฌธ๋ฒ์ ๋ฌธ์์ด(String) ํํ๋ก ํํํ ๊ฒ์ ๋๋ค.
- ์์:
- JSON์์๋ ํค์ ๋ฌธ์์ด ๊ฐ์ ๋ฐ๋์ ํฐ๋ฐ์ดํ("") ๋ฅผ ์จ์ผ ํฉ๋๋ค.
- ์ฃผ์(//)์ด๋ ํจ์ ๋ฑ์ ํ์ฉ๋์ง ์์ต๋๋ค.
-
{ "name": "ํ๊ธธ๋", "age": 30, "job": "๊ฐ๋ฐ์" }
๐ง ์ฆ, JSON์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ “๋ฌธ์์ด ํํ์ ํฌ๋งท” ์ ๋๋ค.
๐ 3. ์ค๋ธ์ ํธ ↔ JSON ๋ณํ
JavaScript์์๋ ์์ฃผ ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
- JSON.stringify() : ์ค๋ธ์ ํธ๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ณํ
- JSON.parse() : JSON ๋ฌธ์์ด์ ์ค๋ธ์ ํธ๋ก ๋ณํ
๐ ์ ๋ฆฌํ๋ฉด
| ๊ตฌ๋ถ | ์ค๋ธ์ ํธ(Object) | JSON |
| ํํ | ์ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ | ๋ฌธ์์ด ํ์ |
| ๋ชฉ์ | ํ๋ก๊ทธ๋จ ๋ด์์ ๋ฐ์ดํฐ ์กฐ์ | ๋ฐ์ดํฐ ์ ์ฅ·์ ์ก |
| ์ฌ์ฉ ์์น | ์ฝ๋ ๋ด๋ถ | ์๋ฒ·ํ์ผ·๋คํธ์ํฌ ํต์ |
| ๋ณํ ํจ์ | JSON.stringify() / JSON.parse() | X |
ํค๋ ๋งํฌ์ฌ์ผํจ
์คํธ๋ญ์ณ, ์ปค๋ฌ, ๋ญ๊ท์ง
์๋ฐ ์ธ๊ณ๊ด, ํ์ด์ฌ ์ธ๊ณ๊ด ,
ํ์ดํ๋ผ์ธ
1. ํ์ดํ๋ผ์ธ์ ๋น์ ๋ก ์ดํดํ๊ธฐ
ํ๋ก๊ทธ๋๋ฐ ์ด๋ณด์๋ถ์ด๋ผ๋ฉด ์ด๋ ๊ฒ ์๊ฐํด๋ณด์ธ์ ๐
๐ฑ ๋์๋ฝ ๋ง๋ค๊ธฐ ๊ณผ์ ์ ์๋ก ๋ค์ด๋ณผ๊ฒ์.
- 1๋จ๊ณ: ๋ฐฅ์ ์ง๋๋ค
- 2๋จ๊ณ: ๋ฐ์ฐฌ์ ๋ง๋ ๋ค
- 3๋จ๊ณ: ๋์๋ฝ์ ๋ด๋๋ค
- 4๋จ๊ณ: ํฌ์ฅํ๋ค
์ด ๋ค ๋จ๊ณ๋ฅผ ์์๋๋ก ์๋์ผ๋ก ์ฐ๊ฒฐํด๋๋ฉด,
๋ฐฅ์ด ์์ฑ๋๋ฉด ๋ฐ๋ก ๋ฐ์ฐฌ ๋ง๋ค๊ธฐ๋ก ๋์ด๊ฐ๊ณ ,
๋ฐ์ฐฌ์ด ๋๋๋ฉด ๋ฐ๋ก ๋์๋ฝ์ ๋ด๋ ์์ผ๋ก ํ๋ฌ๊ฐ๋๋ค.
์ด๋ ๊ฒ “์ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋จ๊ณ๊ฐ ์ด์ด๋ฐ์ ์ฒ๋ฆฌํ๋ ํ๋ฆ” ์ด ๋ฐ๋ก ํ์ดํ๋ผ์ธ์ด์์.
๐ป 2. ํ๋ก๊ทธ๋๋ฐ์์ ํ์ดํ๋ผ์ธ์ด๋?
ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ฑฐ๋, ํ๋ก๊ทธ๋จ์ ์๋์ผ๋ก ๋น๋ํ๊ณ ๋ฐฐํฌํ ๋
์ด๋ฐ ์์ “๋จ๊ณ๋ณ ์ฐ๊ฒฐ”์ ํ์ดํ๋ผ์ธ(pipeline) ๊ตฌ์กฐ๋ก ๋ง๋ญ๋๋ค.
์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ๋ณผ๊น์?
์ฌ๊ธฐ์
- load_data() → ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ
- clean() → ๋ฐ์ดํฐ๋ฅผ ๊นจ๋ํ๊ฒ ๋ง๋ค๊ณ
- transform() → ๋ถ์ํ๊ธฐ ์ข๊ฒ ๋ฐ๊พธ๊ณ
- analyze() → ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ๊ณผ์
์ด ๋ชจ๋ ๊ฒ “์ฐ๊ฒฐ๋์ด ์์๋๋ก ํ๋ฌ๊ฐ๋ ๊ตฌ์กฐ”์ฃ .
๐ง 3. ์ ํ์ดํ๋ผ์ธ์ด ์ค์ํ ๊น?
| ์๋ํ | ์ฌ๋์ด ์ผ์ผ์ด ์คํํ์ง ์์๋, ์์๋๋ก ์๋์ผ๋ก ์ฒ๋ฆฌ๋จ |
| ๋ฐ๋ณต ์์ ํจ์จํ | ๋งค๋ฒ ๊ฐ์ ๊ณผ์ ์ ์๋์ผ๋ก ํ์ง ์์๋ ๋จ |
| ์ค๋ฅ ๊ด๋ฆฌ ์ฉ์ด | ์ด๋ ๋จ๊ณ์์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋์ง ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅ |
| ์ ์ง๋ณด์ ์ฌ์ | ๊ฐ ๋จ๊ณ๋ฅผ ๋ฐ๋ก ์์ ํ๊ฑฐ๋ ๊ต์ฒดํ ์ ์์ |
โ๏ธ 4. ๋ค๋ฅธ ๋ถ์ผ์ ํ์ดํ๋ผ์ธ ์์
| ๋ฐ์ดํฐ ๋ถ์ | ์์ง → ์ ์ → ๋ถ์ → ์๊ฐํ | ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌ |
| ๋จธ์ ๋ฌ๋ | ์ ์ฒ๋ฆฌ → ํ์ต → ํ๊ฐ → ๋ฐฐํฌ | ๋ชจ๋ธ์ ์๋์ผ๋ก ํ์ตํ๊ณ ์ด์ |
| ์ํํธ์จ์ด ๊ฐ๋ฐ(CI/CD) | ๋น๋ → ํ ์คํธ → ๋ฐฐํฌ | ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋ฐฐํฌ |
| ์ด์์ฒด์ ๋ช ๋ น์ด | `cat file.txt | grep "error" |
๐งฉ 5. ์ด๋ณด์์ฉ ํต์ฌ ์์ฝ
๐ก ํ์ดํ๋ผ์ธ์ด๋, “์ฌ๋ฌ ๋จ๊ณ๋ฅผ ์์๋๋ก ์ฐ๊ฒฐํด์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ์์คํ ”์ด๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋จ๊ณ๋ณ๋ก ํ๋ฅด๊ฒ ๋ง๋ ๋ค.
- ์์์ ์ ์ค์ด๊ณ , ์ค๋ฅ๋ฅผ ์ค์ด๋ฉฐ, ์๋๋ฅผ ๋์ธ๋ค.
- ํ๋ก๊ทธ๋๋ฐ์์ ์๋ํ์ ํต์ฌ ๊ตฌ์กฐ๋ค.
๐ฌ ์๋ฅผ ๋ค์ด ์๊ฐํด๋ณด๊ธฐ
๋ง์ฝ “์ด๋ฏธ์ง ํ์ผ 100๊ฐ๋ฅผ ํฌ๊ธฐ ์กฐ์ ํ๊ณ , ์ ๋ณด์ ํ๊ณ , ์ ์ฅ”ํด์ผ ํ๋ค๋ฉด?
- ํ์ดํ๋ผ์ธ ์์ด → 100๊ฐ ํ์ผ์ ํ๋์ฉ ์ด๊ณ , ์์ ํ๊ณ , ์ ์ฅํด์ผ ํจ ๐ฉ
- ํ์ดํ๋ผ์ธ์ผ๋ก → “์ฝ๊ธฐ → ์์ → ์ ์ฅ” ๊ณผ์ ์ ์๋์ผ๋ก ์ฐ๊ฒฐํ๋ฉด, ํ ๋ฒ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ ๐
“์๋ฆฌ๋จผํธ(element)”
ํ๋ก๊ทธ๋๋ฐ์์ “์๋ฆฌ๋จผํธ(element)” ๋ ์ ๋ง ์์ฃผ ๋ฑ์ฅํ๋ ์ฉ์ด์์.
ํ์ง๋ง ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ป์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ๊ธฐ์ด ๊ฐ๋
๋ถํฐ ๊ตฌ์ฒด์ ์ธ ์์๊น์ง ์ฐจ๊ทผํ ์ค๋ช
๋๋ฆด๊ฒ์.
๐งฉ 1. ๊ธฐ๋ณธ ๊ฐ๋
์๋ฆฌ๋จผํธ(element) ์ ๊ธฐ๋ณธ ๋ป์ “๊ตฌ์ฑ ์์” ๋๋ “ํ๋์ ๋จ์”์
๋๋ค.
์ฆ, ๋ฌด์ธ๊ฐ๋ฅผ ์ด๋ฃจ๋ ๊ฐ์ฅ ์์ ์กฐ๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๐ป 2. ํ๋ก๊ทธ๋๋ฐ์์์ ์๋ฏธ
โ (1) ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ์๋ฆฌ๋จผํธ
๋ฆฌ์คํธ(list)๋ ๋ฐฐ์ด(array)์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ๋ชจ์๋ ์๋ฃ๊ตฌ์กฐ์
๋๋ค.
์ด๋ ๋ฆฌ์คํธ ์์ ๋ค์ด ์๋ ๊ฐ๊ฐ์ ๊ฐ ํ๋ํ๋๋ฅผ ์๋ฆฌ๋จผํธ(element) ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
๐ฆ ์ฆ,
- fruits๋ ๋ฆฌ์คํธ(์์)
- "์ฌ๊ณผ", "๋ฐ๋๋", "ํฌ๋"๋ ๊ทธ ์์ ๋ด๊ธด ์๋ฆฌ๋จผํธ(์์) ์ ๋๋ค.
โ (2) HTML์์์ ์๋ฆฌ๋จผํธ
์น ๊ฐ๋ฐ์์ HTML ์์(element) ๋ผ๋ ๋ง๋ ๋ง์ด ์๋๋ค.
HTML์ ์นํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์ธ์ด์ธ๋ฐ,
๊ทธ ์์ <ํ๊ทธ> ํ๋ํ๋๊ฐ ์๋ฆฌ๋จผํธ์
๋๋ค.
์ฌ๊ธฐ์ <p>๋ **๋ฌธ๋จ ์์(paragraph element)**์์.
HTML์์๋ ์ด๋ฐ ์์ผ๋ก:
- <div> : ๊ตฌ์ญ์ ๋๋๋ ์์
- <h1> : ์ ๋ชฉ ์์
- <img> : ์ด๋ฏธ์ง ์์
์ฒ๋ผ ๊ฐ ํ๊ทธ(tag)๊ฐ ํ๋์ “์๋ฆฌ๋จผํธ”๋ก ์ทจ๊ธ๋ฉ๋๋ค.
โ (3) DOM(Document Object Model)์ ์๋ฆฌ๋จผํธ
๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ์ฝ์ผ๋ฉด DOM ํธ๋ฆฌ๋ผ๋ ๊ตฌ์กฐ๋ก ๋ฐ๊ฟ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํฉ๋๋ค.
์ด๋ DOM ์์ ๋
ธ๋(node) ๋ค ์ค, ์ค์ HTML ํ๊ทธ๋ฅผ ํํํ๋ ๊ฒ๋ค์ด ์๋ฆฌ๋จผํธ ๋
ธ๋(Element Node) ์
๋๋ค.
์๋ฅผ ๋ค์ด JavaScript์์:
์ด๋ title์ DOM ์๋ฆฌ๋จผํธ ๊ฐ์ฒด์์.
๐ง 3. ๊ฐ๋จ ์ ๋ฆฌํ
| ๋ฆฌ์คํธ / ๋ฐฐ์ด | ๋ฐ์ดํฐ ํ๋ํ๋ | [1, 2, 3] → 1, 2, 3์ด ์๋ฆฌ๋จผํธ |
| HTML | <ํ๊ทธ> ๋จ์์ ๊ตฌ์ฑ ์์ | <div>, <p>, <img> |
| DOM | HTML ํ๊ทธ๋ฅผ ๊ฐ์ฒด๋ก ํํํ ๊ฒ | document.querySelector("h1") |
| ์ผ๋ฐ์ ์ธ ์๋ฏธ | ์ ์ฒด๋ฅผ ์ด๋ฃจ๋ ๋ถ๋ถ | “๋ฐฐ์ด์ ๊ตฌ์ฑ์์”, “UI์ ๊ตฌ์ฑ์์” ๋ฑ |
๐ฏ ํต์ฌ ์์ฝ
๐ก ์๋ฆฌ๋จผํธ(element) = “๋ฌด์ธ๊ฐ๋ฅผ ์ด๋ฃจ๋ ํ๋์ ๊ตฌ์ฑ ์์(๋จ์)”
- ๋ฐฐ์ด์์๋ “ํ๋์ ๊ฐ”
- HTML์์๋ “ํ๋์ ํ๊ทธ”
- UI(ํ๋ฉด)์์๋ “ํ๋์ ํ๋ฉด ๊ตฌ์ฑ์์”
์ฆ, ์ ์ฒด๋ฅผ ์ด๋ฃจ๋ ์์ ์กฐ๊ฐ ํ๋๊ฐ ์๋ฆฌ๋จผํธ๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ด๋ ๊ฐ๋ฐ ๋ฌธ๋งฅ์์ “๋ ํผ์คํ ๋ฆฌ(Repository)”๊ฐ ๋ญ์ง ์ด๋ณด์ ์์ ์์ ์ฝ๊ณ ์์ธํ๊ฒ ์ค๋ช ํด๋๋ฆด๊ฒ์.
๐ ๋ ํผ์คํ ๋ฆฌ(Repository)๋ ๋ฌด์์ธ๊ฐ?
- ์์ด๋ก๋ “repository” ํน์ ์ค์ฌ์ “repo” ๋ผ๊ณ ๋ ํฉ๋๋ค. Built In+2phoenixNAP | Global IT Services+2
- ์ง์ญํ๋ฉด “์ ์ฅ์” ๋๋ “๋ณด๊ด์”๋ผ๋ ์๋ฏธ์์. ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ํ๋ก์ ํธ์ ์ฝ๋, ๋ฌธ์, ํ์ผ ๋ฑ์ ๋ชจ์๋๊ณ ๋ฒ์ (๋ณ๊ฒฝ ์ด๋ ฅ)๊น์ง ๊ด๋ฆฌํ ์ ์๋ ์ฅ์๋ก ๋ณด๋ฉด ๋ฉ๋๋ค. sonatype.com+1
- ์๋ฅผ ๋ค์ด, ์ด๋ ํ๋ก์ ํธ์ ์์ค์ฝ๋๊ฐ ์๊ณ ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ์์ ํ๋ค๋ฉด, ์ด ์ฝ๋๋ฅผ ๊ณต์ ํ๊ณ ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ํ ์ ์๋ ์ค์ ์ ์ฅ์๊ฐ ๋ฐ๋ก “๋ ํผ์คํ ๋ฆฌ”์์. Amazon Web Services, Inc.+1
๐งฉ ์ ๋ ํผ์คํ ๋ฆฌ๊ฐ ์ค์ํ๊ฐ?
- ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์ ํด๋ ์ถฉ๋(conflict) ์์ด ์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. Amazon Web Services, Inc.+1
- ๊ณผ๊ฑฐ์ ์ฝ๋ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ(rollback) ๊ฐ ๊ฐ๋ฅํด์ “์์ผฐ๋ค ์ถ์ผ๋ฉด ์ด์ ์ํ๋ก ๋์๊ฐ๋ ์์ ์ฅ์น”๊ฐ ์์ด์. sonatype.com+1
- ์ฝ๋ ๋ณ๊ฒฝ ์ด๋ ฅ(๋๊ฐ ์ธ์ ๋ฌด์จ ๋ณ๊ฒฝ์ ํ๋์ง)์ ๊ธฐ๋กํ๋ฏ๋ก ํ์ ํฌ๋ช ์ฑ์ด ์ฌ๋ผ๊ฐ๋๋ค. Built In
- ํด๋ผ์ฐ๋๋ ๋คํธ์ํฌ๋ก ์ด๋์๋ ์ ์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ ์๊ฒฉ ํ์ ์ด ์ฌ์์. DistantJob - Remote Recruitment Agency
๐ง ์์๋ก ์ดํดํด๋ณด๊ธฐ
์์ 1: ์์ ๊ฐ์ธ ํ๋ก์ ํธ
- ๋ด๊ฐ ํผ์์ ์์ ์ฑ์ ๋ง๋ ๋ค๋ฉด, ๋ก์ปฌ ์ปดํจํฐ์ MyApp ํด๋๊ฐ ์์ด์.
- ๊ทธ ํด๋๋ฅผ ์จ๋ผ์ธ ์๋น์ค(์: GitHub, GitLab ๋ฑ)์ ์ฌ๋ ค์ ์ ์ฅํ๋ฉด → ์ด๋ ๊ฒ ์ ์ฅ๋ ๊ณต๊ฐ์ด ๋ ํผ์คํ ๋ฆฌ๊ฐ ๋๋ ๊ฑฐ์์.
- ์ดํ ๋ด๊ฐ ๊ธฐ๋ฅ ํ๋ ์ถ๊ฐํ๊ณ ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ฉด, “๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ(commit)”์ ํด์ ๊ธฐ๋กํด๋๊ณ → ๋์ค์ “์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ”๋ ๊ฐ๋ฅํด์.
์์ 2: ํ ํ๋ก์ ํธ
- ํ์ A, B, C๊ฐ ํ์ ์ค์ ๋๋ค.
- A๊ฐ ๊ธฐ๋ฅ X๋ฅผ ๋ง๋ค๊ณ , B๊ฐ ๋ฒ๊ทธ Y๋ฅผ ๊ณ ์น๊ณ ์์ด์.
- ๋ ์ฌ๋์ด ์ฝ๋ ๋ณ๊ฒฝ์ ์๋ก ๋ฎ์ด์ฐ๋ฉด ์ํค๊ฒ ์ฃ ?
- ๋ ํผ์คํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด “๋ฉ์ธ ๋ธ๋์น(main branch)”๊ฐ ์๊ณ , ๊ฐ๊ฐ์ด “๊ธฐ๋ฅ ๋ธ๋์น(feature branch)”๋ฅผ ๋ง๋ค์ด ์์ ํ → ํฉ์น๊ธฐ(merge) ์ ์ ๋ฆฌ๋ทฐ(review)๋ฅผ ๊ฑฐ์น ์ ์์ด์.
- ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋ ํ์ง์ด ์ฌ๋ผ๊ฐ๊ณ ๋ฒ๊ทธ๋ ์ค์ด๋ญ๋๋ค.
๐ ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ
- ๋ ํผ์คํ ๋ฆฌ = ์ฝ๋·ํ์ผ์ ์ค์ ์ ์ฅ์ + ๋ณ๊ฒฝ ์ด๋ ฅ ๊ด๋ฆฌ
- ๊ธฐ๋ฅ: ์ ์ฅ, ๊ณต์ , ๋ฒ์ ๊ด๋ฆฌ, ํ์ ์ง์
- ๊ฐ๋ฐ ํ๋ฆ์ ์์ด ๋งค์ฐ ์ค์ํ ๊ธฐ๋ณธ ์ธํ๋ผ
1. ์ปดํ์ผ์ด๋?
์ปดํ์ผ(compile) ์ด๋,
์ฌ๋์ด ์ดํดํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(๊ณ ๊ธ์ธ์ด) ๋ฅผ
์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด(๊ธฐ๊ณ์ด) ๋ก ๋ณํํ๋ ๊ณผ์ ์ด์์.
์ฆ,
“์ฌ๋์ด ์ด ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์์๋ฃ๊ฒ ๋ฒ์ญํ๋ ์ผ”
์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
๐ 2. ๋น์ ๋ก ์ดํดํ๊ธฐ
์๋ฅผ ๋ค์ด๋ณผ๊ฒ์ ๐
๋น์ ์ด ํ๊ตญ์ด๋ก ์ด “์๋ฆฌ ๋ ์ํผ”๋ฅผ
์์ด๋ฐ์ ๋ชจ๋ฅด๋ ์ ฐํ์๊ฒ ์ ๋ฌํด์ผ ํ๋ค๋ฉด?
์ด๋ ํต์ญ์ฌ๊ฐ ํ์ํ์ฃ .
์ด ํต์ญ์ฌ๊ฐ ๋ฐ๋ก ์ปดํ์ผ๋ฌ(compiler) ์
๋๋ค.
| ๐ฉ๐ป ํ๋ก๊ทธ๋๋จธ | ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋ (ํ๊ตญ์ด๋ก ๋งํ๋ ์ฌ๋) |
| ๐ฌ ์ฝ๋ | ๊ณ ๊ธ์ธ์ด (C, Java, C++ ๋ฑ) |
| ๐ง ์ปดํ์ผ๋ฌ | ๋ฒ์ญ๊ธฐ |
| ๐ป ์ปดํจํฐ | ๊ธฐ๊ณ์ด๋ง ์ดํดํ๋ ์ ฐํ |
์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๊ฒ ๋ฒ์ญํด์ฃผ๋ “์๋ ๋ฒ์ญ๊ธฐ” ์ญํ ์ ํฉ๋๋ค.
๐งฉ 4. ์ปดํ์ผ ์ธ์ด vs ์ธํฐํ๋ฆฌํฐ ์ธ์ด
| ๋ํ ์ธ์ด | C, C++, Java (๋ถ๋ถ์ ) | Python, JavaScript |
| ์คํ ๋ฐฉ์ | ์คํ ์ ์ฝ๋ ์ ์ฒด๋ฅผ ๋ฒ์ญ(์ปดํ์ผ) | ํ ์ค์ฉ ๋ฐ๋ก ํด์(์ธํฐํ๋ฆฌํธ) |
| ์๋ | ๋น ๋ฆ โก | ๋น๊ต์ ๋๋ฆผ ๐ข |
| ์ ์ฐ์ฑ | ์ฝ๋ ์์ ์ ๋ค์ ์ปดํ์ผ ํ์ | ์ฆ์ ์์ ·์คํ ๊ฐ๋ฅ |
| ๊ฒฐ๊ณผ๋ฌผ | ์คํ ํ์ผ ์์ฑ (.exe) | ๋ณ๋ ํ์ผ ์์ |
์๋ฅผ ๋ค์ด
- C ์ธ์ด๋ ์คํ ์ ์ “์ปดํ์ผ” ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๊ณ ,
- ํ์ด์ฌ์ ๋ฐ๋ก ์ปดํ์ผํ์ง ์์๋ “๋ฐ๋ก ์คํ”๋ฉ๋๋ค.
๐งฉ 5. ์ฉ์ด ์ ๋ฆฌ
| ์ปดํ์ผ(Compile) | ์ ์ฒด ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๊ณผ์ |
| ์ปดํ์ผ๋ฌ(Compiler) | ๊ทธ ๋ฒ์ญ์ ์ํํ๋ ํ๋ก๊ทธ๋จ |
| ๋น๋(Build) | ์ปดํ์ผ + ๋งํฌ + ์คํ ํ์ผ ์์ฑ ์ ์ฒด ๊ณผ์ |
| ๊ธฐ๊ณ์ด(Machine Code) | 0๊ณผ 1๋ก ๊ตฌ์ฑ๋ ์ปดํจํฐ๊ฐ ์ง์ ์ดํดํ๋ ๋ช ๋ น์ด |
“์ค๋ธ์ ํธ(Object)” ์ “์ํฐํฐ(Entity)” ๋ ๋น์ทํ๊ฒ ๋ค๋ฆฌ์ง๋ง,
์ฌ์ค์ “๊ฐ๋
์ ๋ฒ์์ ๋ชฉ์ ์ด ์์ ํ ๋ค๋ฆ
๋๋ค.”
์ด๊ฑธ ํท๊ฐ๋ฆฌ์ง ์๊ฒ ํ๋ ค๋ฉด, “๋์ด ์ด๋์, ๋ฌด์์ ์ํด ์ฐ์ด๋ ๊ฐ๋
์ธ์ง”๋ฅผ ๊ตฌ๋ถํ๋ฉด ๋ช
ํํด์ ธ์.
๐งฉ 1. ํต์ฌ ์์ฝ ๋จผ์
| ๊ตฌ๋ถ | ์ค๋ธ์ ํธ(Object) | ์ํฐํฐ(Entity) |
| ์์ ์์ญ | ํ๋ก๊ทธ๋๋ฐ(๊ฐ์ฒด์งํฅ) | ๋ฐ์ดํฐ๋ฒ ์ด์ค, JPA |
| ์๋ฏธ | ํ์ค ์ธ๊ณ๋ฅผ ์ฝ๋๋ก ํํํ “๊ฐ์ฒด” | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ “๊ฐ์ฒด” |
| ๊ธฐ์ค | ๋ฉ๋ชจ๋ฆฌ(์คํ ์ค) | ๋ฐ์ดํฐ๋ฒ ์ด์ค(์ ์ฅ) |
| ์๋ช | ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ง ์กด์ฌ | DB์ ์ ์ฅ๋์ด ํ๋ก๊ทธ๋จ์ด ๊บผ์ ธ๋ ๋จ์ |
| ์์ | new User("ํ๊ธธ๋") | UserEntity(id=1, name="ํ๊ธธ๋") |
์ฆ,
๐ฌ “๋ชจ๋ ์ํฐํฐ๋ ์ค๋ธ์ ํธ์ด์ง๋ง, ๋ชจ๋ ์ค๋ธ์ ํธ๊ฐ ์ํฐํฐ๋ ์๋๋ค.”
**ํจํด์ธ์(Pattern Recognition)**์ด๋ ๋ฐ์ดํฐ ์์์ ๊ท์น์ด๋ ํน์ง์ ์ฐพ์๋ด๊ณ , ๊ทธ๊ฒ์ ๋ถ๋ฅํ๊ฑฐ๋ ์ดํดํ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
์ฆ, “๋ณด์ด๋ ๊ฒ(๋ฐ์ดํฐ, ์ ํธ, ์ด๋ฏธ์ง ๋ฑ)์์ ์๋ฏธ ์๋ ํํ๋ ๊ท์น์ ์ฐพ์๋ด๋ ๊ฒ”
์๋ฐ์์ for๋ฌธ์ด๋?
๐ ๊ธฐ๋ณธ ๊ฐ๋
for๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ด์์.
์ฆ, ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ์คํํ ๋ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, “1๋ถํฐ 5๊น์ง ์ซ์๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ๋ค”๋ฉด ์ด๋ ๊ฒ ์ธ ์ ์์ด์ ๐
๐ ๊ตฌ์กฐ ์ค๋ช
for (์ด๊ธฐ๊ฐ; ์กฐ๊ฑด์; ์ฆ๊ฐ์)
- ์ด๊ธฐ๊ฐ: ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ ๋ณ์์ ์์๊ฐ → int i = 1;
- ์กฐ๊ฑด์: ๋ฐ๋ณต์ ๊ณ์ํ ์ง ๊ฒฐ์ → i <= 5;
- ์ฆ๊ฐ์: ํ ๋ฒ ๋ฐ๋ณต ํ ๋ณ์ ๋ณ๊ฒฝ → i++ (i๋ฅผ 1์ฉ ์ฆ๊ฐ)
์ฆ, ํ๋ฆ์ ์ด๋ ๊ฒ ๋ผ์ ๐
1๏ธโฃ i=1๋ก ์์
2๏ธโฃ i <= 5๊ฐ ์ฐธ์ด๋ฉด → ์ฝ๋ ์คํ
3๏ธโฃ i++ (1 ์ฆ๊ฐ)
4๏ธโฃ ์กฐ๊ฑด์ ๋ค์ ๊ฒ์ฌ
5๏ธโฃ ๊ฑฐ์ง์ด ๋ ๋๊น์ง ๋ฐ๋ณต
โ ์คํ ๊ฒฐ๊ณผ:
๐ฑ 2๏ธโฃ ์คํ๋ง(Spring)์์ DI (Dependency Injection) ์ด๋?
๐ ๊ธฐ๋ณธ ๊ฐ๋
DI๋ ์์กด์ฑ ์ฃผ์
์ด๋ผ๊ณ ํด์.
์ฆ, ๊ฐ์ฒด๋ฅผ ์ง์ ๋ง๋ค์ง ์๊ณ ์ธ๋ถ(์คํ๋ง)๊ฐ ๋์ ๋ง๋ค์ด์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด์์.
๐ง ์ฝ๊ฒ ์๋ฅผ ๋ค์ด๋ณผ๊ฒ์:
๐ซ DI ์์ด
์ด๋ ๊ฒ ํ๋ฉด Car ํด๋์ค๊ฐ Engine์ ์์กดํด๋ฒ๋ ค์.
์ฆ, ์์ง์ ๋ฐ๊พธ๊ฑฐ๋ ํ
์คํธํ๊ธฐ๊ฐ ์ด๋ ค์์.
โ DI ์ฌ์ฉ
- @Component : ์คํ๋ง์ด “์ด๊ฑด ๊ด๋ฆฌํด์ผ ํ ๊ฐ์ฒด์ผ”๋ผ๊ณ ๋ฑ๋ก
- Car ์์ฑ์์ Engine์ ๋ฃ์ผ๋ฉด, ์คํ๋ง์ด ์์์ Engine ๊ฐ์ฒด๋ฅผ ์ฃผ์ (Inject)
- ๊ฐ๋ฐ์๊ฐ new Engine()์ ์ ์จ๋ ๋จ!
'Project ESG+AI > Tech Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 10์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.22 |
|---|---|
| 9์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.21 |
| 7์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.17 |
| 6์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.16 |
| [์ฐธ๊ณ ]๊ณ์ฐ๊ธฐ ์ฝ๋ ์ง ๊ฑฐ (0) | 2025.10.15 |