IT

๐Ÿ  STOMP ์™„์ „ ์ดํ•ด ๊ฐ€์ด๋“œ

๐Ÿ–ฅ โ€œ์›น์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ํ”„๋กœํ† ์ฝœโ€ โ€” STOMP๋ฅผ ๊นŠ๊ฒŒ ๋“ค์—ฌ๋‹ค๋ณด์ž


๐Ÿ STOMP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

STOMP(Simple Text Oriented Messaging Protocol)๋Š”
๐Ÿ–ฅ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ๋กœ,
์›น๊ณผ ์„œ๋ฒ„ ๊ฐ„์— ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ์›น์†Œ์ผ“(WebSocket)์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ
๐Ÿ  โ€œ์ฑ„ํŒ…, ์•Œ๋ฆผ, ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œโ€
๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด,

๐Ÿ“Œ WebSocket์ด๋ผ๋Š” ์ž๋™์ฐจ์—
๐Ÿ“Œ STOMP๋ผ๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜์„ ์–น์–ด์„œ
โœ” ๋ฉ”์‹œ์ง€๋ฅผ ์ •ํ•ด์ง„ ๊ทœ์น™๋Œ€๋กœ
โœ” ๋ชฉ์ ์ง€(ํ† ํ”ฝ/ํ)๋กœ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ

๋ผ๊ณ  ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.


๐Ÿงฑ STOMP๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

WebSocket์€ ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์— ์ตœ์ ํ™”๋œ ๊ธฐ์ˆ ์ด์ง€๋งŒ
โŒ ๋ฉ”์‹œ์ง€ ํฌ๋งท ๊ทœ์น™์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ฐ€ ์–ด๋–ค ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„์ง€, ์–ด๋–ค ์ฑ„๋„๋กœ ๋ณด๋‚ผ์ง€ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํƒ„์ƒํ•œ ๊ฒƒ์ด STOMP.

STOMP๋Š” ๋‹ค์Œ์„ ํ‘œ์ค€ํ™”ํ•ฉ๋‹ˆ๋‹ค:

๐Ÿ  ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ
๐Ÿ–ฅ ๋ชฉ์ ์ง€ ์ฃผ์†Œ
๐Ÿ  ๋ฉ”์‹œ์ง€ ํƒ€์ž…
๐Ÿ–ฅ ๊ตฌ๋…/ํ•ด์ œ ๊ทœ์น™
๐Ÿ  ์—๋Ÿฌ ์ฒ˜๋ฆฌ

์ฆ‰, WebSocket์„
โœ” ๋” ์•ˆ์ „ํ•˜๊ฒŒ
โœ” ๋” ๊ตฌ์กฐ์ ์œผ๋กœ
โœ” ๋” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ
์‚ฌ์šฉํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๊ณ„์ธต์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿงฉ STOMP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

STOMP๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ผ์„œ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ฝ์–ด๋„ ์ดํ•ด๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

SEND
destination:/topic/chat
content-type:text/plain

์•ˆ๋…•ํ•˜์„ธ์š”

STOMP์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ  1. Command

๋ฉ”์‹œ์ง€์˜ โ€˜์˜๋„โ€™๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฌธ์ž์—ด
์˜ˆ: CONNECT, SEND, SUBSCRIBE, MESSAGE

๐Ÿ  2. Header

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
์˜ˆ: destination, content-type, id ๋“ฑ

๐Ÿ  3. Body

์‹ค์ œ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ
ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ โ†’ ์ฝ๊ธฐ ์‰ฝ๊ณ  ๋””๋ฒ„๊น…์ด ์‰ฌ์›€


๐Ÿ”ง ์ฃผ์š” Command ์„ค๋ช…

์•„๋ž˜๋Š” STOMP์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค:

Command์„ค๋ช…
CONNECT์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ์‹œ์ž‘
DISCONNECT์—ฐ๊ฒฐ ์ข…๋ฃŒ
SEND๋ฉ”์‹œ์ง€ ์ „์†ก
SUBSCRIBEํŠน์ • ์ฑ„๋„ ๊ตฌ๋…
UNSUBSCRIBE๊ตฌ๋… ํ•ด์ œ
MESSAGE์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€ ํƒ€์ž…
ERROR์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

TCP/WS ์œ„์—์„œ ์ด๋Ÿฐ ๋ช…๋ น์„ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.


