๐ป๋ธ๋ผ์ฐ์ ์ ๋์ ์๋ฆฌ(์์ ๊ฐ๋ )
ํต์ : ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์์ฒญ
์ ํ๋ฉด ์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ผ ํน์ ๊ฐ์ ์๋ต
ํด์ค๋ค. ์์ฒญ์ ํ๋ฒ์ ํ๋์ฉ or ๋์์ ๊ฐ๋ฅ๋ ํ๋ค.
๋ ๋๋ง: DOM์ด๋ ๊ฐ์ฒด๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๊ทธ๋ ค์ฃผ๋
๊ณผ์ ์ด๋ค. DOM์ ํต์ ์ ํตํด ๋ฐ์ HTML
์ ๋ธ๋ผ์ฐ์ ์์ ์์ฑํด์ค๋ค. ๋ํ DOM์ ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ์์๊ฐ ๋ถ๋ชจ ์์ ๊ด๊ณ๋ก ์ด๋ฃจ์ด์ก๋ค.
์คํฌ๋ฆฝํธ ์คํ: ๋ธ๋ผ์ฐ์ ๊ฐ ์คํฌ๋ฆฝํธ ํญ
์ ํตํด ์คํฌ๋ฆฝํธ ํ์ผ์ ์ฝ์ผ๋ฉด ๋ฐ๋ก ์คํ์ด ๋๋ค. ์ด๋ฅผ ํตํด UI๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋์ ์ธ ํ๋ฉด์ ๊ตฌ์ฑ
ํ ์ ์๋ค.
๐๋ณ์
์ผ๋ฐ์ ์ผ๋ก ์ํ์์๋ ๋ณํ๋ ๊ฐ์ ๋ณ์๋ผ๊ณ ํ๋ค. ์ปดํจํฐ๊ณตํ์์๋ ์๋ฏธ๋ ๋น์ทํ์ง๋ง ์ํฉ์ ๋ฐ๋ผ ๋ณํ๋ ๊ฐ์ด ์๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ํ ๋น
ํ ๊ฐ์ ๋ณ์๋ผ๊ณ ํ๋ค.
javascript์์ ๋ณ์๋ var์ let์ ์ฌ์ฉํ์ง๋ง ํ์ฌ ES6๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ var๋ ์ฌ์ฉํ์ง ์๋๋ค. ์ง๊ธ๋var๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค
. ๊ทธ ์ด์ ๋ ํธ์ด์คํ
๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ ์ ์๋ ํ๋ฅ ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
โจํธ์ด์คํ
ECMA2015์ ์๋ ์ ์ฐ์ด๋ ๋จ์ด์๋ค. ๋ณ์ ๋ฐ ํจ์ ์ ์ธ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ฑํ ์ฝ๋์ ์๋จ์ผ๋ก ์ฎ๊ฒจ์ง๋ ๊ฒ์ผ๋ก ๋ณผ์์์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ํธ์ด์คํ ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ณ์ ๋ฐ ํจ์ ์ ์ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค๊ณ ์๋์๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ง๋ ์๋๋ค.
๐์๋ฃํ
Number
์ซ์ ํ์ ์ ๋ปํ๋ฉฐ ์ ์, ์ค์, ๋ชจ๋ ์๊ฐ Number์ ์ํ๋ค. NaN์ ์ซ์๊ฐ ์๋์ ๋ํ๋ด์ง๋ง Numberํ์ ์ ์ํ๋ค. ๋ฌดํ์ ๋ํ๋ด๋ Infinity๋ ๊ทธ๋ ๋ค.
String
์์ ๋ฐ์ดํ์์ ํฐ ๋ฐ์ดํ๋ฅผ ๋ฃ์ ์ ์๊ณ , ํฐ๋ฐ์ดํ์์ ์์ ๋ฐ์ดํ๋ฅผ ๋ฃ์ ์ ์๋ค. ๋ฌธ์์ด ๋ด์ ๋ค๋ฅธ ๋ณ์๋ ๋ฃ์์์๋ค(`๋ฐฑํฑํ์ฉ) ์์๋ฐ์ดํ์์ ์์๋ฐ์ดํ๋ฅผ ๋ฃ๊ณ ์ถ์ผ๋ฉด (์ด์ค์ผ์ดํ) ๋ฌธ์๋ฅผ ํ์ฉํด ๋ฃ์์์๋ค.
Boolean
true or false๋ง ๊ฐ์ง๋ค.
Object
์ฌ๋ฌ ์๋ฃํ์ ์ฌ๋ฌ ๊ฐ์ ํค-๊ฐ ํํ๋ก ๊ฒฐํฉ์ํจ ๋ณตํฉ ํ์ ์ด๋ค. key๋ ๋ฌด์กฐ๊ฑด ๋ฌธ์์ด์ด๋ค! ex) ์ํ๋ ์ด๋ฆ์ ์ฐพ์ ์ฐพ์์ ์๋ ์ฌ๋ฌผํจ์ ๋น์
Array
์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ํํ๋ก ์ ์ฅํ๋ ๋ณตํฉ ํ์ ๋ฐฐ์ด์ ํฌํจ๋ ์์๋ ์์๋๋ก ๋ฒํธ(index)๊ฐ ๋ถ๋๋ค. ex) ์์๋๋ก ํ์ ๋ฒํธ๊ฐ ์๋ ์ถ์๋ถ๋ก ๋น์
Function
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํด์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ด๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ๊ฐ์ฒด
undefined, null
undefined๋ ๋ณ์ ์์๊ฐ ์ ์ธ๋์์ง๋ง ๊ฐ์ด ์ ์๋์ง ์์๋ค๋ ๋ป์ด๊ณ null์ ์ฌ์ฉ์๊ฐ ์ผ๋ถ๋ฌ ๋น์๋จ๋จ ๋ป์
๐พ๋ฉ๋ชจ๋ฆฌ
ํ ๋น & ์ฌ์ฉ
๋ณ์๋ฅผ ์์ฑํ๋ฉด ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น ์ํจ๋ค.
๋ณ์๋ฅผ ์ ์ธํ ๋ javascript์์๋ ๋ฌด์จ์ผ์ด ์ผ์ด๋ ๊น..?
๋ณ์์ ๊ณ ์ ์๋ณ์๋ฅผ ์์ฑ
ํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ํ ๋น
ํ๋ค. ์ต์ข
์ ์ผ๋ก ์์ฑํ ์ฃผ์์ ๊ฐ์ ๋ฃ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ฐ์๋จธ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๊ฐ์๋จธ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๊ตฌํ ํด๋จ๋๋ฐ, ๊ทธ๊ฒ์ heap
์์ญ(์ฐธ์กฐ ํ์
์ด ๋ค์ด๊ฐ๊ณ ) ๊ณผ Call Stack
์์ญ(์์ ํ์
์ด ๋ค์ด๊ฐ)์ด๋ค.
ํด์
๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋์ฐจ์ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๊ธฐ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๊ณผ์ ์ด ํ์
ํจ. ํ์ง๋ง ์ฌ์ฉ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๋ฒ์ ๋ชจ๋ฅด์ง๋ง ์๋์ผ๋ก ํด์
ํ ์ ์๋ค. ๊ทธ ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ง์์ Garbage Collector๊ฐ ์๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ ์ผ๋ก ํด์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Garbage Collector
๋ Garbage Collection ์๋ ๋ฉ๋ชจ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋ง๋ค์ด์ก์ผ๋ฉฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์
ํ๋ ์ญํ ์ ํ๋ค. ๋ฌผ๋ก ์ต์ ํ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ์ง๋ง C++ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ์ธ์ด๋ณด๋ค ํธํ๋ค.
๋ก์ง์ด ๋๋๊ณ ๋ง์ฝ ์ฌ์ฉ์ ๋ง์น ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ป๊ฒ ๋๋๊ฐ..? Garbage Collector๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฆฌํจ ํ์ฌ๋ mark and sweep algorithm์ผ๋ก ๋ฟ์ ์ ์๋ ์ฃผ์๋ฅผ ๋ ์ด์ ํ์์๋ ์ฃผ์๋ก ์ ์ํ๊ณ ์ง์ฐ๋ ์๊ณ ๋ฆฌ์ฆ๋ฅผ ์ฌ์ฉํ๋ค.
๐Control Flow(ํ๋ฆ์ ์ด)
Control Flow
: ์ผ๋ฐ์ ์ธ ์กฐ๊ฑด๋ฌธ์ด๋ ๋ฐ๋ณต๋ฌธ์ด ์ํจ- Data Flow: ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
Control Flow๋? ํ๋ฆ์ ์ ์ดํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ์กฐ๊ฑด์ด๋ ๋ฐ๋ณต์ ํตํด ์ํ๋ฅผ ์ ์ดํ๋ ๊ฒ์ ๋งํ๋ค.
๐ง์กฐ๊ฑด๋ฌธ์์ ์ ์ ์ฌํญ
if์์ false๊ฐ ๋ฟ๋ง ์๋๋ผ false, undefined, null, 0, NaN, โโ(empty string)๋ ๋ชจ๋ ๊ฑฐ์ง์ผ๋ก ์ทจ๊ธ๋ ์ ์๋ค.
๐ฉํฉ์ ๋ฐ๋ฅธ Array Method
fill์ ๊ฐ์ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ ๋ ์ฌ์ฉ
from์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ ๋ ์ฌ์ฉ
๋ฐฐ์ด์ ํ์
์ ๊ฐ์ฒด์
๐์ค์ฝํ์ ํด๋ก์
์ค์ฝํ: ์ ํจ๋ฒ์๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ ๋ณ์๊ฐ ์ด๋ ๋ฒ์๊น์ง ์ฐธ์กฐ๋๋ ์ง๋ฅผ ๋ปํ๋ค.
ํด๋ก์ : ํจ์๊ฐ ์ ์ธ๋ ํ๊ฒฝ์ ์ค์ฝํ๋ฅผ ๊ธฐ์ตํ์ฌ ํจ์๊ฐ ์ค์ฝํ ๋ฐ์์ ์คํ๋ ๋์๋ ๊ธฐ์ตํ ์ค์ฝํ์ ์ ๊ทผํ ์ ์๊ฒ ๋ง๋๋ ๋ฌธ๋ฒ์ด๋ค. ํด๋ก์ ๋ฅผ ํ์ฉํด ๋ด๋ถ๋ณ์์ ํจ์๋ฅผ ์จ๊ธธ ์ ์๋ค. ์จ๊ธฐ๋ฉด์ ๊ฐ๋ฐ์์ ์ค์๋ฅผ ์ค์ผ์์์ผ๋ฉฐ, ํด๋ก์ ๋ฅผ ์ ์์์ผํ๋ ์ด์ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ๊ธฐ๋ณด๋จ ์๊ธฐ ํ๋ ๋ฒ๊ทธ๋ฅผ ์ ์์ ํ๊ธฐ ์ํด์์ด๋ค.
๐ฅ๋คํธ์ํฌ ํต์
- URL์ ํด์ํ๋ค.
- DNS๋ฅผ ์กฐํํ๋ค.
- ํด๋น IP๊ฐ ์กด์ฌํ๋ ์๋ฒ๋ก ์ด๋ํ๋ค.
- ARP๋ฅผ ์ด์ฉํ์ฌ MAC์ฃผ์ ๋ณํ์ ํ๋ค.
- TCPํต์ ์ ํตํด Socket์ ์ด์ด์ผ ํ๋ค. ์ด๋ 3way handshake๊ฐ ๋จ
- ์๋ฒ๋ ์๋ตํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ ๋๋งํ๋ค.
๐์ํธํ
์ํธํ: ํ๋ฌธ์ ํด๋ ํ ์ ์๋ ์ํธ๋ฌธ์ผ๋ก ๋ณํํ๋๊ฒ์ ๋งํ๋ค.
๋จ๋ฐํฅ ์ํธํ
ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ํ๋ฌธ์ ๋ณตํธํ ํ ์ ์๋ ํํ
๋ก ์ํธํํ๋ค. ์๋ํ๋ฉด ์ด๋ฐ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ ๋ฐ๋ ์
์ฅ์์ ํด์์ ํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ์ ์ผ๋ก MD5์ SHA ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค. ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ ๋ฑ์ ์ ์ฅํ ๋ ์์ฃผ ์ฌ์ฉํ๋ค.
๋ณตํธํ๊ฐ ๋ถ๊ฐ๋ฅํ์ง๋ง Rainbow Table์ ํตํด ์๋ฌธ์ ์์๋ผ ์๋ ์๋ค. Rainbow Table
์ ํ๋ฌธ๊ณผ ํด์ ํจ์๋ก ๋ง๋ ๋ฌธ์์ด์ ๋ชจ๋ ์ ์ฅ์์ผ ๋์ ํ์ด๋ค.
ํด๊ฒฐ๋ฒ
Salt: ํ๋ฌธ์ ์์์ ๋ฌธ์์ด์ ์ถ๊ฐ
ํ์ฌ ์ํธํํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. 128bit์ด์์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ข์
Key stretching: ํด์๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต
ํ์ฌ ์๋ฌธ์ ์๊ธฐ ํ๋ค๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ / ์ผ๋ฐ์ ์ธ ์์คํ
์์ 0.2์ด ์ด์ ๋ฐ๋ณตํ๋ฉด ์์ ํ๋ค๊ณ ์ข์
ํด๊ฒฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํ๋๊ฒ์ ๋์์๋ PBKDF2, bcrypt ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ ๊ฒ์ด ์ข๋ค
์๋ฐฉํฅ ์ํธ์
ํ๋ฌธ์ ๋ณตํธํ ํ ์ ์๋ ํํ
๋ก ์ํธํ, ๋์นญํค์ ๋น๋์นญํค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋๋๋ค. ๋์นญํค๋ฅผ ์ด์ฉํ๋ AES์ ๋น๋์นญํค๋ฅผ ์ด์ฉํ๋ RSA๋ก ๋๋๋ค.
๋์นญํค ์ํธ ์๊ณ ๋ฆฌ์ฆ: ์ํธํ์ ๋ณตํธํํ๋ ํค๊ฐ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ํ์ ์ผ๋ก AES
๋น๋์นญํค ์ํธ ์๊ณ ๋ฆฌ์ฆ: ์ํธํ์ ๋ณตํธํํ๋ ํค๊ฐ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ RSA(์์ธ์ ๋ถํด๊ธฐ๋ฐ)
๐๋๋์
๋ด๊ฐ TIL๋ฅผ ํ๋ ์ด์ ๋ ๋ด๊ฐ ์์๋ ๊ฐ๋ ๊ณผ ์ด๋ฒ ๋ฐ๋ธ์ฝ์ค๋ฅผ ํตํด ์๋กญ๊ฒ ์๊ฒ ๋ ๋ด์ฉ์ ๋น๊ตํด๊ฐ๋ฉฐ ๋จ๋จํ ์ง์?์ ๋ง๋ค๊ธฐ ์ํด ์์ฑํ๊ฒ ๋๋ค. ์ค๋์ด ์ฒซ๋ ์ธ๋ฐ ์๊ฐ๋ณด๋ค ์ ๋๋ก ๋ชป์ด๊ฑฐ๊ฐ์ ๋ง์์ ๊ฑธ๋ฆฐ๋ค. ์์ง ๊ณต๋ถํ๋ ๋จ๊ณ์ด๊ณ TIL ์์ฑ ์๋ฃ๋ฅผ ๋ณด๋ฉด์ ๋์๊ฒ ๋ง๋ TIL์์ฑ๋ฒ์ ์ฐพ์์ผ๊ฒ ๋ค.
์ค๋ TIL๋ฅผ ํตํด ์์ง์ ์์ ๊ฐ๋ ๋ถํฐ ์์ํ์ง๋ง ํธ์ด์คํ , ํด๋ก์ , ๋คํธ์ํฌ ํต์ , ๋ฉ๋ชจ๋ฆฌ ๋ฑ ๊น๊ฒ ๊ณต๋ถํด์ ํฌ์คํ ์ ํด๋ณด๋ ๊ฒ์ ๋ชฉํ๋ก ํ ๊ฒ์ด๋ค.
์์ง ๋ฏธ์ํ์ง๋ง ๊ณ์ ํ๋ค๋ณด๋ฉด ์ต์ํด์ง๊ฑฐ๋ผ ์๊ฐ์ด ๋ค์๋ค. ์์ผ๋ก ๋จ์ ๊ธฐ๊ฐ ์์์์ ํ์ดํ !!๐โโ๏ธ๐โโ๏ธ๐โโ๏ธ