๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
webRTC๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ์ฃผ์š” ๊ฐœ๋…๋“ค ์‰ฝ๊ฒŒ ์„ค๋ช… ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

โœจ WebRTC๋ž€ ๋ญ˜๊นŒ?์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์— ์žˆ์–ด ์•„์ฃผ ์žฌ๋ฐŒ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ webRTC(Web Real-Time Communication)์ธ๋ฐ์š”. 2011๋…„, Google์˜ ๊ฐœ๋ฐœ์ž๋“ค์— ์˜ํ•ด์„œ ํƒ„์ƒํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.WebRTC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ๋ช…ํ•œ ์„œ๋น„์Šค๋“ค ์ค‘ Google Meet, Discord, Zoom ๋“ฑ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ "๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ฐ€๋Šฅํ•œ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ธฐ์ˆ "์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.ํ™”์ƒ ์ฑ„ํŒ…, ์Œ์„ฑ ํ†ตํ™”, ํŒŒ์ผ ๊ณต์œ  ๋“ฑ๋“ฑ ์ด ๋ชจ๋“  ๊ฑธ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ ์—†์ด ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌผ๋ก ์ด๊ณ , ๋ชจ๋ฐ”์ผ ์•ฑ, ๋ฐ์Šคํฌํƒ‘ ์•ฑ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋”์šฑ ์‹ ๊ธฐํ•œ ์ ์€ ์„œ๋ฒ„ ์—†์ด P2P(Peer To Peer)๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.(P2..

article thumbnail
[React] CRA์—์„œ Vite๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณผ์ • ๋ฐ ์ฝ”๋“œ ๊ฐœ์„ 

๐Ÿ“–  ๋“ค์–ด๊ฐ€๋ฉฐ์ตœ๊ทผ ํšŒ์‚ฌ์—์„œ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ CRA์—์„œ Vite๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ•˜๋ฉด์„œ ์•ฝ๊ฐ„์˜ ์ฝ”๋“œ ๊ฐœ์„ ๊นŒ์ง€ ์ง„ํ–‰์„ ํ•˜๋Š” ๊ฒฝํ—˜์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ํŽธ์ด ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ•˜๋ฉด์„œ webpack์— ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๋“ฑ์˜ ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ œ์ผ ๊ฑฑ์ •์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํฌ๊ฒŒ ์™œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ–ˆ๋Š”์ง€, CRA์™€ Vite๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ–ˆ๋Š”์ง€, ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ๊ธฐ๋กํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.โ‰๏ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ํ•„์š”์„ฑํ˜„์žฌ ๋‹ด๋‹นํ•œ ์„œ๋น„์Šค๋Š” webpack ๊ธฐ๋ฐ˜์˜ CRA๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ์ ํŠธ์˜€์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ, ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ตฌ๋™์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.๊ตฌ๋™๋˜๋Š” ์‹œ๊ฐ„๊นŒ์ง€ ํ‰๊ท  ์•ฝ 20์ดˆ๊ฐ€ ์†Œ์š”๋˜๊ณ  ์ตœ๋Œ€ ์•ฝ 30์ดˆ๊นŒ์ง€ ์†Œ์š”๋˜๋Š” ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ..

article thumbnail
์‹ ์ž… ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž 3๊ฐœ์›” ์ˆ˜์Šต ๊ธฐ๊ฐ„ ํšŒ๊ณ 
ํšŒ๊ณ ๋ก 2024. 7. 20. 20:08

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ2020๋…„ ์ดˆ๋ถ€ํ„ฐ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋Š” ์ง์—…์„ ์•Œ๊ฒŒ ๋˜์–ด ์Šค์Šค๋กœ ์ค€๋น„ํ•˜๋ฉฐ ๋’ค๋Šฆ๊ฒŒ ๋Œ€ํ•™๊ต๋ฅผ ์ž…ํ•™ํ•˜์—ฌ ์˜ฌํ•ด 2์›” ํ•™๊ต๋ฅผ ์กธ์—…ํ•˜๊ณ , 4์›”์— ์•Œ์„œํฌํŠธ ํšŒ์‚ฌ์— ์ž…์‚ฌ๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ณธ๊ฒฉ์ ์ธ ์ทจ์—… ์ค€๋น„๋Š” ์ž‘๋…„ 11์›” ์ค‘์ˆœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ์œผ๋‚˜, ์ƒ๊ฐ๋ณด๋‹ค ์ทจ์—…์‹œ์žฅ์€ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์ฒด๊ฐํ–ˆ์—ˆ๋‹ค. ์ •๋ง ์–ผ์–ด๋ถ™์–ด์žˆ์—ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ ์— ๊ฐ•์ ์ด ์žˆ๊ณ  ์›๊ฒฉ ์ง€์› ๋ฐ ์ œ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œํ’ˆ์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์•Œ์„œํฌํŠธ.์ด์ „์— ํ•œ ๊ธฐ์—…์˜ ์ฑ„์šฉ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์— ๋Œ€ํ•œ ์žฌ๋ฏธ๋ฅผ ํ™•์‹คํžˆ ๋Š๊ผˆ๊ณ  ์ด ๋ถ€๋ถ„์œผ๋กœ ๊ฐ•์ ์„ ์Œ“๊ณ  ์‹ถ๋‹ค๋Š” ๋ชฉํ‘œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.์ด๋Ÿฐ ๋ชฉํ‘œ ์†์—์„œ ์•Œ์„œํฌํŠธ์— ํ•ฉ๋ฅ˜ํ•˜๊ฒŒ ๋˜์–ด ์˜๊ด‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค. ์ด ํšŒ์‚ฌ์—์„œ ๊ทธ๋™์•ˆ์˜ ๊ฒฝํ—˜์„ ๋Œ์•„๋ณด๊ณ  ๋ฐฐ์šด์ ๊ณผ ์•ž์œผ๋กœ์˜ ๊ณ„ํš์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.์ตœ๊ณ ์˜ ๋ณต์ง€๋Š” ๋™๋ฃŒ๋‹ค์ž…์‚ฌ ์ฒซ๋‚ ๋ถ€ํ„ฐ ๋™๋ฃŒ๋ถ„๋“ค..

article thumbnail
[React] 19 ๋ฒ„์ „์˜ ํ•ต์‹ฌ ์—…๋ฐ์ดํŠธ ์‚ฌํ•ญ ์‚ดํŽด๋ณด๊ธฐ

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐํ˜„์žฌ React 19 ๋ฒ„์ „์˜ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์ด ๋งŽ์ง€๋งŒ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ•ต์‹ฌ ๋‚ด์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์„ ํฌ์ŠคํŒ…ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ์กด์—๋Š” ํ•„์š”ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์ง€๋งŒ 19 ๋ฒ„์ „์ด ๋„์ž…๋˜๋ฉด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ๋“ค๊ณผ ์ถ”๊ฐ€๋กœ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ 2024๋…„ 5์›” 15์ผ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์•กํŠธ 19๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์นด๋‚˜๋ฆฌ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.npm i react@canary react-dom@canaryoryarn add react@canary react-dom@canaryReact Compoiler19 ๋ฒ„์ „์˜ ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„์€ ๋ฆฌ์•กํŠธ ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ..

article thumbnail
ํ…Œ์˜ค์˜ ์Šคํ”„๋ฆฐํŠธ 17๊ธฐ ํšŒ๊ณ 
ํšŒ๊ณ ๋ก 2024. 4. 11. 18:55

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๋ฒˆ 2024๋…„ 04์›” 03์ผ ~ 2024๋…„ 04์›” 08์ผ, ์ด 6์ผ๊ฐ„ ์ง„ํ–‰ํ•˜๋Š” ํ…Œ์˜ค์˜ ์Šคํ”„๋ฆฐํŠธ 17๊ธฐ์— 10์กฐ ์ฝ˜๋Œ€ํŒ€์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ํฌ์ง€์…˜์œผ๋กœ ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์˜ค์˜ ์Šคํ”„๋ฆฐํŠธ๋ž€? ํ…Œ์˜ค์˜ ์Šคํ”„๋ฆฐํŠธ๋Š” "๊ตฌ๊ธ€ ์Šคํ”„๋ฆฐํŠธ๋Š” ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์•„์ด๋””์–ด ๊ฒ€์ฆ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ทธ๋Ÿด์‹ธํ•œ MVP๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. "6์ผ๊ฐ„ ์ข‹์€ ์‚ฌ๋žŒ๋“ค๊ณผ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ํ˜‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•จ๊ป˜ ๊ฒฝํ—˜ํ•œ๋‹ค" ์ฆ‰, ๊ตฌ๊ธ€ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๋ชจํ‹ฐ๋ธŒ๋กœ ํ•œ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์™œ ์ฐธ๊ฐ€ํ•˜๊ฒŒ ๋˜์—ˆ์„๊นŒ? ์‚ฌ์‹ค ์ด์ „๋ถ€ํ„ฐ ํ…Œ์˜ค์˜ ์Šคํ”„๋ฆฐํŠธ ๋ชจ์ง‘ ๊ณต๊ณ ๊ฐ€ ๋ณด์ผ ๋•Œ๋งˆ๋‹ค ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๋ฌด์ฒ™ ์ปธ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•™๊ต ์‹œํ—˜ ๊ธฐ๊ฐ„๊ณผ ๊ฒน์น˜๋Š” ๋“ฑ ํ•ญ์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๋˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๋งˆ์นจ ์ ์ ˆํ•œ ๋•Œ ๊ณต๊ณ ๊ฐ€ ์˜ฌ๋ผ์™€์„œ ๋ฐ”๋กœ ์ฐธ๊ฐ€ ์‹ ์ฒญ์„ ํ•˜๊ฒŒ ..

article thumbnail
[React] ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ (feat. redux-tookit, recoil, zustand, jotai)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” React์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃฐ ์ฃผ์š” ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. react-redux & redux-toolkit recoil zustand jotai React์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ฏค์€ ๋ถ„๋ช… ์•Œ๊ณ  ๊ณ„์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ด๋ฏธ์ง€๋Š” ์ตœ๊ทผ 1๋…„๊ฐ„ ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ NPM ๋™ํ–ฅ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ถ”์„ธ๋กœ ๋ดค์„ ๋•Œ 1์œ„: redux (react-redux & redux-tookit) 2์œ„: zustand 3์œ„: jotai 4์œ„: recoil ์œ„ ์ˆœ์œ„๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ํŠน์ง•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Redux..

article thumbnail
[Next.js] vanilla-extract๋กœ ๋‹คํฌ๋ชจ๋“œ(dark mode) ๊ตฌํ˜„ํ•˜๊ธฐ (feat.next-themes)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ Next.js 14๋ฒ„์ „ app router ํ”„๋กœ์ ํŠธ์˜ styled-comoponents์—์„œ vanilla-extarct๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ•จ์— ์žˆ์–ด์„œ ๋‹คํฌ๋ชจ๋“œ ๊ธฐ๋Šฅ๋„ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ next-themes๋ฅผ ํ™œ์šฉํ•ด ๋ดค๋Š” ๋ฐ ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ๋งค์šฐ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, app router์—์„œ vanilla-extract๋กœ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด์„œ ์ฐธ๊ณ ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ Next.js app router์—์„œ vanilla-extract + next-themes๋ฅผ ํ™œ์šฉํ•œ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ํ•œ๋ฒˆ ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค. ๐Ÿง next-themes ์†Œ๊ฐœ https://github.com/pacocoursey/next-them..

article thumbnail
[Next.js] styled-components์—์„œ vanilla-extract๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง„ํ–‰ (app router)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ Next.js 14๋ฒ„์ „์˜ ์•ฑ ๋ผ์šฐํ„ฐ์—์„œ styled-components๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— Next.js 11๋ฒ„์ „์—์„œ 14๋ฒ„์ „์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‚จ์•„์žˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฑ ๋ผ์šฐํ„ฐ์—์„œ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ํ™œ์šฉ ํ•ด๋ณด๊ณ ์ž ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋จผ์ € ์™œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ–ˆ๊ณ , ์™œ vanilla-extract๋ฅผ ์„ ํƒํ–ˆ๋Š”์ง€ ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•ด ๋ณผ๊ฒŒ์š”. ๐Ÿ” ์•ฑ ๋ผ์šฐํ„ฐ(app router)์—์„œ styled-components์˜ ๋ฌธ์ œ์  styled-components๋Š” ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, styled-components๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 'use client'๋ฅผ ๋ช…์‹œํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ•์ œ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด..

article thumbnail
[Web] OAuth์˜ ๋“ฑ์žฅ ๋ฐ OAuth 2.0 ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด์š”.

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ตœ๊ทผ ๋‹ค์–‘ํ•œ ์›น ์„œ๋น„์Šค๋ฅผ ์ ‘ํ•ด๋ณด๋ฉด ๊ฐ„ํŽธํ•œ SNS ๋กœ๊ทธ์ธ์œผ๋กœ ์‰ฝ๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฐ„ํŽธํ•œ SNS ๋กœ๊ทธ์ธ์ด ๋ฐ”๋กœ OAuth2.0 ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ, OAuth๊ฐ€ ์–ด๋–ค ๋ฐฐ๊ฒฝ์—์„œ ๋“ฑ์žฅํ•˜์˜€๊ณ , ํ˜„์žฌ๋Š” ์–ด๋–ป๊ฒŒ ํ‘œ์ค€ํ™”๋˜์–ด OAuth2.0์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€, ๊ทธ ํ๋ฆ„์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿง OAuth ๋“ฑ์žฅ๋ฐฐ๊ฒฝ ์›น ์„œ๋น„์Šค์˜ ๋‹ค์–‘์„ฑ์ด ์ฆ๊ฐ€ํ•˜๋ฉด์„œ, ์•ˆ์ „ํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด OAuth(Open Authorization)๋ผ๋Š” ๊ฐœ๋…์ด ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•œ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณผ๊ฒŒ์š”. ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ์ž์˜ ๊ตฌ๊ธ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๊ธ€์— ๋Œ€..