์ ๊ฐ ํ ์ ์๋ ์ด์ผ๊ธฐ๊ฐ ๋ฌด์์ผ๊น ์๊ฐํด๋ณด์๋๋ฐ, 2023๋ ๊ฐ์ “์ค๋์๊ฐ๋ ” ์ด๋ผ๋ ํ๋ก๋ํธ๋ฅผ ๋ฐ์นญ ํด ๋ณธ ๊ฒฝํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฑ ๊ฐ๋ฐ์ ํด๋ณด๋ฉด์ ๋๋ ์น ๊ฐ๋ฐ๊ณผ์ ์ฐจ์ด์ ์ ์ฃผ๋ก ๋ค๋ฃจ๊ณ ๋๋ถ๋ถ์ ์๋น์ค๊ฐ ๋ชจ๋ฐ์ผ ํผ์คํธ๊ฐ ๋ ํ์์ ์์ ์ฑ์ ์น๋ทฐ / ๋ค์ดํฐ๋ธ / ํ์ด๋ธ๋ฆฌ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์์ ์ฅ๋จ์ ์ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค. https://yozm.wishket.com/magazine/detail/1969/ ์ด ๋ธ๋ก๊ทธ์์ ๊ธ์ ๋ณด๊ณ ๋ง์ง๋ง ๋ํ์ ๊ธ์ ํนํด์ ๊ธ์ ์จ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๊ฒ ๋์์ต๋๋ค. "2023๋ 2์ ๊ธฐ์ค ์ ์ธ๊ณ ์น ์ฌ์ดํธ ํธ๋ํฝ์ 60.06% ๊ฐ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค๋ฅผ ํตํด ์ ์ ๋์์ต๋๋ค." ์ฑ ๊ฐ๋ฐ์ ์น ๊ฐ๋ฐ๊ณผ ๋ญ๊ฐ ๋ค๋ฅผ๊น? ํฌ๊ฒ “๋ฐฐํฌ”์ “๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ” ๊ทธ๋ฆฌ๊ณ “UI ๊ณ์ธต๊ตฌ์กฐ” ์ธ๊ฐ์ง ์ธก..
Next.js์์ ๋์์ด ๋์ด ์์ง ์์ `/` path๋ก ์ง์ ํ์ ๋ default `/home` page๋ก redirect ํ๋ ์คํ์ ๊ตฌํํด์ผ ํ๋ค. Redirect ์ ์ฌ์ฉํ๋ ์ํ์ฝ๋ Next.js์์์ redirect ๋ฅผ ๊ตฌํํ๊ธฐ ์ redirect ์์ ์๋ฒ์์ ๋ฐํํ๋ ์ํ์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด์. 300๋ฒ ๋์ ์ํ์ฝ๋๋ ๋ชจ๋ Redirection ์ ์๋ฏธํ๋ฉฐ, 300 ~ 308 ๊น์ง ์๋ค. 301 (Moved Permanently) : ํด๋ผ์ด์ธํธ์ ์์ฒญ ๋ฉ์๋๋ฅผ GET ์ผ๋ก ๋ฐ๊พธ๋ฉฐ, redirect ์ฒ๋ฆฌ๊ฐ ์บ์ฑ๋๋ค. 302 (Found - Moved Temporarily) : ํด๋ผ์ด์ธํธ์ ์์ฒญ ๋ฉ์๋๋ฅผ GET ์ผ๋ก ๋ฐ๊พธ๋ฉฐ, redirect ์ฒ๋ฆฌ๊ฐ ์ผ์์ ์ด๊ณ ์บ์ฑ๋์ง ์๋๋ค. 304 (Not..

๋ฑ ํฌ์๋ฌ๋์์ ์ง์ฐ ์๊ฐ ์์ด ์นํฐํธ ์๋นํ๊ธฐ ๊ธ์ ๋ณด๋ค๊ฐ Glyph๋ผ๋ ๊ฐ๋ ์ด ๋์์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. Glyph(๊ธ๋ผํ)๋? Glyph๋ ๊ธ์์ ์ต์ ํํ์ด๋ฉฐ, ๋ป๊ณผ ์๋ฆฌ๋ฅผ ์ง๋์ง ์์ ๋ํ ๊ธฐํธ์ด๋ค. ์๋ฅผ ๋ค์ด, “๊ฐ” ๋ผ๋ ๊ธ์๊ฐ ์๋ค๋ฉด ์ด ๊ธ์๋ฅผ ์ด๋ป๊ฒ ํํํ ๊ฒ์ธ์ง๊ฐ Glyph์ด๋ค. ํท๊ฐ๋ฆฌ๋ ์ฉ์ด ์ ๋ฆฌ ๊ฐ๋ฐ์ ํ๋ฉด์ ๋ง์ฃผ์น๋ ๊ธ์์ ๋ชจ์๊ณผ ๊ด๋ จ๋ ์ฉ์ด๋ค์๋ Character, Font, Glyph (feat. Unicode)๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์ฐจ์ด๋ฅผ ์ ์ ์๊ฒ ์ ์ํด๋ณด์. ์์ฝํ์๋ฉด, Character๋ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ธ์์ด๊ณ , Glyph๋ ํ๋์ Character์ ๋์๋๋ ํํ์ด๋ค. Glyph๋ค์ด ๋ชจ์ฌ Font๋ฅผ ๋ง๋ ๋ค. ์ถ๊ฐ์ ์ผ๋ก Unicode๋ Character ํ๋ ๋น ๋ถ์ฌ๋๋ c..
์ค๋๋ง์ ์ฐ๋ ๊ธ์ด๋ค. ํ๋ค ๋ ๊ธ์ด ์ ์จ์ง๋ค๊ณ ์ด๋ฒ ๊ธ์ ์ ์ ์จ์ก๋ค. ํ๊ณ ๊ธ์ ์ค๋ซ๋์ ์์ฑํ์ง ๋ชปํด์ ์ค๋๋ง์ ๋์ ์ฌ๋ณด์๋ค. ์ ์ ์๊ฒ ๋ฐ๋นด๋ 2023๋ ์ฌ๋ฆ ์ด๋ฉด์ ์ ๋ฐ๋นด๋ ์ฌ๋ฆ์ด ์๋ ๊ฒ ๊ฐ๊ธด ํ๋ฐ ์ ๊น์ ์ผ์์ ์ฑ๊ธธ ์ฌ์ ์ ๋๋ ์์๋ค. ๋๋ ๋์ฒด๋ก ์ผ์ ๋ฒ๋ ค์ ๋๋ฅผ ๋ฐ์ ์ํฉ์ ๋ฐ์ด๋ถ์ด๋ ์ฌ๋์ธ๋ฐ, ์ด๋ ๊ฒ ํด์ผ ๋ฐ์ ๋ ์๊ณ ๋น์ฅ์ ๊ดด๋กญ์ง๋ง ํ์ธต ๋จ๋จํด์ง๋ ๊ฑธ ๋๊ผ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ์ด๋ฒ ์ฌ๋ฆ์๋ ํนํ๋ ํฌ๊ธฐ์ ๊ฒฌ๋ค ์ฌ์ด์์ ์์ฌ์์ฌํ ์ค๋ฌ๋ฆฌ๊ธฐ๋ฅผ ํ๋ค. ๋๋ฅผ ์ฃฝ์ด์ง ๋ชปํ ์๋ จ์.. ๊ทธ๋ฐ ๋ง์ด ์์ง ์์๊ฐ? ”๋๋ฅผ ์ฃฝ์ด์ง ๋ชปํ ์๋ จ์ ๋๋ฅผ ๊ฐํ๊ฒ ๋ง๋ค ๋ฟ์ด๋ค“. ๋๋ ํฌ๊ธฐํ์ง ์๋ ๋ฅ๋ ฅ์ด ๊ฝค ๋์ ์ฌ๋์ธ ๊ฒ ๊ฐ๋ค. ์ด๋ฆด ์ ์ฌ์ํ ๋ ์๋ง๊ฐ ๋์๊ฒ ”ํฌ์์ด๋ ๊ฒฐ๊ตญ์ ํด๋ด์ ๋ณ๋ก ๊ฑฑ์ ์ด ์๋ผ..

๐ก gRPC์ Rest api์ ์ฐจ์ด์ ์ ์ ๋ฆฌํ๊ณ ์ฅ๋จ์ ์ ํ์ ํ์ฌ ์ํฉ์ ๋ง๊ฒ ์ ์ฉํฉ๋๋ค. ์คํธ๋ ์ค ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์กฐ์ฌํ๋ค๊ฐ ํน์ ํด๋ค๋ง gRPC๋ฅผ ์ง์ํ๊ณ , gRPC๋ฅผ ์ฌ์ฉ ์ค์ธ ์ฝ๋๋ฅผ ์ฐพ์๋ณด๋ ๊ฑฐ์ Go, Kotiin ๊ธฐ๋ฐ ์ฝ๋๋ค ๋ฐ์ ์๊ธธ๋ gRPC์ Rest api์ ์ฐจ์ด์ ์ด ๋ฌด์์ด๊ณ ์ธ์ ๋ฌด์ผ ์ฌ์ฉํด์ผ ํ๋์ง / JS๋ฅผ ํตํด ์์ฃผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๊ฐ ์์ ์ง ๊ถ๊ธํด์ ์กฐ์ฌํด ๋ด ๋๋ค. Rest api๋ ๊ธฐ์กด์ ๋ง์ด ์ฌ์ฉํด๋ณด์ จ์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๋ ์ค๋ช ์์ด ๋์ด๊ฐ๊ฒ ์ต๋๋ค. gRPC๋? grpc๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ ์คํ์์ค ์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC) ์์คํ ์ด๋ฉฐ, ์ ์ก์ ์ํด HTTP/2 ๋ฅผ ์ฌ์ฉํ๊ณ ์ธํฐํ์ด์ค ์ ์ ์ธ์ด๋ก ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. client - server si..
๐ค ๊ธฐ์กด์ ์๊ณ ์๋ Duck typing๊ณผ Typescript ๊ตฌ์กฐ์ ํ์ดํ์ ์ฐจ์ด๋ฅผ ์ธ์งํ๊ณ ํ๊ณ๋ฅผ ํ์ ํฉ๋๋ค. Duck typing์ด๋ “๋ง์ฝ ์ด๋ค ์๊ฐ ์ค๋ฆฌ์ฒ๋ผ ๊ฑท๊ณ , ํค์์น๊ณ , ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฌ๋ ์๋ฆฌ๋ฅผ ๋ธ๋ค๋ฉด ๋๋ ๊ทธ ์๋ฅผ ์ค๋ฆฌ๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ด๋ค.” ๋ผ๋ ๋ง์์ ํ์ํ์์ผ๋ฉฐ, ๊ฐ์ฒด์ ํ์ ์ ๋ฏธ๋ฆฌ ์ ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฐํ์ ์ ๊ฐ์ฒด์ ํ์์ ๊ธฐ๋ฐํ์ฌ ํ์ ์์ฉ์ฑ์ ์ฒดํฌํ๋๋ก ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ๋๋ค. type Person = { name: string, age: number, }; const personA = { name: 'ํฌ์', age: 27, }; const duckA = { name: '์ค๋ฆฌ', age: 2, }; const person: Person = duckA; // it's okay ํ์ ..

