IT

๐Ÿ” ์ฟ ํ‚ค(Cookie), ์„ธ์…˜(Session), ํ† ํฐ(Token) ์ธ์ฆ ๋ฐฉ์‹ ์ฐจ์ด ์™„๋ฒฝ ํ•ด์„ค! ๐Ÿ 

์›น์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•  ๋•Œ ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๊ฑฐ๋‚˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์•„๋‘” ์ƒํ’ˆ ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ์ธ์ฆ ๋ฐ ์ƒํƒœ ์œ ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ํŠนํžˆ HTTP ํ†ต์‹ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌด์ƒํƒœ(Stateless)๋ผ์„œ, ์ด ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ์ˆ (์ฟ ํ‚ค, ์„ธ์…˜, ํ† ํฐ)์ด ์—†๋‹ค๋ฉด ๋งค ํŽ˜์ด์ง€ ์ด๋™ ์‹œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ์ด ์„ธ ๊ฐ€์ง€ ๊ธฐ์ˆ ์˜ ๋™์ž‘ ์›๋ฆฌ, ์žฅ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  ์ฐจ์ด์ ์„ ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์‰ฝ๊ฒŒ, ํ•˜์ง€๋งŒ ๊นŠ์ด ์žˆ๊ฒŒ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”.


1. ๐Ÿช ์ฟ ํ‚ค (Cookie) ๊ธฐ๋ฐ˜ ์ธ์ฆ: ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ์ธก์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

1) ๋™์ž‘ ์›๋ฆฌ

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„ ์‘๋‹ต: ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ๋˜๋ฉด, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค ๋˜๋Š” ์„ธ์…˜ ID๋ฅผ ํฌํ•จํ•œ ์ฟ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด HTTP ์‘๋‹ต ํ—ค๋”์— ๋„ฃ์–ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ ์ €์žฅ: ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ ์š”์ฒญ: ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค, ์ด ์ฟ ํ‚ค๋ฅผ HTTP ์š”์ฒญ ํ—ค๋”์— ์ž๋™์œผ๋กœ ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  5. ์„œ๋ฒ„ ์ธ์ฆ: ์„œ๋ฒ„๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

2) ์žฅ๋‹จ์ 

์žฅ์ ๋‹จ์ 
๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ์„ค์ •์ด ํŽธ๋ฆฌํ•จ๋ณด์•ˆ ์ทจ์•ฝ: ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋˜๋ฏ€๋กœ, XSS ๊ณต๊ฒฉ ๋“ฑ์— ์ทจ์•ฝํ•˜์—ฌ ๋ฏผ๊ฐ ์ •๋ณด ์ €์žฅ์— ๋ถ€์ ํ•ฉ.
ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ณด์กด ๊ฐ€๋Šฅ์šฉ๋Ÿ‰ ์ œํ•œ: ์ฟ ํ‚ค๋‹น ์•ฝ 4KB์˜ ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์žˆ์Œ.
๋งค ์š”์ฒญ ์ „์†ก: ๋ชจ๋“  ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋˜์–ด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ.

2. ๐Ÿ–ฅ๏ธ ์„ธ์…˜ (Session) ๊ธฐ๋ฐ˜ ์ธ์ฆ: ์„œ๋ฒ„ ์ €์žฅ์†Œ

์„ธ์…˜์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” ๊ทธ ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์…˜ ID(Session ID)๋งŒ ์ฟ ํ‚ค ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

1) ๋™์ž‘ ์›๋ฆฌ

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„ ์„ธ์…˜ ์ƒ์„ฑ: ์„œ๋ฒ„๋Š” ์ธ์ฆ ํ›„, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ , ์ด ์„ธ์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์„ธ์…˜ ID๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ธ์…˜ ID ์ „๋‹ฌ: ์„œ๋ฒ„๋Š” ์ด ์„ธ์…˜ ID๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค(์„ธ์…˜ ์ฟ ํ‚ค)๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ ์š”์ฒญ: ํด๋ผ์ด์–ธํŠธ๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ์ด ์„ธ์…˜ ID๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  5. ์„œ๋ฒ„ ์ธ์ฆ: ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ ์„ธ์…˜ ID๋ฅผ ์ด์šฉํ•ด ์ž์‹ ์˜ ์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฐพ์•„ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

2) ์žฅ๋‹จ์ 

์žฅ์ ๋‹จ์ 
๋ณด์•ˆ ๊ฐ•ํ•จ: ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„์—๋งŒ ์ €์žฅ๋˜๋ฏ€๋กœ ์ฟ ํ‚ค๋ณด๋‹ค ๋ณด์•ˆ์ด ํ›จ์”ฌ ๊ฐ•๋ ฅํ•จ.์„œ๋ฒ„ ๋ถ€ํ•˜: ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ DB์— ๋ถ€๋‹ด์ด ์ปค์ง.
๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์—†์Œํ™•์žฅ์„ฑ ๋ฌธ์ œ (Scale-out): ์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€๋กœ ํ™•์žฅ(Scale-out)ํ•  ๋•Œ ์„ธ์…˜ ๋ฐ์ดํ„ฐ์˜ ๊ณต์œ (Sticky Session ๋˜๋Š” Redis/Memcached ์‚ฌ์šฉ)๊ฐ€ ๋ณต์žกํ•ด์ง.

