Section1 Unit7 [Linux/Git] ๊ธฐ์ด
๐ Chapter1. Command-Line Interface
• ํฐ๋ฏธ๋(Terminal)์ ์ ๋ ฅํ๋ ๊ธ์์ ์ถ๋ ฅ๋๋ ๊ธ์๋ก ์ปดํจํฐ์ ์ํตํ ์ ์๋ CLI(Command-Line Interface)
CLI๋ก ์์ฑํ ํด๋๋ ํ์ผ์ GUI๋ก ํ์ธํ ์ ์๊ณ , GUI๋ก ์์ ํ ๋ด์ฉ๋ CLI์์ ํ์ธํ ์ ์๋ค.
• Terminal์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด๋ค๋ ํ์ตํ๋ค. ํ์์ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ๋ค์ด ๋ง์๋๋ฐ, ์ด๋ฒ ์์ ์ผ๋ก ์ ๋ฆฌ๋ฅผ ํ ์ ์์๋ค.
๋ ธ์ ์ ๋ฐ๋ก ์ ๋ฆฌ๋ ํด ๋์๋๋ฐ, ์๊ฐ๋๋ฉด ๋ฐ๋ก ๋ธ๋ก๊ทธ์ ๊ฒ์๊ธ๋ก ์ฐ๋ฉด ์ข์๋ฏ ํ๋ค :)
๋ผ์ด๋ธ ์ธ์ ์์์ ์์ ๋ ์์ฐจ๊ณ , ์ฌ๋ฏธ์์๋ค ๐๐ป
• ์ฐ๋ฆฌ๋ ์๋น์ค์ ์๋น์๊ฐ ์๋๋ผ ๊ณต๊ธ์์ด๊ธฐ ๋๋ฌธ์ ์ปดํจํฐ์ ๋ํด ๋ ์ ์์์ผ ํ๋ค. (CLI๋ ๊ธฐ๋ณธ!)
• ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ CLI๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
• ์น๊ฐ๋ฐํ๋ฉด AWS๋ฅผ ๋นผ๋จน์ ์ ์์!
- AWS ์ค๋ฌผ ์ปดํจํฐ๋ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ์ด๋์ ์์นํด ์๋์ง ๊ณต๊ฐ๋์ด ์์ง ์๋ค. → ์๊ฒฉ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค. (CLI๊ฐ ํ์)
- AWS๋ GUI๋ ์์ง๋ง, CLI๋ก์ ์์ ์ด ๋น์ฉ์ด ๋ ํจ์จ์ ์ด๊ณ , ์๊ฒฉ ์ปดํจํฐ์๋ ์ ๊ทผํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๐ Chapter2. ํจํค์ง์ ํจํค์ง๋งค๋์
• ํจํค์ง๋ ๊ด๋ จ๋ ๋ชจ๋๋ค์ ๋ฌถ์ด์ ํ๋ฒ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ผ๋ก ํจํค์ง๋ ๋ณดํต ํ๋ ์ด์์ ๋ชจ๋ ํ์ผ๊ณผ ํจํค์ง์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด ํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
• ํจํค์ง๋งค๋์ (Package Manager)๋ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ก ํจํค์ง์ ์ค์น, ๋ณ๊ฒฝ, ์ญ์ ๋ฑ ๊ด๋ฆฌ๋ฅผ ํธ๋ฆฌํ๊ฒ ํด์ค๋ค.
• MacOs์ ํจํค์ง ๋งค๋์ Homebrew๋ ์ค์นํ๋ค!
๐ Chapter3. Node.js
• Node.js๋ JavaScript ๋ฐํ์์ด๋ค. ๋ฐํ์์ด๋ ์ด๋ค ํ๋ก๊ทธ๋จ์ด ๋์ํ ๋, ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๊ณณ์ ๋งํ๋ค. Node.js๋ผ๋ ์๋ก์ด JavaScript ๋ฐํ์์ด ๋ฑ์ฅํ๊ฒ ๋๋ฉด์, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ๊ณณ์์๋ JavaScript๋ฅผ ์คํ๋ ์ ์๊ฒ ๋์๋ค. JavaScript๋ฅผ ํตํด ์น ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋์ด ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๋ฑ ํ์ฉํญ์ด ํฌ๊ฒ ํ์ฅ๋์๋ค.
• NVM (Node Version Manager): nvm์ Node.js์ ๋ค์ํ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ๋จํ ๋ช ๋ น์ด๋ก Node.js๋ฅผ ์ค์นํ๊ณ , ๋ค์ํ Node.js version์ผ๋ก ๋ฐ๊พธ์ด ์ฌ์ฉํ ์ ์๋ค. (Node.js ์ด์ ๋ฒ์ ํ์์ Node.js๋ฅผ ์ญ์ ํ ์ฌ์ค์น ํ์ง ์๊ณ ๋ ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋ค.)
• npm์ Node Package Manager์ ์ฝ์ด๋ก, Node.js๋ฅผ ์ํ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค. npm์ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. npm์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋ง๋ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์์ ์ด ๋ง๋ ํจํค์ง๋ฅผ ๋ฐฐํฌํ๊ณ ๊ณต์ ํ ์๋ ์๋ค.
• package.json์ npm ๋ชจ๋์ ํ์ฉํ๊ธฐ ์ํด ํด๋น ๋ชจ๋์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ํ์ผ๋ก ํ๋ก์ ํธ ์ ๋ฐ์ ๊ดํ ์ ๋ณด๊ฐ ๋ค์ด์๋ค. package.json์๋ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๊ธฐ ์ํด ํ์ํ ๋ชจ๋๋ค์ด ๋ฌด์์ธ์ง, ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ๋ฐฉ๋ฒ, ํ๋ก๊ทธ๋จ์ ํ ์คํธํ๋ ๋ฐฉ๋ฒ ๋ฑ์ด ๋ช ์๋์ด ์๋ค. (๋จ, ํ๋ก๊ทธ๋จ์ ์คํ์ํค๊ธฐ ์ํด ํ์ํ ์ค์ ๋ชจ๋์ node_modules๋ผ๋ ํด๋์ ์ ์ฅ๋๋ค.)
๐ Chapter4. Git
• Git: ์์ค ์ฝ๋ ๊ธฐ๋ก์ ๊ด๋ฆฌํ๊ณ ์ถ์ ํ ์ ์๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (Version Control System)
• Github: Git Repository๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค. ๋ด ์ปดํจํฐ์์ Git์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ ค๋ ์ ์๋ค.
โญ๏ธ ๊ณผ์ . ์ง์์์ฑ๊ธฐ
์ด๋ฒ ๊ณผ์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ node.js ํ๊ฒฝ์์ JavaScript ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ npm ํจํค์ง ์ค ํ๋๋ฅผ ์ง์ ์ค์นํ๊ณ ์ฌ์ฉํด๋ณด๋ ๊ณผ์ ์๋ค. ์ฃผ์ด์ง ๊ณผ์ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ๋ชจ๋ ์์ ์ Terminal์์ CLI๋ก ํด๊ฒฐํ๊ณ , ์ฝ๋์คํ ์ด์ธ ๊ณผ์ ์ ์ถ ์์คํ ์ ํ์ตํ๋ค.
๊ฐ๋จํ๊ณ , ์ด๋ ต์ง ์์ ๊ณผ์ ์์ง๋ง ํด๊ฒฐํ๋ ๊ณผ์ ์ ๊ธฐ๋กํด๋ณผ๊น ํ๋ค.
Bare Minimum Requirements
โ Node.js ํ๋ก๊ทธ๋จ์ธ index.js๋ฅผ ์คํ์์ผ์ CLI์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ธ์.
โ range ๋ชจ๋์ ์ค์นํ๊ณ , ์ฌ์ฉ๋ฒ์ ์์๋ณด์ธ์.
โ ์ง์๋ฅผ ์์ฑํ๋ getListMultiplesOfTwo ํจ์๋ฅผ range ๋ชจ๋์ ์ด์ฉํด์ ์์ฑํ์ธ์.
โ npm run test ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ๋๋ก ์์ฑํ๋์ง ํ ์คํธํ ์ ์์ต๋๋ค. ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ๋ถ ํต๊ณผํด์ผ ํฉ๋๋ค.
โ npm run start ์คํฌ๋ฆฝํธ๋ฅผ ํตํด index.js ํ์ผ์ด ์คํ๋๋๋ก ๋ง๋์ธ์.
โ npm run test ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ๋๋ก ์์ฑํ๋์ง ํ ์คํธํ ์ ์์ต๋๋ค. ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ๋ถ ํต๊ณผํด์ผ ํฉ๋๋ค.
โ npm run submit ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๊ณผ์ ๋ฅผ ์ ์ถํ์ธ์.
1. ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ ํ์ธ ๋ฐ ํ๋ก๊ทธ๋จ ์คํ
node index.js
๋ก ํ์ผ์ ์ด๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
sowon@s-m1 u7-fe-sprint-cli-practice-main % node index.js
node:internal/modules/cjs/loader:1042
throw err;
^
Error: Cannot find module 'range'
Require stack:
- /Users/sowon/Desktop/frontend-dev/CodeStates_SEB/section1/u7-fe-sprint-cli-practice-main/getListMultiplesOfTwo.js
- /Users/sowon/Desktop/frontend-dev/CodeStates_SEB/section1/u7-fe-sprint-cli-practice-main/index.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)
at Module._load (node:internal/modules/cjs/loader:885:27)
at Module.require (node:internal/modules/cjs/loader:1105:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (/Users/sowon/Desktop/frontend-dev/CodeStates_SEB/section1/u7-fe-sprint-cli-practice-main/getListMultiplesOfTwo.js:1:15)
at Module._compile (node:internal/modules/cjs/loader:1218:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
at Module.load (node:internal/modules/cjs/loader:1081:32)
at Module._load (node:internal/modules/cjs/loader:922:12)
at Module.require (node:internal/modules/cjs/loader:1105:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/sowon/Desktop/frontend-dev/CodeStates_SEB/section1/u7-fe-sprint-cli-practice-main/getListMultiplesOfTwo.js',
'/Users/sowon/Desktop/frontend-dev/CodeStates_SEB/section1/u7-fe-sprint-cli-practice-main/index.js'
]
}
Node.js v18.13.0
• ์๋ฌ๋ ๋ฌด์์ ๋งํ๊ณ ์๋์?
→ module ‘range’๋ฅผ ์ฐพ์ ์ ์์
• ์ฒ์ ์๋ฌ๊ฐ ๋ฐ์ํ ํ์ผ์ ์ด๋ค ํ์ผ์ธ๊ฐ์?
→ getListMultiplesOfTwo.js
• ์ฒ์ ์๋ฌ๊ฐ ๋ฐ์ํ ํ์ผ์ ๋ช ๋ฒ์งธ ์ค์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์?
→ 1:15 (์ด๊ฒ ๋ง๋..??)
2. package.json ํ์ธ ๋ฐ ํจํค์ง ์ค์น
npm install
npm install
๋ก dependencyํจํค์ง๋ฅผ ์ค์น
→ node_modules๋ผ๋ ๋๋ ํ ๋ฆฌ ์์ฑ๋๋ค.
npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: <https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/>
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: <https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/>
npm WARN deprecated uuid@3.3.2: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See <https://v8.dev/blog/math-random> for details.
npm ERR! Cannot read properties of null (reading 'pickAlgorithm')
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/sowon/.npm/_logs/2023-04-24T04_22_28_495Z-debug-0.log
npm install
ํ ๋ ์๋ฌ๋์ ๊ฒ์ํด๋ณด๋ ์บ์๋ฅผ ์ง์ฐ๋ผ๊ณ ํด์
npm cache clear --force
์ด๊ฑฐํ๊ณ ๋ค์ npm install
์ ํ๋ ์ ์ ์ค์น๊ฐ ๋์๋ค.
3. range ๋ชจ๋ ์ค์น
npm install range
range ๋ชจ๋ ์ค์น ํ index.js ํ์ผ์ ๋ค์ ์คํํ๋ค.
↓ ์ด์ ๋ชจ๋์ ์ฐพ์ ์ ์๋ค๋ ์๋ฌ๋ ์๋จ์ง๋ง ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๊ฒ ๊ฐ์ง๋ ์๋ค.
4. ํ
์คํธ ์คํ (npm run test
)
ํ ์คํธ์ ํต๊ณผํ์ง ๋ชปํ๋ค๋ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์์๋ค.
(range ๋ชจ๋์ ์ค์นํ์ง๋ง ๊ด๋ จ ํจ์๋ฅผ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ)
5. getListMultiplesOfTwo
ํจ์ ๊ตฌํ
5-1. range๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๊ตฌํํ๋ค.
5-2. ๊ณผ์ ์๊ตฌ์ฌํญ ์ด์๊ธฐ ๋๋ฌธ์ package.json์ scripts start์ node index.js
๋ ์
๋ ฅํด์ค์ผ ํ๋ค.
5-3. ํจ์์ package.json์ ์์ ํ๊ณ npm run test
๋ค์ ํ ๋ฒ ์คํ
5-4. ์ฝ๋์คํ
์ด์ธ ๊ณผ์ ์ ์ถ์ ์ํ ๊ณผ์ ์ ์ถ ๋งค๋์ ๋ฅผ ์ค์นํ๊ณ , npm run submit
์ผ๋ก ๊ณผ์ ๋ฅผ ์ ์ถํ๋ค.
5-5. ๊ณ์ฐ๊ธฐ ๊ณผ์ ๋ ์ ์ถ์๋ฃ ๐
๐ ์ค๋์ ํ๊ณ
์ค๋์ nvm, node, git ๋ฑ์ ์ค์นํ๊ณ , ๋น๊ต์ ์ต์ํ์ง ์์ terminal ์ฌ์ฉ๋ฒ๊ณผ ํจํค์ง๋งค๋์ , git์ ๋ํด ํ์ตํ๋ค.
๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด ๊ฐ๋ terminal์ ์ฌ์ฉํด์ผ ํ ๋๊ฐ ์์๋๋ฐ, ๋ชจ๋ฅด๋๊ฒ ์์ผ๋ฉด ํญ์ ๊ทธ๋๊ทธ๋ ์ฐพ์๋ณด๋ฉฐ ํด๊ฒฐํ๊ณ ๋์ด์ด์ ํญ์ ๋๊ฐ์ ๋ถ๋ถ์์ ๋งํ๊ณค ํ์๋ค. ๋ช ๋ น์ด๋ ๊ธฐ์ต์ด ์๋์ ๊ณ์ ์ฐพ์๋ณด๊ณค ํ์๋๋ฐ ์ด๋ฒ ์์ ๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ฅผ ํ์ด๋ณด๊ณ ์ ๋ฆฌํด๋์๋๋ ๋ค์๋ฒ์๋ ๊น๋จน์ง ์๊ณ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ git๊ณผ github, ํจํค์ง๋งค๋์ ์ค์น์ ์ฌ์ฉ ๋ฑ ํ์์ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ๋ค์ ๋ค๋ฃฐ ์ ์์ด์ ์ข์๋ ๊ฒ ๊ฐ๋ค. ์์ฃผ ์ฌ์ฉํ๋ฉด ๋ ์ต์ํด์ง๊ฒ ์ง?
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section1 Unit8 JavaScript ๊ฐ์ฒด (0) | 2023.04.26 |
---|---|
Section1 Unit8 JavaScript ๋ฐฐ์ด (0) | 2023.04.25 |
Section1 Unit6 ๊ฐ๋จํ ์น์ฑ ๋ง๋ค๊ธฐ - ๊ณ์ฐ๊ธฐ ๊ตฌํ (๊ธฐ๋ณธ) (0) | 2023.04.21 |
Section1 Unit5 JavaScript ๊ธฐ์ด - ํจ์ (0) | 2023.04.20 |
Section1 Unit5 JavaScript ๊ธฐ์ด - ์กฐ๊ฑด๋ฌธ & ๋ฐ๋ณต๋ฌธ (0) | 2023.04.19 |