๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘จ‍๐Ÿ’ป web.dev51

rAF ํ”„๋ ˆ์ž„ ๋น„์œจ ์กฐ์ ˆํ•˜๊ธฐ ๐Ÿ“Œ requestAnimationFrame์˜ ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์กฐ์ ˆํ•˜๊ธฐ requestAnimationFrame(์ดํ•˜ rAF) ์„ ์ด์šฉํ•ด์„œ JavaScript ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ, ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ์ดˆ๋‹น ํ”„๋ ˆ์ž„(FPS) ์„ ์กฐ์ ˆํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํƒ€์ด๋จธ ํ•จ์ˆ˜๋“ค(setInterval, setTimeout)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  rAF ์—์„œ ์ดˆ๋‹น ํ”„๋ ˆ์ž„์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. animation tick ๊ฐ„๋‹จํ•˜๊ฒŒ FPS ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ์›ํ•˜๋Š” FPS ๋ฅผ ์œ„ํ•œ tick ์„ ๊ตฌํ•ด๋ด…์‹œ๋‹ค. const tick = 1000 / fps 1์ดˆ๋‹น 60 ํ”„๋ ˆ์ž„์„ ์›ํ•œ๋‹ค๋ฉด 1000 / 60 = 16.6ms ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ ค์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชฉํ‘œํ•œ ํ”„๋ ˆ์ž„ ๋น„์œจ์„ ์œ„ํ•ด์„œ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์„ ๊ทธ.. 2024. 1. 30.
point-in-polygon ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ตญ๋‚ด์™ธ ํŒ๋‹จํ•˜๊ธฐ ํŠธ๋ฆฌํ”Œ ์›น ์ผ์ •ํŒ์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํŠน์ • ์œ„๊ฒฝ๋„ ์ขŒํ‘œ ์ง€์ ์ด ๊ตญ๋‚ด์ธ์ง€ ํ•ด์™ธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์ง€๋„ API์—์„œ ์ œ๊ณตํ•˜๋Š” reverse geocoding๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ถ”๊ฐ€์ ์ธ API ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ๋Œ€์‹  ์ˆ˜ํ•™์ ์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Point-In-Polygon ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹ค๊ฐํ˜•์˜ ๊ต์ ์„ ์ด์šฉํ•ด์„œ ํŒ๋‹จํ•˜๊ธฐ ์œ„์™€ ๊ฐ™์€ ๋‹ค๊ฐํ˜•์—์„œ ๋ถ‰์€ ์ ์„ A ๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ขŒํ‘œ A ๊ฐ€ ๋‹ค๊ฐํ˜• ์•ˆ์— ์กด์žฌํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ˆ˜ํ‰์„ ์„ ๊ทธ์–ด์„œ ๊ต์ฐจ๋˜๋Š” ๋ณ€์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์€ ์ƒ๊ด€์—†๊ณ , ํ•œ์ชฝ์œผ๋กœ๋งŒ ๊ทธ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ต์ฐจ๋˜๋Š” ์ง€์ ์„ node ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ node ์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋ฉด ๋‹ค๊ฐ.. 2024. 1. 30.
Vanilla JS ๋กœ FigJam ์›น์•ฑ ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ž‘๋…„ ์ดˆ์— 4๊ฐœ์›” ์ •๋„ ํ‡ด๊ทผํ•˜๊ณ  ์งฌ ๋‚ด์„œ ๋งŒ๋“  PWA ์›น์•ฑ ๊ฐœ๋ฐœ ๊ณผ์ •์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. (๊ฐœ์ธ notion์— ์ •๋ฆฌํ•ด๋†“๊ณ  ์—…๋กœ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋Šฆ์—ˆ๋„ค์š” ๐Ÿ˜‚) ํ•ด๋‹น ๋‚ด์šฉ์œผ๋กœ ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ์‚ฌ๋‚ด ์œ„ํด๋ฆฌ ๋ฐœํ‘œ๋„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ GitHub ์ €์žฅ์†Œ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/sohnjunior/editty GitHub - sohnjunior/editty: ๐Ÿง‘‍๐ŸŽจ๐Ÿฆ Sketch with vanilla web app ๐Ÿง‘‍๐ŸŽจ๐Ÿฆ Sketch with vanilla web app. Contribute to sohnjunior/editty development by creating an account on GitHub. github.com ๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ 2022๋…„๋„.. 2024. 1. 23.
Canvas ๋„ํ˜• ํšŒ์ „์˜ ์›๋ฆฌ์™€ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ๐Ÿ“Œ ์ด๋ฏธ์ง€ ํšŒ์ „ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์บ”๋ฒ„์Šค์— ๊ทธ๋ ค์ง„ ์ด๋ฏธ์ง€ ํšŒ์ „ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. canvas ์—์„œ ๊ฐ์ฒด์— ์ œ๊ณตํ•ด์ฃผ๋Š” rotate API ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ํ•™์Šต๋„ ํ•ด๋ณผ ๊ฒธ ์ด๋ฏธ์ง€ ๋ฐ”์šด๋”๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ํšŒ์ „ ์—ฐ์‚ฐ์€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ฐ์นด๋ฅดํŠธ ํ‰๋ฉด์ขŒํ‘œ์—์„œ ํšŒ์ „ํ•˜๊ธฐ ์ด๋ฏธ์ง€ ์ œ์–ด์˜์—ญ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช… ์—ฌ๊ธฐ์„œ ์ œ์–ด์˜์—ญ ์€ ์ด๋ฏธ์ง€ ํ…Œ๋‘๋ฆฌ๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ์˜์—ญ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํฌ์ปค์‹ฑ๋˜๋ฉด ๋‚˜ํƒ€๋‚˜๋ฉฐ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œ, ํšŒ์ „, ๋ฆฌ์‚ฌ์ด์ฆˆ ํ•  ์ˆ˜ ์žˆ๋Š” ์•ต์ปค๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ œ์–ด์˜์—ญ์€ ์บ”๋ฒ„์Šค์˜ ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ point ๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ ํƒ๋œ ์•ต์ปคํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์บ”๋ฒ„์Šค ๊ฐ์ฒด๋“ค์€ path ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, isPoi.. 2023. 8. 29.
Storybook useArgs ํ™œ์šฉํ•˜๊ธฐ ๐Ÿ“Œ ์˜ˆ์‹œ ์‚ดํŽด๋ณด๊ธฐ ์Šคํ† ๋ฆฌ๋ถ์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด control prop์„ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ ๋™๊ธฐํ™”์‹œํ‚ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ์œ„ํ•ด ์ง€๋„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๊ณ , ๋งˆ์ปค ํด๋ฆญ ์‹œ ํ™œ์„ฑํ™”๋˜๋Š” ๋งˆ์ปค ID ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์Šคํ† ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. import { Map } from './map' const meta = { component: Map } export default meta const mock = [ { id: '1', poi: {/** some data */} }, { id: '2', poi: {/** some data */} }, { id: '3', poi: {/** some data */} }, // ... ] const options = mock.map((opti.. 2023. 8. 28.
Web Component์™€ ํ•จ๊ป˜ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ ๐Ÿ“Œ Web Component ๋ž€? web component๋Š” HTML/CSS/JS๋ฅผ ์ด์šฉํ•˜์—ฌ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋‚˜์˜จ ์ง€๋Š” ๊ฝค ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด์ง€๋งŒ, ์ง์ ‘ ์จ๋ณด์ง€ ์•Š๋Š” ์ด์ƒ ์ ‘ํ•ด๋ณผ ๊ธฐํšŒ๊ฐ€ ๋งŽ์ง€ ์•Š์•„์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด ๋ณผ ๊ฒธ ๊ด€๋ จ ์ŠคํŽ™์„ ์ฐพ์•„๋ณด๊ณ  ์ •๋ฆฌํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ web component ํ†บ์•„๋ณด๊ธฐ ์›น ์ปดํฌ๋„ŒํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ๊ณผ ์บก์Šํ™”๋ฅผ ์œ„ํ•ด์„œ Custom Element , Shadow DOM , HTML template ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1๏ธโƒฃ custom element API ์›น ํ‘œ์ค€์€ custom element ๋ผ๋Š” JavaScript API๋ฅผ ํ†ตํ•ด ์ง์ ‘ HTML ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€์—์„œ๋Š” Autonomous custom ์™€ Cu.. 2023. 8. 25.