์•„์ดํฐ ์ฒœ์ง€์ธ ํ‚ค๋ณด๋“œ ์ด์Šˆ (แ„‹แ†ž, แ„‹แ†ข ๋Œ€์‘)
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2024. 4. 11. 11:21

์•„์ดํฐ ์ฒœ์ง€์ธ ํ‚ค๋ณด๋“œ์—์„œ "์œ ์š”" ๋ผ๋Š” ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, "์œต" -> "์œ แ„‹แ†ž" -> "์œ แ„‹แ†ข" ์ด๋ ‡๊ฒŒ ์ž…๋ ฅ์ด ๋˜๋Š”๋ฐ ํ•œ๊ธ€๋งŒ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋„ฃ์–ด๋‘์—ˆ๋˜ regex ๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ ๊ธ€์ž๋ฅผ ์ง€์›Œ๋ฒ„๋ฆฌ๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.ย [๊ธฐ์กด Regex]return target.replace(/[^๊ฐ€-ํžฃใ†แ†žแ†ขใ„ฑ-ใ…Žใ…-ใ…ฃa-zA-Z\s]/g, '');ํ•œ๊ธ€, ์˜์–ด๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋Š” ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ regex ์ž…๋‹ˆ๋‹ค.ย [์ด์Šˆ ์›์ธ]ย ์ข…์„ฑ ์ž์Œ๊ณผ ใ†แ†žแ†ข ๊ฐ™์€ ์ฒจ์ž๊ฐ€ ํ•ฉ์ณ์ง€๋ฉด์„œ ์ƒˆ๋กœ์šด ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.ย [๋ณ€๊ฒฝ๋œ Regex]/*** ์•„์ดํฐ ์ฒœ์ง€์ธ์„ ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค.* \u1100-\u1112 ์ž์Œ ใ„ฑ-ใ…Ž* \u318D\u119E\u11A2\u2022\u2025\u00B7\uFE55 - ใ†แ†žแ†ขโ€ขโ€ฅยท๏น•*/ret..

์›น๊ฐœ๋ฐœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ฑ๊ฐœ๋ฐœ ์Š์–ด๋ณด๊ธฐ :: ๋‘˜ ๋‹ค ํ•ด๋ณธ ๊ฐœ๋ฐœ์ž ๐Ÿ˜Ž
์›น (WEB)/๊ณต๋ถ€ 2024. 3. 24. 14:52

์ œ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ ์ƒ๊ฐํ•ด๋ณด์•˜๋Š”๋ฐ, 2023๋…„ ๊ฐ€์„ โ€œ์˜ค๋Š˜์˜๊ฐ€๋“ โ€ ์ด๋ผ๋Š” ํ”„๋กœ๋•ํŠธ๋ฅผ ๋Ÿฐ์นญ ํ•ด ๋ณธ ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ฑ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด๋ฉด์„œ ๋Š๋‚€ ์›น ๊ฐœ๋ฐœ๊ณผ์˜ ์ฐจ์ด์ ์„ ์ฃผ๋กœ ๋‹ค๋ฃจ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋ฐ”์ผ ํผ์ŠคํŠธ๊ฐ€ ๋œ ํ˜„์‹œ์ ์—์„œ ์•ฑ์„ ์›น๋ทฐ / ๋„ค์ดํ‹ฐ๋ธŒ / ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ์ž์˜ ์žฅ๋‹จ์ ์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. https://yozm.wishket.com/magazine/detail/1969/ ์ด ๋ธ”๋กœ๊ทธ์—์„œ ๊ธ€์„ ๋ณด๊ณ  ๋งˆ์ง€๋ง‰ ๋„ํ‘œ์˜ ๊ธ€์— ํ˜นํ•ด์„œ ๊ธ€์„ ์จ์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "2023๋…„ 2์›” ๊ธฐ์ค€ ์ „ ์„ธ๊ณ„ ์›น ์‚ฌ์ดํŠธ ํŠธ๋ž˜ํ”ฝ์˜ 60.06% ๊ฐ€ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค๋ฅผ ํ†ตํ•ด ์œ ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค." ์•ฑ ๊ฐœ๋ฐœ์€ ์›น ๊ฐœ๋ฐœ๊ณผ ๋ญ๊ฐ€ ๋‹ค๋ฅผ๊นŒ? ํฌ๊ฒŒ โ€œ๋ฐฐํฌโ€์™€ โ€œ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌโ€ ๊ทธ๋ฆฌ๊ณ  โ€œUI ๊ณ„์ธต๊ตฌ์กฐโ€ ์„ธ๊ฐ€์ง€ ์ธก..

