๋์ผํ ์ถ์ฒ์๋ง ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋ค.๋์ผ ์ถ์ฒ ์ ์ฑ ์ด ์์์ ํด์ปคํํ CSRF๋ XSS๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ธ์ ๋ณด๋ฅผ ํ์ทจ ๋นํ ์ ์๋ค.๊ฐ์ ์ถ์ฒ์ ๊ธฐ์ค \- ๋ URL์ ๊ตฌ์ฑ์์์ค Origin๋ง ๊ฐ์๋ฉด ๋๋ค.์ถ์ฒ๋น๊ต์ ์ฐจ๋จ์ ๋ธ๋ผ์ฐ์ ์์ ํ๋ค. (server x)s
์๋ฒ์ public key ์ private key ๋ฅผ ์์ฑํ๋ค. 1์์ ๋ฐ๊ธ๋ฐ์ public key์ ๊ฐ์ข ์ ๋ณด๋ฅผ CA์ ๋๊ธด๋ค.2์์ ๋ฐ์ ์ ๋ณด๋ก SSL์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ค.3์์ ๋ง๋ ์ธ์ฆ์๋ฅผ ์ํธํ ํ๊ธฐ์ํด CA์ public key ์ private key๋ฅผ ์
class component ์ Functional component ๋๊ฐ์ง ์ฝ๋๋ฅผ ์ค๋นํด ๋ณด์๋ค. const handleClick = () => { setTimeout(showMessage, 3000); }; return ( Follow );}
Reduxredux๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋น๋๊ธฐ์ฒ๋ฆฌ๋ชฉ์ ์ด ์๋๊ธฐ ๋๋ฌธ์ redux-saga ,redux-thunk ๋ฑ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด์ผํ๋ค.๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ํ๊ด๋ฆฌ(isLoading, error, success)์ํฉ์ ๊ด๋ฆฌํด์ผํ๋ค.React-query์ํ๊ด๋ฆฌ๋ฅผ ๊ธฐ๋ณธ
web Architecture ํฌ๊ฒ ๋ณด๋ฉด ์ด๋ฐ ๊ตฌ์กฐ์ด๋ค. ์๋ฒ ์กฐ์์ ์ํ ์ฉ์ด Browser Server API HTTP Ajax CORS XSS 1. Browser & Server Browser - ์ฌ์ฉ์๊ฐ ์ ํํ ์์(html, js, css)์ ์๋ฒ์
fetch API - ๋น๋๊ธฐ ์์ฒญ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ๋ก์ ์๋ ๋คํธ์ํฌ ์์ฒญ์ด ์๋ค. ๋ค์ํ ๋คํธ์ํฌ ์์ฒญ์ค URL์ ์์ฒญํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ํํ๋ค. ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ API๊ฐ ๋ฐ๋ก fetch API ์ด๋ค. ์ฃผ๋ก ํฌํธ ์ฌ์ดํธ์ ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ์ ๋ณด, ๋ ์จ , ์ฃผ์
โ fs.readFile(filename\[,option],callback) ์ด ๋ฉ์๋๋ ํ์ผ์ ์ฝ๋ ๋ฉ์๋๋ก node.js์ ๋ด์ฅ๋ชจ๋์ด๋ค. ์ฐธ๊ณ (https://nodejs.org/dist/latest-v14.x/docs/api/fs.htmlโ ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ
Machine Languages 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ธ์ด์ฌ๋์ด ์ฝ๊ธฐ ํ๋ค๋คAssembly Languages๊ธฐ๊ณ์ด์ ์ผ๋์ผ ๋์์ด ๋๋ ์ ๊ธ์ธ์ดcpu์ ๋ฐ๋ผ ์ง์ํ๋ operation(์กฐ์)์ด ๋ค๋ฅด๋ค.cpu ํน์ฑ์ ๋ฐ๋ฅด๋ค ๋ณด๋ ์ฌ๋ฌ๊ฐ์ง ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ค.High
์ด๋ฐฉ๋ฒ์ ๋ ธ๋์ ๊ฐ์ด ์ ๋ ฌ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์์๊ฐ ์กด์ฌํ๋๋ฐ, ๋ ธ๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋ ธ๋๊ฐ๋ณด๋ค ์์ ๊ฐ์ด, ์ค๋ฅธ์ชฝ์๋ ๋ ธ๋๊ฐ ๋ณด๋ค ํฐ ๊ฐ์ด ์จ๋ค.๊ทธ๋ํ์ ๊ฒฝ์ฐ ๋น์ ํ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ํ๊ธฐ ์ํด ํน๋ณํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ํ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ DFS
insertNode(value) - ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.contains(value) - ํธ๋ฆฌ์ ํด๋น ๋ ธ๋๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค.
Graph : ๋ ธ๋ ๊ทธ๋ฆฌ๊ณ ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ edge์ ๊ตฌ์ฑ โtip ๊ทธ๋ํ๋ ๋ฌด๋ฐฉํฅ(undirected)๊ณผ ๋ฐฉํฅ(directed) ์ผ์์๋ค. "๋ฌด๋ฐฉํฅ"์ ์ฐ๊ฒฐ๋ ๋ ธ๋๊ฐ ๋์นญ, ์ฆ ์๋ก๋ฅผ ๊ฐ๋ฆฌํจ๋ค๊ณ ๋ณผ์ ์๊ณ "๋ฐฉํฅ"์ ๋ ธ๋์ ๋น๋์นญ, ์ฆ ํ์ชฝ์์๋ง ๊ฐ๋ฆฌํจ๋ค๊ณ
๊ฐ์ด ๋ค์ด์ค๋ฉด hash function ์ ๊ฑฐ์ณ storage์ ์๋ bucket ์ ๊ฐ์ฒด์ ๋น์ทํ ํํ๋ก key ์ value(tuples) ๋ก ์ ์ฅ์ด ๋๋ค. ๊ทธ๋์ key ๋ฅผ ์ ๋ ฅ ํ๊ฒ ๋๋ฉด value ๊ฐ ์ถ๋ ฅ ๋๋ ํํ์ด๋ค.hash table ์ ๋ฏธ๋ฆฌ storag
linked list ๋ ๋ฐฐ์ด๊ณผ ๋น๊ตํ์๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ์๊ฐ์ด ์ค๋ ์์ ๋๋ค. index ๋ฅผ ํตํด์ ์ฐพ๋ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ํ๋ ํ๋ ์ฐพ์๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.โ ๋ ธ๋ ์ถ๊ฐโ ๋ ธ๋ ์ญ์ ๋ ์๋ฃ๋ฅผ ๋ณด๋ฉด ๋ค์ ์์์ ์ฃผ์๋ฅผ ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด๋ณด๋ค ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์
push(element) : stack์ ๋งจ ๋ค์ ๊ฐ์ ์ถ๊ฐํด์ค๋ค.pop() : stack์ ๋งจ ๋ค์ ๊ฐ์ ์ญ์ ํด์ค๋ค.peek() : stack์ ๋งจ ๋ค์ ๊ฐ์ ๋ฆฌํดํด์ค๋ค.size() : stack ์ ๋ค์ด์๋ ๋ฐ์ดํฐ์ ์ด์๋ฅผ ๋ฆฌํดํด์ค๋ค.isEmpty() : stack
์์ ํ์ (primitive type)์ ์, ์ค์๋ฌธ์๋ ผ๋ฆฌ(์ฐธ, ๊ฑฐ์ง)์ฌ์ฉ์ ํ์ (custom type)๊ตฌ์กฐ์ฒด, ํด๋์ค ๋ฑ๋ฐ์ดํฐ ํ์ vs ์๋ฃ๊ตฌ์กฐ ๋ฐ์ดํฐ ํ์ : ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํด์ํ ์ง ์ ์ ํ ๊ฒ์๋ฃ๊ตฌ์กฐ : ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ฌถ์์ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ์ฌ์ฉํ ์ง ์
๐ซ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋์ ์ผ๋ก ์์ฑ๋๋ ๊ฐ๊ฐ์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด button ์๋ฆฌ๋จผํธ ์์ฒด๊ฐ ์ฝ์์ ํ์๋ ๊ฒ์ ๋๋ค. ์ด ๋ bind๋ฅผ ์ด์ฉํด ์ถ๋ ฅํ๊ณ ์ถ์ ๊ฐ์ this๋ก ๋๊ธฐ๊ฑฐ๋, ํน์ ์ธ์๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
๋ฉ์๋๋ฅผ ์ฌ์ฉํ ํจ์์ ์คํ์ ๋ณด์. >js Math.max.apply (null ,[5,4,3,2,1]) //5 //apply ๋ ์ซ์๋ค์ ์งํฉ์ผ๋ก ๋ง๋ค์ด ์ค๋ค. >js Math.max(...[5,4,3,2,1])//5 ์์ .call Prototype ์ ๋น๋ ค
console.log(this)foo()obj.foo()new foo()foo.call() , foo.apply์ฌ๋ฌ๊ฐ์ ์นด์ดํฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด??
โ ์ฆ, "function" ๋์ "=>"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.tip. ํจ์์์ ํํ์์ด ๋์ค์ด์์ผ ๊ฒฝ์ฐ return ๊ณผ ์ค๊ดํธ๋ก ํํํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.