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

์ „์ฒด ๊ธ€

(73)
์„ฑ๋Šฅ - intro https://web.dev/learn/performance Learn Performance  |  web.devThis course is designed for those new to web performance, a vital aspect of the user experience. It covers key web performance concepts and techniques for improving performance.web.dev"์„ฑ๋Šฅ์„ ์ฑ™๊ฒจ์•ผ์ง€"๋ผ๊ณ  ์ƒ๊ฐ์€ ํ–ˆ๊ณ , ์ž‘๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ์‹ค์ฒœํ–ˆ์ง€๋งŒ, ์ด๋ก ์ ์ธ ๊ฒƒ์„ ๋‚ด๊ฐ€ ์ž˜ ์•Œ๊ณ , ์—ฐ๊ฒฐ ์ง€์–ด ์‹ค์ œ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์ƒ๊ฐํ•˜๋ฉด 100% ์ž์‹  ์žˆ๊ฒŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๊ธฐ ์–ด๋ ค์›Œ ์•„์‰ฌ์› ๋‹ค.์ด๋ฒˆ์—๋Š” web.dev๋ฅผ ํ†ตํ•ด ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ..
[Nextjs] Dynamic metadata tag ์ƒ์„ฑํ•˜๊ธฐ (Part.2) 2025.02.25 - [๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป dev] - [Nextjs] Dynamic metadata tag ์ƒ์„ฑํ•˜๊ธฐ (SEO ์ง€ํ‘œ 54 โžก๏ธ 91) [Nextjs] Dynamic metadata tag ์ƒ์„ฑํ•˜๊ธฐ (SEO ์ง€ํ‘œ 54 โžก๏ธ 91)nextjs๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด Metadata API ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ metadata tag๋ฅผ ๋‹ฌ์•„์ฃผ๋Š” ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹ค.์˜ค๋Š˜์€ ๊ทธ ์ค‘ ํŽ˜์ด์ง€ ํŒŒ๋žŒ์— ๋”ฐ๋ผ ๋‹ค์ด๋‚ด๋ฏนํ•˜๊ฒŒ ๋ฉ”ํƒ€ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€pyotato-dev.tistory.com ์ด์ „์—๋Š” /region ๊ฒฝ๋กœ์˜ ํŽ˜์ด์ง€๋“ค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์—ฌ์คฌ๋‹ค.ํ•˜์ง€๋งŒ ๋‹น์‹œ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์€ ๊ฑฐ ๊ฐ™์•„์„œ ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ, ์ƒ์œ„์˜ ํŽ˜์ด์ง€์— ๊ณต์œ ํ•  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์“ธ ..
[Nextjs] Dynamic metadata tag ์ƒ์„ฑํ•˜๊ธฐ (SEO ์ง€ํ‘œ 54 โžก๏ธ 91) nextjs๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด Metadata API ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ metadata tag๋ฅผ ๋‹ฌ์•„์ฃผ๋Š” ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹ค.์˜ค๋Š˜์€ ๊ทธ ์ค‘ ํŽ˜์ด์ง€ ํŒŒ๋žŒ์— ๋”ฐ๋ผ ๋‹ค์ด๋‚ด๋ฏนํ•˜๊ฒŒ ๋ฉ”ํƒ€ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ณ ์ž ํ•œ๋‹ค.Tripie ์•ฑ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ํŠธ๋ฆฌํ”Œ์—์„œ ์Šคํฌ๋ž˜ํ•‘ํ•œ ์—ฌํ–‰์ง€์— ๋Œ€ํ•œ ํŒ, ์ง€์—ญ ์ •๋ณด๋‚˜ ์‹๋‹น ์ •๋ณด, ์—ฌํ–‰ ์ผ์ • ํŒ ๋“ฑ์„ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ๋‹ค.์ฑ—์ง€ํ”ผํ‹ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ๊ธฐํ˜ธ์— ๋”ฐ๋ผ ์—ฌํ–‰์ผ์ •์„ ์ž‘์„ฑํ•ด ์ค€๋‹ค.  ์ด ์ค‘ ๋ฉ”ํƒ€ํƒœ๊ทธ๋กœ ์‚ผ์„ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ชจ๋‘ ์ค€๋น„๋œ ์ฒซ ๋ฒˆ์งธ์ธ ์—ฌํ–‰์ง€ ์ •๋ณด์— ๋Œ€ํ•œ ํŽ˜์ด์ง€๋“ค์— ๋ฉ”ํƒ€ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ์ž ํ•œ๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๋ฉ”ํƒ€ํƒœ๊ทธ๋ฅผ ๋‹ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๋‹ค.Config ๊ธฐ๋ฐ˜ : static metadata object๋‚˜ dynami..
Nextjs blurDataUrl dynamicํ•˜๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…! ์˜ค๋Š˜์€ nextjs ์ด๋ฏธ์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ blurDataUrl์„ ํ™œ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋˜๊ธฐ ์ „, ํ๋ฆฌ๊ฒŒ ๋ณด์ด๋„๋ก ํ•˜๋Š” ๋กœ๋”๋ฅผ ํ™œ์šฉํ•ด ๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ๊ณ ์ž ํ•œ๋‹ค.์ง€๊ธˆ๊นŒ์ง€๋Š” ์ผ๋ฐ˜ img ํƒœ๊ทธ์— ์Šค์ผˆ๋ ˆํ†ค์„ ํ™œ์šฉํ•ด์„œ placeholder๋ฅผ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ, tripie๋Š” ์—ฌํ–‰ ๊ด€๋ จ ์•ฑ์ด๋ฏ€๋กœ ์‚ฌ์ง„ ์ฝ˜ํ…์ธ ๊ฐ€ ์—„์ฒญ ๋งŽ์•„ ๋ชจ๋‘ ์Šค์ผˆ๋ ˆํ†ค์œผ๋กœ ๋กœ๋“œํ•˜๊ธฐ์—๋Š” ๋ณด๊ธฐ์— ์ข‹์ง€ ์•Š์•˜๋‹ค.๋”ฐ๋ผ์„œ ์•ž์œผ๋กœ ๋กœ๋“œ๋  ์ด๋ฏธ์ง€์˜ blur ์ฒ˜๋ฆฌ๋œ ๋ฒ„์ „์œผ๋กœ UX๋ฅผ ๋†’์ด๊ณ ์ž ํ•œ๋ฒˆ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. blur data url์„ ํ™œ์šฉํ•œ Nextjs ์ปดํฌ๋„ŒํŠธ placeholderBlur Data Url ์ด๋ƒ ์Šค์ผˆ๋ ˆํ†ค UI๋ƒ๋จผ์ € blur data url์ด ์Šค์ผˆ๋ ˆํ†ค ui ๋ณด๋‹ค ๋” ์ ํ•ฉํ•œ๊ฐ€ ์ฑ—์ง€ํ”ผํ‹ฐํ•œํ…Œ ๋ฌผ์–ด๋ณด์•˜๋‹ค.โœ… Pros of Blur Da..
polling mechanism์œผ๋กœ react ref ํ™•์ธํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ๋งˆ๋ฌด๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋˜ ์ค‘, ์ œ๋Œ€๋กœ ๋ชจ๋‘ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋‚˜ ํ™•์ธํ•˜๋‹ค๊ฐ€์ž๋™ ํšŒ์ „ํ•˜๊ณ  ์žˆ๋˜ ์ปดํฌ๋„ŒํŠธ์ธ Globe์˜ ๋™์ž‘์ด ์ด์ƒํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ useRef์™€ useEffect์œผ๋กœ threejs ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ reload/refresh ๋˜์–ด๋„ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋„๋ก polling์„ ํ™œ์šฉํ•œ ๊ฒƒ์„ ๋‹ค๋ฃจ๊ณ ์ž ํ•œ๋‹ค.๋ฆฌ๋กœ๋“œํ•˜๋ฉด ๋Œ์•„๊ฐ€์•ผํ•˜๋Š” ์ง€๊ตฌ๋ณธ์ด์ „ ์ฝ”๋“œ'use client';import classNames from 'classnames/bind';import COLORS from 'constants/colors';import dynamic from 'next/dynamic';import { useEffect, useRef } from 'react';import { GlobeMetho..
Specified module format (CommonJs) is not matching the module format of the source code (EcmaScript Modules) Specified module format (CommonJs) is not matching the module format of the source code (EcmaScript Modules) The CommonJs module format was specified in the package.json that is affecting this source file or by using an special extension, but Ecmascript import/export syntax is used in the source code. The module was automatically converted to an EcmaScript module, but that is in conflict with th..
puppeteer aws lambda์— ๋ฐฐํฌํ•˜๊ธฐ puppeteer๋Š” ํฌ๋กฌ์ด๋‚˜ ํŒŒ์ด์–ดํญ์Šค์—์„œ ๋™์ž‘์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.์˜ค๋Š˜์€ ์ด puppeteer๋ฅผ ํ†ตํ•ด ์›น์Šคํฌ๋ž˜ํ•‘์„ ํ•˜์—ฌ ์žฅ์†Œ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ ์ž ํ•œ๋‹ค.๊ทธ๋ฆฌ๊ณ  aws ๋žŒ๋‹ค๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ๋‹ด์€ ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐจ๊ทผํžˆ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ์ž‘์—…ํ•œ ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค.๊ตฌ๊ธ€ place api๋ฅผ ์‚ฌ์šฉํ•˜๋А๋ผ 30๋งŒ ์›์–ด์น˜ ์ด์ƒ์˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ด์„œ, ์ฐจ์„ ํƒ์œผ๋กœ ์›น์Šคํฌ๋ž˜ํ•‘ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์จ๋ณด๋Š” ๋ฐฉํ–ฅ์„ ์„ ํƒํ•ด ๋ดค๋‹ค.๋ฌผ๋ก  api์— ๋น„ํ•ด์„œ ์‘๋‹ต ์†๋„ ๋“ฑ์ด ๋А๋ ค์งˆ ๋ถ€๋ถ„์ด ์—ผ๋ ค๋˜์ง€๋งŒ ๊ธˆ์•ก์ ์œผ๋กœ ์ตœ์„ ์ธ ๊ฑฐ ๊ฐ™๊ณ ,ํ‰์†Œ์— ๋“ค์–ด๋ณด๊ธฐ๋งŒ ํ–ˆ๋˜ lambda์™€ docker๋ฅผ ๊ฒฝํ—˜ํ•ด ๋ณผ ์ข‹์€ ๊ฒฝํ—˜ ๊ฐ™์•„์„œ ๊ณต๋ถ€ ์‚ผ์•„ํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ค€๋น„๋ฌผ- aws ๊ณ„์ • : lambda์— ๋ฐฐํฌ   - aws sam CLI (์„ค์น˜ ๋ง..
[โš›๏ธ React conf 2024] ๋‘ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฆฌ์•กํŠธ (React for Two Computers | Dan Abramov) 2024.09.24 - [๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป dev] - [โš›๏ธ React Conf 2024] ๋ฆฌ์•กํŠธ 19์—์„œ ์ƒˆ๋กœ์›Œ์ง„ ๊ฒƒ๋“ค (What's new in React 19 | Lydia Hallie) [โš›๏ธ React Conf 2024] ๋ฆฌ์•กํŠธ 19์—์„œ ์ƒˆ๋กœ์›Œ์ง„ ๊ฒƒ๋“ค (What's new in React 19 | Lydia Hallie)What's new in React 19 | Lydia Hallie์•ฝ 2 ๋‹ฌ ์ „์— REACT CONF 2024๊ฐ€ ์—ด๋ ธ๋‹ค.์—ฌ๋Ÿฌ ํ† ํฌ๋“ค์ด ์ง„ํ–‰๋˜์—ˆ์—ˆ๋Š”๋ฐ, ๊ทธ์ค‘ ๋”ฐ๋ˆ ๋”ฐ๊ทผ(?)ํ•œ React 19์˜ ์ƒˆ ์†Œ์‹๋“ค์„ ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค.canary ๋ฒ„์ „์˜ ๋ฆฌ์•กํŠธ๋ฅผ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค๋ฉดpyotato-dev.tistory.com์ด์ „ ๊ธ€์€ ๋ฆฌ์•กํŠธ 19์—์„œ ์ƒˆ๋กœ์›Œ์ง„ ๊ธฐ๋Šฅ๋“ค์ด๋‚˜ ๊ฐœ์„ ๋œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค์—ˆ๋‹ค.์˜ค๋Š˜..