โจ WebRTC๋ ๋ญ๊น?์ค์๊ฐ ํต์ ์ ์์ด ์์ฃผ ์ฌ๋ฐ๋ ๊ธฐ์ ์ด ์์ต๋๋ค. ๋ฐ๋ก webRTC(Web Real-Time Communication)์ธ๋ฐ์. 2011๋ , Google์ ๊ฐ๋ฐ์๋ค์ ์ํด์ ํ์ํ ๊ธฐ์ ์ ๋๋ค.WebRTC๋ฅผ ์ฌ์ฉํ๋ ์ ๋ช ํ ์๋น์ค๋ค ์ค Google Meet, Discord, Zoom ๋ฑ ์กด์ฌํฉ๋๋ค. ์ฝ๊ฒ ๋งํด์ "๋ค์ํ ํ๋ซํผ์์ ๊ฐ๋ฅํ ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ๊ธฐ์ "์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.ํ์ ์ฑํ , ์์ฑ ํตํ, ํ์ผ ๊ณต์ ๋ฑ๋ฑ ์ด ๋ชจ๋ ๊ฑธ ๋ณ๋์ ํ๋ก๊ทธ๋จ ์์ด ์น ๋ธ๋ผ์ฐ์ ๋ ๋ฌผ๋ก ์ด๊ณ , ๋ชจ๋ฐ์ผ ์ฑ, ๋ฐ์คํฌํ ์ฑ์์๋ ์ฌ์ฉํ ์ ์๋ ์คํ์์ค ํ๋ก์ ํธ์ด๋ฉฐ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ๋์ฑ ์ ๊ธฐํ ์ ์ ์๋ฒ ์์ด P2P(Peer To Peer)๋ก ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค๋ ์ ์ ๋๋ค.(P2..
๐ ๋ค์ด๊ฐ๋ฉฐ์ต๊ทผ ํ์ฌ์์ ๋ด๋นํ๋ ์๋น์ค์ ๋ํด์ CRA์์ Vite๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด์ ์ฝ๊ฐ์ ์ฝ๋ ๊ฐ์ ๊น์ง ์งํ์ ํ๋ ๊ฒฝํ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์์ ํธ์ด ์๋์๊ธฐ ๋๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด์ webpack์ ์์กดํ๊ณ ์๋ ๋ฑ์ ์ฌ์ด๋์ดํํธ๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์์ ์ ์ผ ๊ฑฑ์ ์ ๋ง์ด ํ๋๋ฐ์. ์ด๋ฒ ๊ธ์์๋ ํฌ๊ฒ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋์ง, CRA์ Vite๋ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์ด๋ป๊ฒ ์งํํ๋์ง, ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ์์๋์ง ๊ธฐ๋กํ๋ ค ํฉ๋๋ค.โ๏ธ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์์ฑํ์ฌ ๋ด๋นํ ์๋น์ค๋ webpack ๊ธฐ๋ฐ์ CRA๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ, ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฐ๋ฐ ์๋ฒ ๊ตฌ๋์๊ฐ์ด์์ต๋๋ค.๊ตฌ๋๋๋ ์๊ฐ๊น์ง ํ๊ท ์ฝ 20์ด๊ฐ ์์๋๊ณ ์ต๋ ์ฝ 30์ด๊น์ง ์์๋๋ ์ํฉ์ด์์ต๋๋ค. ๋ ๋ฒ..
๐ ๋ค์ด๊ฐ๋ฉฐ2020๋ ์ด๋ถํฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ผ๋ ์ง์ ์ ์๊ฒ ๋์ด ์ค์ค๋ก ์ค๋นํ๋ฉฐ ๋ค๋ฆ๊ฒ ๋ํ๊ต๋ฅผ ์ ํํ์ฌ ์ฌํด 2์ ํ๊ต๋ฅผ ์กธ์ ํ๊ณ , 4์์ ์์ํฌํธ ํ์ฌ์ ์ ์ฌ๋ฅผ ํ๊ฒ ๋์๋ค. ๋ณธ๊ฒฉ์ ์ธ ์ทจ์ ์ค๋น๋ ์๋ 11์ ์ค์๋ถํฐ ์์ํ์ผ๋, ์๊ฐ๋ณด๋ค ์ทจ์ ์์ฅ์ ์ด๋ ต๋ค๋ ๊ฒ์ ์ฒด๊ฐํ์๋ค. ์ ๋ง ์ผ์ด๋ถ์ด์์๋ค. ์ค์๊ฐ ํต์ ๊ธฐ์ ์ ๊ฐ์ ์ด ์๊ณ ์๊ฒฉ ์ง์ ๋ฐ ์ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ์ ๋ง๋ค์ด๊ฐ๋ ์์ํฌํธ.์ด์ ์ ํ ๊ธฐ์ ์ ์ฑ์ฉ ๊ณผ์ ๋ฅผ ์งํํ๋ฉด์ ์ค์๊ฐ ํต์ ์ ๋ํ ์ฌ๋ฏธ๋ฅผ ํ์คํ ๋๊ผ๊ณ ์ด ๋ถ๋ถ์ผ๋ก ๊ฐ์ ์ ์๊ณ ์ถ๋ค๋ ๋ชฉํ๊ฐ ์๊ฒผ๋ค.์ด๋ฐ ๋ชฉํ ์์์ ์์ํฌํธ์ ํฉ๋ฅํ๊ฒ ๋์ด ์๊ด์ค๋ฝ๊ฒ ์๊ฐํ๋ค. ์ด ํ์ฌ์์ ๊ทธ๋์์ ๊ฒฝํ์ ๋์๋ณด๊ณ ๋ฐฐ์ด์ ๊ณผ ์์ผ๋ก์ ๊ณํ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.์ต๊ณ ์ ๋ณต์ง๋ ๋๋ฃ๋ค์ ์ฌ ์ฒซ๋ ๋ถํฐ ๋๋ฃ๋ถ๋ค..
๐ ๋ค์ด๊ฐ๋ฉฐํ์ฌ React 19 ๋ฒ์ ์ ์ ๋ฐ์ดํธ์ ๋ํด์ ๋ง์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ๋ฌ ๋ณ๊ฒฝ์ฌํญ๋ค์ด ๋ง์ง๋ง ์ด๋ฒ ํฌ์คํ ์์๋ ํต์ฌ ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ ๋ถ๋ถ์ ํฌ์คํ ํ๋ ค ํฉ๋๋ค. ์ฆ, ๊ธฐ์กด์๋ ํ์ํ๊ณ ์ฌ์ฉํด์ผ ํ์ง๋ง 19 ๋ฒ์ ์ด ๋์ ๋๋ฉด์ ์ฌ์ฉํ์ง ์์๋ ๋๋ ๊ฒ๋ค๊ณผ ์ถ๊ฐ๋ก ๋ช ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ๋ค์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค. ํ์ฌ 2024๋ 5์ 15์ผ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์กํธ 19๋ฒ์ ์ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด ์นด๋๋ฆฌ ๋ฒ์ ์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.npm i react@canary react-dom@canaryoryarn add react@canary react-dom@canaryReact Compoiler19 ๋ฒ์ ์ ๊ฐ์ฅ ํฐ ๋ถ๋ถ์ ๋ฆฌ์กํธ ์ปดํ์ผ๋ฌ์ ๋๋ค. ๋ฆฌ์กํธ ์ปดํ์ผ๋ฌ๋ ๋ฆฌ์กํธ ์ฝ๋๋ฅผ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด๋ฒ 2024๋ 04์ 03์ผ ~ 2024๋ 04์ 08์ผ, ์ด 6์ผ๊ฐ ์งํํ๋ ํ ์ค์ ์คํ๋ฆฐํธ 17๊ธฐ์ 10์กฐ ์ฝ๋ํ์์ ํ๋ก ํธ์๋ ํฌ์ง์ ์ผ๋ก ์ฐธ์ฌํ์ต๋๋ค. ํ ์ค์ ์คํ๋ฆฐํธ๋? ํ ์ค์ ์คํ๋ฆฐํธ๋ "๊ตฌ๊ธ ์คํ๋ฆฐํธ๋ ์งง์ ์๊ฐ ๋ด์ ์์ด๋์ด ๊ฒ์ฆ์ ํ๊ธฐ ์ํ ๊ทธ๋ด์ธํ MVP๋ฅผ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด๋ด๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. "6์ผ๊ฐ ์ข์ ์ฌ๋๋ค๊ณผ ์ ๋ง๋ค์ด์ง ํ์ ํ๋ก์ธ์ค๋ฅผ ํจ๊ป ๊ฒฝํํ๋ค" ์ฆ, ๊ตฌ๊ธ ์คํ๋ฆฐํธ๋ฅผ ๋ชจํฐ๋ธ๋ก ํ ํ๋ก์ธ์ค์ ๋๋ค. ์ ์ฐธ๊ฐํ๊ฒ ๋์์๊น? ์ฌ์ค ์ด์ ๋ถํฐ ํ ์ค์ ์คํ๋ฆฐํธ ๋ชจ์ง ๊ณต๊ณ ๊ฐ ๋ณด์ผ ๋๋ง๋ค ์ฐธ์ฌํ๊ณ ์ถ์ ๋ง์์ด ๋ฌด์ฒ ์ปธ์ต๋๋ค. ํ์ง๋ง ํ๊ต ์ํ ๊ธฐ๊ฐ๊ณผ ๊ฒน์น๋ ๋ฑ ํญ์ ์งํํ ์ ์๋ ํ๊ฒฝ์ด ๋์ง ๋ชปํ์ต๋๋ค. ํ์ง๋ง ์ด๋ฒ์๋ ๋ง์นจ ์ ์ ํ ๋ ๊ณต๊ณ ๊ฐ ์ฌ๋ผ์์ ๋ฐ๋ก ์ฐธ๊ฐ ์ ์ฒญ์ ํ๊ฒ ..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด๋ฒ ํฌ์คํ ์์๋ React์์ ์ฌ์ฉ๋๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด์ ๊ฐ๊ฐ์ ํน์ง๊ณผ ๊ฐ์ธ์ ์ธ ๊ฒฌํด๊ฐ ๋ค์ด๊ฐ ์์ต๋๋ค. ํ์ฌ ํฌ์คํ ์์ ๋ค๋ฃฐ ์ฃผ์ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. react-redux & redux-toolkit recoil zustand jotai React์์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์์์ ์ธ๊ธํ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ฏค์ ๋ถ๋ช ์๊ณ ๊ณ์๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค. ์ ์ด๋ฏธ์ง๋ ์ต๊ทผ 1๋ ๊ฐ ๋ค ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ NPM ๋ํฅ์ ๋๋ค. ํ์ฌ ์ถ์ธ๋ก ๋ดค์ ๋ 1์: redux (react-redux & redux-tookit) 2์: zustand 3์: jotai 4์: recoil ์ ์์๋ก ๋ณด์ ๋๋ค. ๊ทธ๋ผ ๊ฐ๋จํ ์ฝ๋ ์์ ์ ํจ๊ป ํน์ง์ ์์๋ณด๊ฒ ์ต๋๋ค. Redux..
๐ ๋ค์ด๊ฐ๋ฉฐ 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..
๐ ๋ค์ด๊ฐ๋ฉฐ ๊ธฐ์กด ํ๋ก์ ํธ์์ Next.js 14๋ฒ์ ์ ์ฑ ๋ผ์ฐํฐ์์ styled-components๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ด์ ์ Next.js 11๋ฒ์ ์์ 14๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋ฉด์ ๋จ์์๋ ๋ถ๋ถ์ด์์ต๋๋ค. ์ฑ ๋ผ์ฐํฐ์์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ๊ธฐ ์์ํ๋ฉด์, ์๋ฒ ์ปดํฌ๋ํธ ํ์ฉ ํด๋ณด๊ณ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ์ต๋๋ค. ๊ทธ๋ผ ๋จผ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๊ณ , ์ vanilla-extract๋ฅผ ์ ํํ๋์ง ๊ฐ๋ตํ ์ค๋ช ํด ๋ณผ๊ฒ์. ๐ ์ฑ ๋ผ์ฐํฐ(app router)์์ styled-components์ ๋ฌธ์ ์ styled-components๋ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, styled-components๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 'use client'๋ฅผ ๋ช ์ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํด..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ ๋ค์ํ ์น ์๋น์ค๋ฅผ ์ ํด๋ณด๋ฉด ๊ฐํธํ SNS ๋ก๊ทธ์ธ์ผ๋ก ์ฝ๊ฒ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฐํธํ SNS ๋ก๊ทธ์ธ์ด ๋ฐ๋ก OAuth2.0 ํ๋กํ ์ฝ์ ํตํด ์งํ๋ฉ๋๋ค. ๊ทธ๋ผ, OAuth๊ฐ ์ด๋ค ๋ฐฐ๊ฒฝ์์ ๋ฑ์ฅํ์๊ณ , ํ์ฌ๋ ์ด๋ป๊ฒ ํ์คํ๋์ด OAuth2.0์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋์ง, ๊ทธ ํ๋ฆ์ ๋ํ ๊ฐ๋ ์ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค. ๐ง OAuth ๋ฑ์ฅ๋ฐฐ๊ฒฝ ์น ์๋น์ค์ ๋ค์์ฑ์ด ์ฆ๊ฐํ๋ฉด์, ์์ ํ๊ฒ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์์ฑ์ด ์๊ฒผ์ต๋๋ค. ์ด๋ก ์ธํด OAuth(Open Authorization)๋ผ๋ ๊ฐ๋ ์ด ํ์ํ๊ฒ ๋์์ต๋๋ค. ์ด๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด ๋ณผ๊ฒ์. ์ฐ๋ฆฌ์ ์๋น์ค๊ฐ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์์ ๊ตฌ๊ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ฌ์ฉ์๊ฐ ๊ตฌ๊ธ์ ๋..