3. ๐Ÿ”‘ ํ† ํฐ (Token) ๊ธฐ๋ฐ˜ ์ธ์ฆ: ์ž์ฒด ๊ฒ€์ฆ ํ‹ฐ์ผ“ (JWT)

ํ† ํฐ ๋ฐฉ์‹์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ธ์ฆ์„ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•œ ์ธ์ฆ ํ† ํฐ(Authentication Token)์„ ๋ฐœ๊ธ‰ํ•˜๊ณ , ์ด ํ† ํฐ์„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๊ด€ํ–ˆ๋‹ค๊ฐ€ ๋งค ์š”์ฒญ ์‹œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ† ํฐ ๋ฐฉ์‹์ด JWT (JSON Web Token)์ž…๋‹ˆ๋‹ค.

1) ๋™์ž‘ ์›๋ฆฌ (JWT ๊ธฐ์ค€)

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ํ† ํฐ ๋ฐœ๊ธ‰: ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ํ›„, ์‚ฌ์šฉ์ž ์ •๋ณด(Payload)๋ฅผ ๋‹ด๊ณ  ์„œ๋ฒ„ ๋น„๋ฐ€ ํ‚ค๋กœ ์„œ๋ช…(Sign)ํ•œ JWT๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ ์ €์žฅ: ํด๋ผ์ด์–ธํŠธ๋Š” ํ† ํฐ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ (localStorage ๋˜๋Š” Cookie)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ ์š”์ฒญ: ํด๋ผ์ด์–ธํŠธ๋Š” ํ† ํฐ์„ HTTP ํ—ค๋” (๋ณดํ†ต Authorization: Bearer [ํ† ํฐ])์— ๋‹ด์•„ ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  5. ์„œ๋ฒ„ ๊ฒ€์ฆ: ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ๋ฐ›์œผ๋ฉด ์ž์‹ ์˜ ๋น„๋ฐ€ ํ‚ค๋กœ ์„œ๋ช…์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ์ด ์œ ํšจํ•˜๋ฉด ๋ฐ”๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด(Payload)๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์ธ์ฆ์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์ €์žฅ์†Œ ์กฐํšŒ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

2) ์žฅ๋‹จ์ 

์žฅ์ ๋‹จ์ 
ํ™•์žฅ์„ฑ/์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ: ์„œ๋ฒ„๊ฐ€ ํ† ํฐ์„ ์ €์žฅํ•  ํ•„์š” ์—†์–ด(Stateless), ์„œ๋ฒ„๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ์œ ๋ฆฌํ•จ.ํ† ํฐ ์šฉ๋Ÿ‰: ํ† ํฐ์ด ๋„ˆ๋ฌด ํฌ๋ฉด ๋งค ์š”์ฒญ ์‹œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€.
ํฌ๋กœ์Šค ๋„๋ฉ”์ธ: ์ฟ ํ‚ค์™€ ๋‹ฌ๋ฆฌ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ๋„ ์ธ์ฆ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฌ์›€.ํ† ํฐ ํƒˆ์ทจ: ํ† ํฐ์ด ํƒˆ์ทจ๋˜๋ฉด ์œ ํšจ ๊ธฐ๊ฐ„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ง‰์„ ๋ฐฉ๋ฒ•์ด ์—†์Œ (Refresh Token ๋„์ž…์œผ๋กœ ๋ณด์™„).

4. ๐Ÿ“Š ์„ธ ๊ฐ€์ง€ ์ธ์ฆ ๋ฐฉ์‹ ๋น„๊ต ์š”์•ฝ

๊ตฌ๋ถ„์ฟ ํ‚ค์„ธ์…˜ํ† ํฐ (JWT)
์ •๋ณด ์ €์žฅ ์œ„์น˜ํด๋ผ์ด์–ธํŠธ (๋ธŒ๋ผ์šฐ์ €)์„œ๋ฒ„ (๋ฉ”๋ชจ๋ฆฌ, DB ๋“ฑ)ํด๋ผ์ด์–ธํŠธ (๋กœ์ปฌ ์ €์žฅ์†Œ ๋˜๋Š” ์ฟ ํ‚ค)
์„œ๋ฒ„ ์ƒํƒœStatelessStateful (์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ๊ธฐ์–ต)Stateless (์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š์Œ)
๋ณด์•ˆ๊ฐ€์žฅ ์ทจ์•ฝ (XSS ๋…ธ์ถœ ์œ„ํ—˜)๊ฐ€์žฅ ๊ฐ•๋ ฅ (์ •๋ณด๊ฐ€ ์„œ๋ฒ„์—๋งŒ ์žˆ์Œ)๊ฐ•๋ ฅ (์„œ๋ช… ๊ฒ€์ฆ), ํƒˆ์ทจ ์‹œ ์œ„ํ—˜
ํ™•์žฅ์„ฑ (Scale-out)์‰ฌ์›€์–ด๋ ค์›€ (์„ธ์…˜ ๊ณต์œ  ํ•„์š”)๋งค์šฐ ์‰ฌ์›€ (Stateless)
์‚ฌ์šฉ ํ™˜๊ฒฝ๊ฐ„๋‹จํ•œ ์ƒํƒœ ์œ ์ง€ (์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ)์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜SPA/๋ชจ๋ฐ”์ผ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค (๊ฐ€์žฅ ์„ ํ˜ธ)