๐ŸŒ STOMP๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋ ๊นŒ?

STOMP๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์— ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค:

๐Ÿ  ์ฑ„ํŒ… ์‹œ์Šคํ…œ
๐Ÿ–ฅ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ(Notification)
๐Ÿ  ์ฃผ์‹/ํ™˜์œจ ๋“ฑ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ
๐Ÿ–ฅ IoT ์„ผ์„œ ์ •๋ณด ๋ชจ๋‹ˆํ„ฐ๋ง
๐Ÿ  ๊ฒŒ์ž„ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ์ •๋ณด ์ „์†ก
๐Ÿ–ฅ ์‹ค์‹œ๊ฐ„ ํ”„๋กœ์ ํŠธ ํ˜‘์—…

ํŠนํžˆ โ€œํ† ํ”ฝ ๊ธฐ๋ฐ˜ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธโ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก STOMP์™€ WebSocket์˜ ๊ด€๊ณ„

WebSocket์€ ๋‹จ์ˆœํžˆ
๐Ÿ–ฅ โ€œ์ง€์†์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํŒŒ์ดํ”„โ€
์—ญํ• ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค:

โŒ ๋ˆ„๊ฐ€ ๋ˆ„๊ตด ๊ตฌ๋…ํ•˜๋Š”์ง€
โŒ ๋ฉ”์‹œ์ง€๋Š” ์–ด๋–ค ์ฑ„๋„๋กœ ๋ณด๋‚ด๋Š”์ง€
โŒ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน๋ณ„ ์ „์†ก์€ ์–ด๋–ป๊ฒŒ ํ• ์ง€
โŒ ์—๋Ÿฌ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€

WebSocket๋งŒ์œผ๋กœ๋Š” ๋ชจ๋“  ๋กœ์ง์„ ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ณ  ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ STOMP๋Š” ์ด ์œ„์—์„œ

โœ” ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ…
โœ” ๋ชฉ์ ์ง€ ์ฃผ์†Œ
โœ” ๊ตฌ๋… ๊ด€๋ฆฌ
โœ” ํ—ค๋” ๊ธฐ๋ฐ˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
โœ” ์—๋Ÿฌ ์ฒ˜๋ฆฌ

๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” โ€˜๋ฉ”์‹œ์ง• ๊ทœ์•ฝ ๋ ˆ์ด์–ดโ€™๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿข STOMP๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋ฒ„

2025๋…„ ํ˜„์žฌ STOMP๋Š” ๋‹ค์–‘ํ•œ ์„œ๋ฒ„์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

๐Ÿ  RabbitMQ
๐Ÿ–ฅ ActiveMQ
๐Ÿ  Apollo
๐Ÿ–ฅ Spring WebSocket(Spring Boot์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ)
๐Ÿ  Kaazing WebSocket Gateway
๐Ÿ–ฅ Netty ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง• ์„œ๋ฒ„

ํŠนํžˆ Spring Boot๋Š” STOMP๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›ํ•ด์„œ
๊ตญ๋‚ด ๊ธฐ์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.


๐Ÿ›  STOMP ๋ฉ”์‹œ์ง€ ๋™์ž‘ ํ๋ฆ„

์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์„ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๋Š” WebSocket์œผ๋กœ ์„œ๋ฒ„์— CONNECT
  2. CONNECT๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด SUBSCRIBE๋กœ ์ฑ„๋„ ๊ตฌ๋…
  3. ์‚ฌ์šฉ์ž A๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ SEND๋กœ ์ „์†ก
  4. ์„œ๋ฒ„๋Š” destination:/topic/chat ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ผ์šฐํŒ…
  5. SUBSCRIBEํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ MESSAGE๋ฅผ ์ˆ˜์‹ 
  6. ์ข…๋ฃŒ ์‹œ DISCONNECT

์œ„ ํ๋ฆ„์ด ๊ฑฐ์˜ ๋ชจ๋“  ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿงฑ STOMP์˜ ์žฅ์ 

๐Ÿ  ๋ฉ”์‹œ์ง• ๊ทœ์น™์ด ๋ช…ํ™•
๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์•ˆ์ •์ 

๐Ÿ–ฅ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ผ ๋””๋ฒ„๊น… ์‰ฌ์›€
๋ฐ”๋กœ ๋ˆˆ์œผ๋กœ ๋ณด๋ฉด ๋จ