[Next.js] Redirect ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• 5๊ฐ€์ง€
์›น (WEB) 2024. 1. 6. 17:54

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..

Font Glyph
์›น (WEB)/๊ณต๋ถ€ 2023. 9. 16. 22:56

๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ์—์„œ ์ง€์—ฐ ์‹œ๊ฐ„ ์—†์ด ์›นํฐํŠธ ์„œ๋น™ํ•˜๊ธฐ ๊ธ€์„ ๋ณด๋‹ค๊ฐ€ Glyph๋ผ๋Š” ๊ฐœ๋…์ด ๋‚˜์™€์„œ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. Glyph(๊ธ€๋ผํ”„)๋ž€? Glyph๋Š” ๊ธ€์ž์˜ ์ตœ์†Œ ํ‘œํ˜„์ด๋ฉฐ, ๋œป๊ณผ ์†Œ๋ฆฌ๋ฅผ ์ง€๋‹ˆ์ง€ ์•Š์€ ๋„ํ˜• ๊ธฐํ˜ธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€œ๊ฐ€โ€ ๋ผ๋Š” ๊ธ€์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด ๊ธ€์ž๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•  ๊ฒƒ์ธ์ง€๊ฐ€ Glyph์ด๋‹ค. ํ—ท๊ฐˆ๋ฆฌ๋Š” ์šฉ์–ด ์ •๋ฆฌ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋งˆ์ฃผ์น˜๋Š” ๊ธ€์ž์˜ ๋ชจ์–‘๊ณผ ๊ด€๋ จ๋œ ์šฉ์–ด๋“ค์—๋Š” Character, Font, Glyph (feat. Unicode)๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ฐจ์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ์ •์˜ํ•ด๋ณด์ž. ์š”์•ฝํ•˜์ž๋ฉด, Character๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ธ€์ž์ด๊ณ , Glyph๋Š” ํ•˜๋‚˜์˜ Character์— ๋Œ€์‘๋˜๋Š” ํ‘œํ˜„์ด๋‹ค. Glyph๋“ค์ด ๋ชจ์—ฌ Font๋ฅผ ๋งŒ๋“ ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ Unicode๋Š” Character ํ•˜๋‚˜ ๋‹น ๋ถ€์—ฌ๋˜๋Š” c..

[Typescript] ๊ตฌ์กฐ์  ํƒ€์ดํ•‘๊ณผ ๋• ํƒ€์ดํ•‘
์›น (WEB)/๊ณต๋ถ€ 2023. 4. 16. 19:58

๐Ÿค” ๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ๋˜ 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 ํƒ€์ž…..

[Virtualized List] #3. ๊ฐ€์ƒ๋ฆฌ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๊ต
์›น (WEB)/๊ณต๋ถ€ 2023. 1. 28. 13:37

๐Ÿ’ก 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๋Š” ์›Œ๋‚™ ์œ ๋ช…..

[Virtualized List] #2. Virtualized List์˜ ๊ธฐ๋Šฅ
์›น (WEB)/๊ณต๋ถ€ 2023. 1. 7. 22:37