๐Ÿ”‘ ๊ฐ€์žฅ ๋”ฅํ•œ ์ฐจ์ด์ : ์ƒํƒœ(State)์™€ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด

๊ฐ€์žฅ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋Š” ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๋А๋ƒ(Stateful) ์•„๋‹ˆ๋ฉด ๊ธฐ์–ตํ•˜์ง€ ์•Š๋А๋ƒ(Stateless)์— ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ธ์…˜: ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ(์„ธ์…˜ ๋ฐ์ดํ„ฐ)๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ Stateful์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ์ง‘์ค‘๋˜์ง€๋งŒ ๋ณด์•ˆ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  • ์ฟ ํ‚ค & ํ† ํฐ: ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด์˜จ ์ •๋ณด(์ฟ ํ‚ค ์ž์ฒด ๋˜๋Š” ํ† ํฐ)๋งŒ์œผ๋กœ ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ Stateless์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ๋‚ฎ๊ณ  ํ™•์žฅ์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ JWT๋Š” ํ† ํฐ ์ž์ฒด์— ๊ฒ€์ฆ ์ •๋ณด๊ฐ€ ์žˆ์–ด ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์ด ๊ทน๋„๋กœ ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.
infodori1234

Recent Posts

๐Ÿ–ฅ NetBIOS over TCP IP NBT ์™„์ „ ๊ฐ€์ด๋“œ

๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๋ค„๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค์€ ๋งˆ์ฃผ์น˜๋Š” ์ต์ˆ™ํ•œ ๋‹จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ NetBIOS์™€ NBT์ž…๋‹ˆ๋‹ค.…

2๊ฐœ์›” ago

๐Ÿ  JSON Schema: ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์˜ ํ‘œ์ค€ ์„ค๊ณ„๋„ ๐Ÿ–ฅ

์•ˆ๋…•ํ•˜์„ธ์š”! ํ˜„๋Œ€ ์›น ๊ฐœ๋ฐœ์—์„œ ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ํ•ต์‹ฌ์ธ JSON(JavaScript Object Notation)์„ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ,…

2๊ฐœ์›” ago

๐Ÿ  ECMAScript 3 ํ˜ธํ™˜์„ฑ ์™„์ „ ์ •๋ฆฌ ๊ฐ€์ด๋“œ

โŒ ECMAScript 3(E3)๋ž€ ๋ฌด์—‡์ผ๊นŒ ECMAScript 3๋Š” 1999๋…„์— ๊ณต์‹ํ™”๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€์ด๋‹ค. ์ง€๊ธˆ ๋ณด๋ฉด ์˜ค๋ž˜๋œ ๊ธฐ์ˆ  ๊ฐ™์ง€๋งŒ,…

2๊ฐœ์›” ago

๐Ÿ–ฅ CoffeeScript ์™„์ „ ๊ฐ€์ด๋“œ

CoffeeScript๋Š” ํ•œ๋•Œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์—์„œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ์—ˆ๋˜ ์–ธ์–ด์˜€๊ณ , ์ง€๊ธˆ๋„ ํŠน์ • ํ”„๋กœ์ ํŠธ๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ, ๊ฐ„๊ฒฐํ•œ…

2๊ฐœ์›” ago

๐Ÿ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ: ๐Ÿ–ฅ ๋‚ญ๋น„๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ๊ธฐ์–ต๋ ฅ โŒ

ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋Š” ์—ฌ์ „ํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ €ํ•˜์™€ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋Š” ์ฃผ์š” ์›์ธ ์ค‘…

2๊ฐœ์›” ago

๐Ÿ–ฅ๏ธ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • (CRP) : ์›นํŽ˜์ด์ง€๊ฐ€ ๋ˆˆ์•ž์— ๋‚˜ํƒ€๋‚˜๊ธฐ๊นŒ์ง€์˜ ๋งˆ๋ฒ•

(Critical Rendering Path, ํ•ต์‹ฌ ๋ Œ๋”๋ง ๊ฒฝ๋กœ ์™„๋ฒฝ ์ดํ•ด) ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„,…

2๊ฐœ์›” ago