๐ก 2022/11/27 ๊ธฐ์ค์ผ๋ก ์์ฑํ ๊ธ์ด๋ฉฐ, ์ดํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ดํธ๋ก ํน์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ ์ ์์ต๋๋ค. Virtualized List ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋น๊ต npm trends๋ผ๋ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ์ฌ, 4๊ฐ์ Virtualized List ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค. react-window์ react-virtualized์ ๊ด๊ณ ๋๋ค ๊ฐ์ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ react-virtualized์์ ํ์ํ ๋ถ๋ถ๋ง ๋นผ๋ด์ด ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ react-window์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ๋ฉด ๋ฉ๋๋ค. ์ ์ ์จ๋ก ๋ฐ์ง๋ฉด ํ์ฌ ๊ธฐ์ค์ผ๋ก @tanstack/virtual-core ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ early stage ์ธ ๋ฏํฉ๋๋ค. react-virtualized์ react-window๋ ์๋ ์ ๋ช ..

์ด๋ฒ ์ฑํฐ์์๋ ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค์์ ํ์๋ก ํ๋ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ๋ฆฌ์คํ ํด๋ณด๊ณ , ๋ช๋ช์ ๊ธฐ๋ฅ์ด ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ ์ด๋ ค์ด ์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.Major ๊ธฐ๋ฅ์๋์ฐ ์คํฌ๋กค์ ๋ฆฌ์คํธ ์คํฌ๋กค์ ์ ์ฉํ์ด์ง ์ฌ๋ฐฉ๋ฌธ ์ ์คํฌ๋กค ์์น ์ ์ง ๐ฅ์์ดํ ์ ๋์ด๊ฐ ์๋์ผ๋ก ์กฐ์ ํ๋ฉด์ ๋ณด์ด๋ ์์ดํ ๋ง ๋ ๋๋ง์ด์ ์๋ฅผ ๋ฐ์ํ ์ผ๋ก ์กฐ์ ์๋ฐฉํฅ ๋ฌดํ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ๊ณผ ์ฐ๊ฒฐ ๐ฅ๊ตฌํํ๊ธฐ ๊น๋ค๋ก์ด ๋ถ๋ถ์ด ์๋ ๊ธฐ๋ฅ์ ๐ฅ ๋ก ํ์ํ์ต๋๋ค.์๋์ฐ ์คํฌ๋กค์ ๋ฆฌ์คํธ ์คํฌ๋กค์ ์ ์ฉ์๋์ ์์์ ๋ณด๋ฉด ์ํฉ์ ๋ํ ์ดํด๊ฐ ์ฝ์ต๋๋ค. ๋ฆฌ์คํธ ๋ด๋ถ ์คํฌ๋กค์ ๊ฒฝ์ฐ list-container ๋ผ๋ div์ height๊ฐ ์ ํด์ ธ์๊ณ overflow-y๊ฐ scroll์ ๋๋ค. ์ฆ, ํ์ด์ง์ ๊ตฌ์ฑ์ด (ํค๋, ๋ฆฌ์คํธ, ํธํฐ)๋ก ๋์ด์์ ๋..
Comment