์ด๋ฒˆ ์ฑ•ํ„ฐ์—์„œ๋Š” ๊ฐ€์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋‘ ๋ฆฌ์ŠคํŒ… ํ•ด๋ณด๊ณ , ๋ช‡๋ช‡์˜ ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ์™œ ์–ด๋ ค์šด ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Major ๊ธฐ๋Šฅ ์œˆ๋„์šฐ ์Šคํฌ๋กค์„ ๋ฆฌ์ŠคํŠธ ์Šคํฌ๋กค์— ์ ์šฉ ํŽ˜์ด์ง€ ์žฌ๋ฐฉ๋ฌธ ์‹œ ์Šคํฌ๋กค ์œ„์น˜ ์œ ์ง€ ๐Ÿ”ฅ ์•„์ดํ…œ์˜ ๋†’์ด๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์•„์ดํ…œ๋งŒ ๋ Œ๋”๋ง ์—ด์˜ ์ˆ˜๋ฅผ ๋ฐ˜์‘ํ˜• ์œผ๋กœ ์กฐ์ • ์–‘๋ฐฉํ–ฅ ๋ฌดํ•œ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๊ณผ ์—ฐ๊ฒฐ ๐Ÿ”ฅ ๊ตฌํ˜„ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ๐Ÿ”ฅ ๋กœ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ์Šคํฌ๋กค์„ ๋ฆฌ์ŠคํŠธ ์Šคํฌ๋กค์— ์ ์šฉ ์•„๋ž˜์˜ ์˜์ƒ์„ ๋ณด๋ฉด ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€ ์Šคํฌ๋กค์˜ ๊ฒฝ์šฐ list-container ๋ผ๋Š” div์˜ height๊ฐ€ ์ •ํ•ด์ ธ์žˆ๊ณ  overflow-y๊ฐ€ scroll์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํŽ˜์ด์ง€์˜ ๊ตฌ์„ฑ์ด (ํ—ค๋”, ๋ฆฌ์ŠคํŠธ, ํ‘ธํ„ฐ)๋กœ..

[Virtualized List] #1. ๊ธฐ๋ณธ (Virtualized List์˜ ๊ตฌ์„ฑ)
์›น (WEB)/๊ณต๋ถ€ 2022. 12. 2. 11:58

Virtualized List ๋ž€? Virtualized List(๊ฐ€์ƒ๋ฆฌ์ŠคํŠธ)๋ž€ ๋‚˜์—ด๋œ ๋ฆฌ์ŠคํŠธ์˜ ์•„์ดํ…œ ์ค‘ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” ์•„์ดํ…œ๋งŒ ๋ Œ๋”๋งํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ ์ €๊ฐ€ ์Šคํฌ๋กค์„ ๋‚ด๋ ค ๋ณด์ด๋Š” ์•„์ดํ…œ์˜ ๋ฒ”์œ„๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋‹ค์‹œ ๋ณ€๊ฒฝ๋œ ์•„์ดํ…œ ๋งŒ์„ ๋ Œ๋”๋ง ํ•˜๋„๋ก ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํ™”๋ฉด์„ ๋ฒ—์–ด๋‚œ ๊ณณ์˜ ์•„์ดํ…œ๋“ค์€ ํ™”๋ฉด ์ƒ์— ๋ Œ๋”๋ง ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์‹œ์ ์—๋Š” ์—†๋Š” ์•„์ดํ…œ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์œ ์ €์˜ ์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ผ ํ™”๋ฉด ์ƒ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐ€์ƒ์œผ๋กœ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฐจ๋ก€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„์ดํ…œ์„ ๋ชจ๋‘ ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ๋ณธ List์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ, ํ•„์š”ํ•œ ์•„์ดํ…œ๋งŒ์„ ๋ Œ๋”๋งํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋ Œ๋”๋ง ๋น„์šฉ์ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ Œ๋”๋ง ๋น„์šฉ์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๊ธฐ์ˆ ๋กœ๋Š” ํŽ˜์ด์ง€ ๋ณ„๋กœ n๊ฐœ์˜ ์•„์ดํ…œ๋งŒ..