๐Web
"Web" ์นดํ ๊ณ ๋ฆฌ์ ๊ธ 13๊ฐ
ํ๋ก์์ ๋ฆฌ๋ฒ์ค ํ๋ก์ โ ๋ฐฉํฅ์ด ๋ค์งํ๋ฉด ๋ญ๊ฐ ๋ฌ๋ผ์ง๋
ํฐ๋์ ๋ง๋ค๋ค๊ฐ ๊นจ๋ฌ์๋ค Custom Tunnelโฆ
AI๊ฐ '์ด ๋ฒํผ ๊ณ ์ณ์ค'๋ฅผ ์์๋ฃ๊ฒ ํ๊ธฐ โ ์ฝ๋ ๋ก์ผ์ดํฐ๋ฅผ MCP๋ก ์ด๋ค
react-code-locator ์๋ฆฌ์ฆ์ ๋ง์ง๋ง ๊ธ. ์ง๊ธ๊น์ง๋ ์ฌ๋์ด ํ๋ฉด์์ ์ฐํด๋ฆญํด ์์ค๋ก ์ ํํ๋ ์ด์ผ๊ธฐ์๋ค. ๊ทธ๋ฐ๋ฐ ์์ฆ์ ์ฝ๋๋ฅผ ๊ณ ์น๋ ์ฃผ์ฒด๊ฐ ์ฌ๋๋ง์ด ์๋๋ค. AIโฆ
ngrok์ ์ง์ ๋ง๋ค์๋ค โ ๋ก์ปฌ ์๋ฒ๋ฅผ ๊ณต๊ฐ URL๋ก ์ฌ๋ VSCode ํ์ฅ
"์ง๊ธ ๋ก์ปฌ์์ ๋๋ ๊ฑฐ, ํฐ์ผ๋ก ์ข ๋ณผ ์ ์์๊น?" ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์์ฃผ ๊ฒช๋๋ค. ๋ก์ปฌ(localhost:300โฆ
ํด๋ฆญ์ ํต๊ณผ์ํค๊ณ , ๊ธ์จ์์ ๋ฐฐ๊ฒฝ์ ๋ง์ถ๊ธฐ โ ์ค๋ฒ๋ ์ด ์์ ฏ์ ๋ ๊ฐ์ง ํธ๋ฆญ
์์ธ ์์ ฏ ํ์ฅ์ "์๋ฌด ์นํ์ด์ง ์์" ๋ ์์ด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋จ์ ํ์ด์ง ์์ ๋ญ ๋ฎ์ผ๋ฉด ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๊ธด๋ค. (1) ์์ ฏ์ด ์๋ ํ์ด์ง์ ํด๋ฆญ์ ๊ฐ๋ก๋ง๊ณ , (โฆ
์ง์ง API๋ฅผ ๊ทธ๋ง ๋๋ฆฌ์ โ MSW๋ก ๋คํธ์ํฌ๋ฅผ ๊ฐ๋ก์ฑ ๊ฐ๋ฐํ๊ธฐ
YouTube Playlist Generator๋ฅผ ๋ง๋ค๋ฉฐ ์ ์ผ ํฌ๊ฒ ๋ฐ์ธ ๊ฑด API ํ ๋น๋(quota) ์ด์๋ค. YouTube Data API๋ ๊ฒ์ ํ ๋ฒ์ด 100 unitsโฆ
์ด๋ ค์๋๋ฐ ์ฃฝ์ด์๋ค โ Manifest V3 Service Worker์ ์ข๋น WebSocket ๋ค๋ฃจ๊ธฐ
์ค์๊ฐ ์์ธ ํฌ๋กฌ ํ์ฅ์ ๋ง๋ค๋ฉด์ ๊ฐ์ฅ ์ค๋ ์จ๋ฆํ ๊ฑด "์ค์๊ฐ ์ฐ๊ฒฐ์ด ์๊พธ ์กฐ์ฉํ ์ฃฝ๋" ๋ฌธ์ ์๋ค. Manifest V3(MVโฆ
SPA ์๋ก๊ณ ์นจ์๋ ํฐ๋์ด ์ ํ๋ฆฌ๊ฒ โ URLยท์ฟ ํคยท๋ฆฌ๋ค์ด๋ ํธ๋ก ์ธ์ ์ถ์ ํ๊ธฐ
ํฐ๋์์ ์๊ทผํ ๊ณจ์น ์ํ ๋ ๋ฌธ์ . ๊ณต๊ฐ URL์ https://server/abc12345/page ์ฒ๋ผ ์์ ํฐ๋ ID(abc12345) ๊ฐ ๋ถ๋๋ค. ์๋ฒ๋ ์ด IDโฆ
์ด๋ ์นํ์ด์ง ์์๋ ์ค์๊ฐ ์์ธ๋ฅผ ๋์ฐ๊ธฐ โ ํฌ๋กฌ ํ์ฅ์ ๋ง๋ ์ด์ผ๊ธฐ
โฆ
์ด๋ฏธ์งยทํฐํธ๋ฅผ ํ ์คํธ ์ฑ๋๋ก ๋๋ฅด๊ธฐ โ ๋ฐ์ด๋๋ฆฌ๋ฅผ WebSocket์ผ๋ก ํฐ๋๋งํ๊ธฐ
ํฐ๋์ ์ฒ์ ๋ง๋ค์ด ํ ์คํธ ํ์ด์ง๋ฅผ ๋์ ์ ๋ ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฏธ์ง๊ฐ ๊นจ์ง๊ณ , ํฐํธ๊ฐ ์ ๋์ค๊ณ , CSSโฆ
์ฝ๋ ์์ ์์ด ์๊ฒฉ ๋ธ๋ผ์ฐ์ ์ ์ฝ์ ๋ก๊ทธ ๊ฐ์ ธ์ค๊ธฐ โ HTML ์ฃผ์ + console ์ค๋ฒ๋ผ์ด๋
โฆ
ํ ๋ฒ ์ง์ ๋ฒ๋ค๋ฌ 5๊ฐ ์ง์ํ๊ธฐ โ unplugin์ผ๋ก ๋ง๋ ์ ๋๋ฒ์ค ํ๋ฌ๊ทธ์ธ
react-code-locator๋ฅผ ๋ง๋ค ๋ ํ์ค์ ์ธ ๊ณ ๋ฏผ์ด ํ๋ ์์๋ค. ์์ฆ React ํ๋ก์ ํธ์ ๋ฒ๋ค๋ฌ๋ ์ ๊ฐ๊ฐ์ด๋ค. Vite, Next.js(Webpack), Rollupโฆ
์์ ฏ 10๊ฐ์์ ํ์ด์ง๊ฐ ๋ฒ๋ฒ ์๋ค โ ๊ฐ์ reflow๋ฅผ ์ ํด ์๊ฐ์ผ๋ก ๋ฐ์ด๋ด 95% ๊ฐ์ ํ ์ด์ผ๊ธฐ
โฆ
๋จ๋ฐฉํฅ WebSocket์ ์๋ฐฉํฅ ์์ฒญ/์๋ต์ผ๋ก โ UUID์ Map์ผ๋ก ๋์ ์์ฒญ ๋งค์นญํ๊ธฐ
๋ก์ปฌ ์๋ฒ๋ฅผ ๊ณต๊ฐ URL๋ก ์ฌ๋ ํฐ๋์ ์ฌ์ฅ์ "๋ฐ๊นฅ์์ ์จ HTTP ์์ฒญ์, WebSocketโฆ