๐Ÿ  ๋ธŒ๋กœ์ปค ๊ธฐ๋ฐ˜ ํ™•์žฅ์„ฑ
RabbitMQ์™€ ํ•จ๊ป˜ ์“ฐ๋ฉด ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋„ ๊ฐ€๋Šฅ

๐Ÿ–ฅ ๊ตฌ๋…/ํ•ด์ œ ๊ธฐ๋Šฅ ํ‘œ์ค€ํ™”
์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ ๋งค์šฐ ์‰ฌ์›Œ์ง

๐Ÿ  WebSocket๋ณด๋‹ค ๊ตฌ์กฐ์ ์ธ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ


โŒ STOMP์˜ ๋‹จ์ 

โŒ ์„ฑ๋Šฅ์€ ์ด์ง„ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ๋ณด๋‹ค ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ
โŒ WebSocket๋ณด๋‹ค ์•ฝ๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€
โŒ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ผ ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”์‹œ์ง€ ๋น„ํšจ์œจ
โŒ ๋ธŒ๋กœ์ปค ์„ค์ •์ด ์ดˆ๋ณด์ž์—๊ฒŒ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ

๊ทธ๋ž˜๋„ ๋Œ€๋ถ€๋ถ„์˜ ์›น ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์—์„œ๋Š”
โ€œํ™•์žฅ์„ฑ๊ณผ ์‹ค์šฉ์„ฑโ€ ๋•๋ถ„์— STOMP๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“ STOMP ๋ฉ”์‹œ์ง€ ์˜ˆ์ œ

1. ๊ตฌ๋… ์š”์ฒญ

SUBSCRIBE
id:sub-1
destination:/topic/board

2. ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ

SEND
destination:/topic/board
content-type:text/plain

์˜ค๋Š˜์€ ์ข‹์€ ๋‚ ์ž…๋‹ˆ๋‹ค

3. ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€

MESSAGE
subscription:sub-1
message-id:007
destination:/topic/board

์˜ค๋Š˜์€ ์ข‹์€ ๋‚ ์ž…๋‹ˆ๋‹ค

๐Ÿ”ฎ 2025๋…„ ์ดํ›„ STOMP๋Š” ๊ณ„์† ์‚ฌ์šฉ๋ ๊นŒ?

๋‹ต์€ ์˜ˆ, ๊ณ„์† ์‚ฌ์šฉ๋จ์ž…๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด,

๐Ÿ  WebSocket์€ ๊ณ„์† ์“ฐ์ธ๋‹ค
๐Ÿ–ฅ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค๋Š” ๋Š˜์–ด๋‚œ๋‹ค
๐Ÿ  ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๊ทœ์น™์ด ๋‹จ์ˆœํ•ด ์œ ์ง€๋ณด์ˆ˜ ์ข‹๋‹ค
๐Ÿ–ฅ Spring Boot์—์„œ ๊ณต์‹์ ์œผ๋กœ ๋ฐ€์–ด์คŒ
๐Ÿ  RabbitMQ ๊ฐ™์€ ๋ธŒ๋กœ์ปค๊ฐ€ ์—ฌ์ „ํžˆ ๊ฐ•์„ธ

๋”ฐ๋ผ์„œ STOMP๋Š” ์•ž์œผ๋กœ๋„
โ€œ์›น ํ™˜๊ฒฝ์—์„œ ์‹ค์‹œ๊ฐ„ ๋ฉ”์‹œ์ง•์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•โ€์œผ๋กœ ๋‚จ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.


๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ: STOMP๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ 

2025๋…„ ๊ธฐ์ค€ STOMP๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ–ฅ ์ฑ„ํŒ… ์„œ๋น„์Šค ๊ฐœ๋ฐœ
๐Ÿ  ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌ์ถ•
๐Ÿ–ฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ ์ œ์ž‘
๐Ÿ  WebSocket ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ํ™•์žฅ
๐Ÿ–ฅ RabbitMQ์™€ ์—ฐ๋™ํ•œ ๋Œ€๊ทœ๋ชจ ๋ฉ”์‹œ์ง• ๊ตฌ์ถ•

ํŠนํžˆ Spring ํ™˜๊ฒฝ์—์„œ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด
STOMP๋Š” ์‚ฌ์‹ค์ƒ ํ•„์ˆ˜ ์ง€์‹์ž…๋‹ˆ๋‹ค.

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