๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?

Development64

[Next.js] ์„ฑ๋Šฅ ์ตœ์ ํ™” - ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ๋ฐฐ๋Ÿด ํŒŒ์ผ ๊ด€๋ฆฌ ์ „๋žต ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ์šฐ๋ฆฌ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ '๊น”๋”ํ•œ ์ฝ”๋“œ'๋ฅผ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•œ๊ณณ์— ๋ชจ์•„ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฐ๋Ÿด ํŒŒ์ผ(Barrel File) ํŒจํ„ด์„ ํ”ํžˆ ์‚ฌ์šฉํ•˜๊ณค ํ•˜์ฃ . ํ•˜์ง€๋งŒ ์ด ํŽธ๋ฆฌํ•จ ๋’ค์—๋Š” ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ์™€ ์„ฑ๋Šฅ์„ ๊ฐ‰์•„๋จน๋Š” ์น˜๋ช…์ ์ธ ํ•จ์ •์ด ์ˆจ์–ด ์žˆ์Šต๋‹ˆ๋‹ค.์˜ค๋Š˜์€ ๋ฐฐ๋Ÿด ํŒŒ์ผ์ด ์™œ ์„ฑ๋Šฅ์˜ ์ ์ด ๋˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ ์ปค์ ธ๋ฒ„๋ฆฐ ํ”„๋กœ์ ํŠธ์—์„œ Next.js์˜ optimizePackageImports๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์šฐ์•„ํ•˜๊ฒŒ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋ฐฐ๋Ÿด ํŒŒ์ผ(Barrel File)์ด๋ž€?๋ฐฐ๋Ÿด ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์„ ํ•˜๋‚˜์˜ index.ts ํŒŒ์ผ๋กœ ๋ชจ์•„์„œ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด๋Š”(Re-export) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.// components/index.ts (๋ฐฐ๋Ÿด ํŒŒ์ผ)export { d.. 2026. 2. 13.
[next.js] ๋นŒ๋“œ ์ตœ์ ํ™” - ํ”„๋กœ๋•์…˜ ๋ฒˆ๋“ค์—์„œ ๊ฐœ๋ฐœ ์ „์šฉ ์ฝ”๋“œ ์ œ์™ธํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก Next.js ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์ ์  ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฒด๊ฐํ•˜๊ฒŒ ๋๋‹ค.“์ฝ”๋“œ๊ฐ€ ๋Š˜๋ฉด ๋นŒ๋“œ๊ฐ€ ๋А๋ ค์ง€๋Š” ๊ฑด ๋‹น์—ฐํ•œ ๊ฑฐ ์•„๋‹Œ๊ฐ€?” ์‹ถ์ง€๋งŒ,์ž์„ธํžˆ ๋ณด๋ฉด ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๊นŒ์ง€ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์‹œ๊ฐ„์„ ์žก์•„๋จน๋Š” ๊ตฌ๊ฐ„๋“ค์ด ์žˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ ๊ทธ์ค‘ ํ•˜๋‚˜์˜€๋˜ React Query / Jotai DevTools๋ฅผ _app์— ์ •์  import๋กœ ๋„ฃ์–ด๋‘” ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•ด์„œ,๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ค„์ธ ๊ณผ์ •์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. 1. ๋ฌธ์ œ: DevTools๋ฅผ ๊ทธ๋ƒฅ ๋„ฃ์œผ๋ฉด?๊ฐœ๋ฐœ ํŽธ์˜๋ฅผ ์œ„ํ•ด @tanstack/react-query-devtools, jotai-devtools๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ,๋ณดํ†ต์€ ์ƒ๋‹จ์—์„œ ์ •์  import ํ•œ ๋’ค _app ์•ˆ์—์„œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋œ๋‹ค.import { ReactQu.. 2026. 2. 4.
[Next.js] ์„ฑ๋Šฅ ์ตœ์ ํ™” - ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ๊ฐœ์„  (feat. bundle-analyzer) ์–ด๋А ๋‚  ๋ฌธ๋“ ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ์ด ๋А๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. Bundle Analyzer๋ฅผ ๋Œ๋ ค๋ณด๋‹ˆ... _app.js๊ฐ€ 4.2MB์˜€๋‹ค. ์–ด๋–ป๊ฒŒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ๊ณต์œ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ค€๋น„: Bundle Analyzer ์„ค์น˜๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋ถ„์„ํ•˜๋ ค๋ฉด ๋จผ์ € @next/bundle-analyzer๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.yarn add -D @next/bundle-analyzernext.config.js์— ์„ค์ •์„ ์ถ”๊ฐ€ํ•œ๋‹ค:const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true',});module.exports = withBundleAnalyzer({ // ๊ธฐ์กด ์„ค์ •...});ํŽธ์˜๋ฅผ ์œ„.. 2026. 2. 3.
[Next.js] tailwind CSS ๋กœ์ปฌ ํฐํŠธ ์ ์šฉ (feat. Type '{ children: Element[]; className: string; }' is not assignable to type) next.js + tailwind CSSํ”„๋กœ์ ํŠธ์—์„œ ๊ธ€์”จ์ฒด๋ฅผ ์ ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์€ ๋‹ค์Œ ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.- next.js v15 pages-router- react v19- typescript- tailwindCSS- shadcnUIํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” pretendard๋ฅผ ์˜ˆ์‹œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.  Optimizing: Fonts | Next.jsOptimize your application's web fonts with the built-in `next/font` loaders.nextjs.org Pretendard ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค.https://cactus.tistory.com/306ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํฐํŠธ ๊ฒฝ๋Ÿ‰ํ™”๋ฅผ ์œ„ํ•ด .woff2 ํ™•์žฅ์ž ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ–ˆ์Šต๋‹ˆ๋‹ค.๋‹ค์Œ ๊ฒฝ๋กœ์—.. 2025. 3. 14.
[Next.js] node.js ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ๊ณผ heap ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ ์šฉํ•˜๊ธฐ node.js ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ๊ณผ heap ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ ์šฉํ•˜๊ธฐํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” next.js์—์„œ server๋ฅผ ์ปค์Šคํ…€ ํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ GPT์˜ ๋„์›€์„ ๋ฐ›์•„ process.memoryUsage()๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. 1. process.memoryUsage์˜ ์ค‘์š” ์š”์†ŒNode.js(Next.js) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ธ์‚ฌ์ดํŠธ / if(kakaoAI)2024ํ•ด๋‹น ์ปจํผ๋Ÿฐ์Šค ๋‚ด์šฉ์ด ๋‚ด๊ฐ€ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋…์ ์ธ ๋ถ€๋ถ„์„ ๋‹ค๋ค„์ฃผ๊ณ  ์žˆ์—ˆ๋‹ค. 1-1. ์ฝ”๋“œ ์ ์šฉ// server.jsconst { createServer } = require('http');const { parse } = require('url');.. 2024. 12. 23.
[Next.js] Next.js์˜ ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ตฌ์กฐ - node.js v8 Next.js์˜ ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ตฌ์กฐNext.js๋Š” Node.js ๊ธฐ๋ฐ˜์˜ V8 ์—”์ง„์—์„œ ์‹คํ–‰๋œ๋‹ค.JavaScript๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด์ด๋‹ค. ๋”ฐ๋ผ์„œ V8 ์—ญ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Context ๋‹น ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹จ, ์„œ๋น„์Šค ์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์›Œ์ปค์˜ ๊ฐœ์ˆ˜๋งŒํผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฆ์‹ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์€ V8 ํ”„๋กœ์„ธ์Šค์—์„œ ํ• ๋‹น๋œ ์ผ์ •๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํ‘œํ˜„๋˜๋Š”๋ฐ, ์ด๋ฅผ Resident set์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค.์‚ฌ์ง„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํฌ๊ฒŒ ํž™ ๋ฉ”๋ชจ๋ฆฌ์™€ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ด€๋ฆฌ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.1๏ธโƒฃ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์Šคํƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๊ณ  V8๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์Šคํƒ์„ ๊ฐ€์ง„๋‹ค. ์Šคํƒ์—๋Š” ์ •์ ๋ฐ์ดํ„ฐ(๋ฉ”์„œ๋“œ์™€ ํ•จ์ˆ˜ ํ”„๋ ˆ์ž„, ์›์‹œ ๊ฐ’, ๊ฐ์ฒด ํฌ์ธํ„ฐ)๊ฐ€ ์ €์žฅ๋œ๋‹ค.V8์˜ ์Šคํƒ ์˜์—ญ์˜ ๊ด€๋ฆฌ๋Š”.. 2024. 12. 22.
[Next.js] SWC ์˜ต์…˜์„ ํ™œ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„ ๋‹จ์ถ•ํ•˜๊ธฐ SWC๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„ ๋‹จ์ถ•ํ•˜๊ธฐ ์‚ฌ๋‚ด์—์„œ๋Š” CI/CD ๋„๊ตฌ๋กœ ๊นƒํ—™ ์•ก์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.๋ฐฑ์—”๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ ํ”„๋ก ํŠธ๋Š” ์•ก์…˜์ด ์™„๋ฃŒ๋˜๋Š”๋ฐ ๊นŒ์ง€ ์ „์ฒด์ ์ธ ์‹œ๊ฐ„์ด ์ข€ ๋” ์†Œ์š”๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ํ”„๋ก ํŠธ ํ™˜๊ฒฝ์—์„œ CI/CD ๊ณผ์ • ์ค‘ ๊ฐ€์žฅ ์†Œ์š” ์‹œ๊ฐ„์ด ๊ธด ์Šคํƒญ์€ ๋นŒ๋“œ ํ›„ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด ECR๋กœ ์˜ฎ๊ธฐ๋Š” ์‹œ์ ์ด๋‹ค. ๊ทธ ์ค‘ CI ๊ณผ์ • ์ค‘์—์„œ ํ”„๋ก ํŠธ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹œ๊ฐ„๊ณผ ECR PUSH ํƒ€์ž„์ด ๋Œ€๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•จ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. โ“๊ทธ๋ ‡๋‹ค๋ฉด,ํ”„๋ก ํŠธ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์–ด๋–ป๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์„๊นŒ? Next.js ๋นŒ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ• ํ•˜๋Š” ๋ฐฉ๋ฒ•SWC ์ฝ”๋“œ ์••์ถ• ํ™œ์„ฑํ™”: swcMinify: true๋ฅผ ์„ค์ •ํ•ด ๋นŒ๋“œ ์‹œ SWC๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•˜์—ฌ ์ตœ์ ํ™”.Webpack ์บ์‹ฑ ์‚ฌ์šฉ: W.. 2024. 11. 1.
[API] graphql-request | GraphQLClient, request graphql-request GraphQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ GraphQL API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ โœ… ํ•„์š”ํ•œ ๊ฒƒ headers - token, Content-Type query variables endpoint ⇒API URI GraphQLClient GraphQL ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ . GraphQLClient๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GraphQL API ์—”๋“œํฌ์ธํŠธ์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ์Œ ์ด ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฉ”์„œ๋“œ๋Š” request๋ฉ”์„œ๋“œ request request๋ฉ”์„œ๋“œ๋Š” GraphQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ GraphQL API ์—”๋“œํฌ์ธํŠธ URL๊ณผ G.. 2023. 6. 29.
[Electron] electron์•ฑ ํ™”๋ฉด์ด ๋žœ๋”๋ง์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋ฌธ์ œ์  2023.06.17 - [Development/Electron] - [Electron] SyntaxError: Cannot use import statement outside a module ์œ„์˜ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐ ํ›„ electron์•ฑ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, electron ์•ฑ์€ ์ผœ์ง€์ง€๋งŒ ํ™”๋ฉด์ด ๋žœ๋”๋ง ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒ. ํ•ด๊ฒฐ๊ณผ์ • Failed to compile. Module not found: Error: Can't resolve './App' in 'D:\\2023\\march\\realPractice\\login\\src' Did you mean 'App.js'? BREAKING CHANGE: The request './App' failed to resolve only because it was r.. 2023. 6. 18.
[Electron] SyntaxError: Cannot use import statement outside a module ์˜ค๋ฅ˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋“ค์ด ๋œจ๋ฉด์„œ(๊ฒฝ๊ณ ์ฐฝ) electron ์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š์Œ. (node:29788) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. (Use `electron --trace-warnings ...` to show where the warning was created) App threw an error during load D:\\2023\\march\\realPractice\\login\\public\\electron.js:1 import * as operator from './script/operator.js' ^^^^^^ SyntaxError: Canno.. 2023. 6. 17.