๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • 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.
[Redux] Redux ๊ธฐ์ดˆ - ์ƒํ™œ์ฝ”๋”ฉ action์„ ํ†ตํ•ด action์„ dispatch์— ์ „๋‹ฌํ•˜๊ณ  reducer๊ฐ€ state๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๊ณ  dispatch๊ฐ€ subscribeํ•˜๊ณ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•ด state๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ UI๋ฅผ ๋ฐ”๊ฟ”์คŒ state type State = any ์ €์žฅ์†Œ(store)์— ์˜ํ•ด ๊ด€๋ฆฌ๋จ getState()์— ์˜ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” ํ•˜๋‚˜์˜ ์ƒํƒœ๊ฐ’ action type Action = Object ์–ด๋–ค ์ž‘์—…์„ ํ• ์ง€ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ˆœ์ˆ˜ ๊ฐ์ฒด store์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ• UI ์ด๋ฒคํŠธ์—์„œ ์™”๋“ , ๋„คํŠธ์›Œํฌ ์ฝœ๋ฐฑ์—์„œ ์™”๋“ , ์›น์†Œ์ผ“๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์†Œ์Šค์—์„œ ์™”๋“  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์•ก์…˜์œผ๋กœ์จ ๋ณด๋‚ด์ง reducer type Reducer = (state: S, action: A) => S ๋ˆ„์ ๊ฐ’๊ณผ ๊ฐ’์„ ๋ฐ›์•„ ์ƒˆ๋กœ์šด ๋ˆ„์ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” .. 2023. 6. 16.
[Node.js] Node.js Modules | childProcess, spawn, stdout, stderr, fs, path, yargs, properties-reader, Buffer Node.js modules ๐Ÿ—จ๏ธ ChildProcess โœ… ChildProcess ๊ฐœ๋… Node.js ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ Node.js์—์„œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต exec(), spawn(),fork() ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณต exec() ํ•จ์ˆ˜๋Š” ์…ธ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„ํผ๋ง spawn() ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณต fork() spawn() ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” IPC ์ฑ„๋„์„ ์ž๋™์œผ๋กœ ์„ค์ • ChildProcess ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด Node.js ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Œ Node.js ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์™ธ๋ถ€.. 2023. 6. 16.
[Electron] ipcRenderer.invoke & ipcMin.handle IpcRenderer.invoke ๐Ÿ’ก Electron์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜. ipcRenderer ๊ฐ์ฒด๋Š” ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฃผ๋กœ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€์˜ ๋น„๋™๊ธฐ์ ์ธ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉ. ipcRenderer.invoke๋Š” ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์— ๋น„๋™๊ธฐ์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ์ด ๋ฉ”์„œ๋“œ๋Š” Promise๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ์ฒ˜๋ฆฌ๋˜๊ณ  ์™„๋ฃŒ๋œ ํ›„์— Promise ๊ฒฐ๊ณผ๊ฐ€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌ. ipcRenderer.invoke ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ipcMain.handle์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ ์˜ˆ์ œ // ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—์„œ์˜ ์˜ˆ์ œ ์ฝ”๋“œ const { ipcRenderer } = require('electron'); a.. 2023. 6. 15.
[Electron] dialog.showOpenDialog() dialog.showOpenDialogSync() ๐Ÿ’ก Electron ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŒŒ์ผ ์„ ํƒ ๋Œ€ํ™” ์ƒ์ž๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ ์ฃผ๋กœ ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ ์‚ฌ์šฉ ์˜ˆ์‹œ const { dialog } = require('electron'); // ํŒŒ์ผ ์„ ํƒ ๋Œ€ํ™” ์ƒ์ž ์˜ต์…˜ ์„ค์ • const options = { title: 'Open File', // ๋Œ€ํ™” ์ƒ์ž ์ œ๋ชฉ defaultPath: '/path/to/default', // ๊ธฐ๋ณธ ๊ฒฝ๋กœ buttonLabel: 'Open', // ํ™•์ธ ๋ฒ„ํŠผ ๋ ˆ์ด๋ธ” filters: [ { name: 'Text Files', extensions: ['txt'] }, // ํŒŒ์ผ ํ•„ํ„ฐ { name: 'All Files', extensions.. 2023. 6. 15.
[API] GraphQL ๊ด€๋ จ dependency | Apollo Client, graphql-request graphQL ๊ด€๋ จ ์˜์กด์„ฑ ์ถ”๊ฐ€ 1. Apollo Client Introduction to Apollo Client Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. Use it to fetch, cache, and modify application data, all while automatically updating your UI. Apollo Client helps www.apollographql.com Hooks ์—†์ด Apollo Client ์‚ฌ์šฉํ•˜๊ธฐ yarn: yarn add apollo-boost.. 2023. 6. 15.
๋ฐ”๋ฒจ(Babel) ๋ฐ”๋ฒจ(Babel) ๐Ÿ’ก ๋ฐ”๋ฒจ(Babel)์€ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ(transpiler)๋กœ, ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๊ตฌ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ES6๋‚˜ ES7(์ตœ์‹ ํ‘œ์ค€) ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ๋•Œ๋ฌธ์— ES5๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ณผ์ •์ด ํ•„์š” ์ด ๊ณผ์ •์„ ํ•ด์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ”๋ฒจ babel์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“  ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๋ฅผ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์ž‘์—…์ด ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์— ์ง„ํ–‰๋˜์–ด์•ผํ•จ ์ด ์—ญํ• ์€ babel-polyfill์ด ๋‹ด๋‹น ๋ฐ”๋ฒจ์˜ ์ฃผ์š” ์—ญํ•  ํŠธ๋ Œ์Šค ํŒŒ์ผ๋Ÿฌ ๋ฐ”๋ฒจ์€ ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์„ฑํ•ด์ฃผ๋Š” ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ๊ตฌ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๋Š” ์›น์‚ฌ์ดํŠธ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ ์›นํŒฉ(webpack)๊ณผ .. 2023. 6. 15.
์›นํŒฉ(Webpack) webpack ๐Ÿ’ก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ชจ๋“ˆ์„ ์ง€์›ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ (ES5), ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์ƒˆ๋กœ์šด ํ‘œ์ค€์ธ ECMAScript6(ES6)๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๋ชจ๋“ˆ์„ ์ง€์›. CommonJS๋ณด๋‹ค ๋ฌธ๋ฒ•์ด ๋” ๊ฐ„๊ฒฐํ•ด์ง ๊ตฌ์กฐ๊ฐ€ staticํ•˜๊ฒŒ ๋ถ„์„ ๊ฐ€๋Šฅํ•˜๊ณ  ์ตœ์ ํ™”๋„ ๋จ. CommonJS๋ณด๋‹ค ์ˆœํ™˜ ์˜์กด์„ฑ ์ง€์›์ด ์ž˜๋จ ๊ทธ๋Ÿฌ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ์—ฌ์ „ํžˆ ํŒŒ์ผ ๋‹จ์œ„ ๋ชจ๋“ˆ์„ ์ž˜ ๋ชจ๋ฆ„. ES6๋Š” ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ง€์›. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋Ÿฐ ๋ชจ๋“ˆํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ. ํ•˜๋‚˜์˜ ์†Œ์Šค๋กœ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด์—ฌ์ฃผ๋Š”๊ฒŒ ์›น์˜ ํŠน์žฅ์  ๋ชจ๋“ˆ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ๋„คํŠธ์›Œํฌ ๋น„์šฉ์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•จ ์ด ๊ณผ์ •์ด ๋ฐ”๋กœ bundling ์›นํŽ™์˜ 4๊ฐ€์ง€ ๊ฐœ๋… ์—”ํŠธ๋ฆฌ // webpack.config.js module.exports = .. 2023. 6. 15.
npm ERR! Cannot read properties of null (reading 'edgesOut') Styled-Components ์„ค์น˜์‹œ ์˜ค๋ฅ˜ ๋ฌธ์ œ ์ƒํ™ฉ styled-components ์„ค์น˜ ๋ฐฉ๋ฒ• - ๊ณต์‹Docs npm install styled-components react ํ”„๋กœ์ ํŠธ์— styled-components๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต์‹ ๋ฌธ์„œ์— ์–ธ๊ธ‰๋œ ์„ค์น˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์™”๋‹ค. npm ERR! Cannot read properties of null (reading 'edgesOut') ๋ฌธ์ œ ์›์ธ latest version of styled-components is v6 but there is some issue while doing npm i styled-components styled-components version6 ์ดํ›„๋กœ ๋‹ค์Œ ๋ช…๋ น์–ด์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ. ๋ฌธ์ œ ํ•ด๊ฒฐ //.. 2023. 5. 14.
[React] font ์ ์šฉ ๋ฐฉ๋ฒ• 1. ํ•„์š”ํ•œ ํฐํŠธ ๋‹ค์šด๋กœ๋“œ Pretendard ๋‚˜์˜ ๊ฒฝ์šฐ font ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด woff2 format์„ ์„ ํƒํ•จ 2. React ํ”„๋กœ์ ํŠธ์— ํฐํŠธ ๋ณต์‚ฌ 3. ํฐํŠธ ์ ์šฉ @font-face { font-family: "PretendardVariable"; src: local("PretendardVariable"),url("/src/assets/fonts/PretendardVariable.woff2") format("woff2"); } Reference React ํฐํŠธ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ• 2023. 1. 28.
[axios] axios 2 axios? ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ Promise ๊ธฐ๋ฐ˜์˜ ํด๋ผ์ด์–ธํŠธ ์›๋ž˜๋Š” “XHR”์ด๋ผ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด AJAX ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋ณด๋‹ค ํŽธ๋ฆฌํ•œ AJAX ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋„์›€์„ ์คŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ํŒจํ‚ค์ง€๋กœ ์‚ฌ์šฉ์ด ๊ฐ„ํŽธํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณต ์„ค์น˜ # npm ์‚ฌ์šฉํ•˜๊ธฐ: $ npm install axios # yarn ์‚ฌ์šฉํ•˜๊ธฐ: $ yarn add axios ์‚ฌ์šฉ axios.get('') //Promise return .then(..) .catch(..) //Axios ์‚ฌ์šฉํ•˜๊ธฐ const URL = '>' async function test(){ const response = await axios.get(URL) const data = response.data console.log(d.. 2023. 1. 27.
[Electron] electron ์•„์ด์ฝ˜ ๋„ฃ๊ธฐ //๋””๋ ‰ํ† ๋ฆฌ์— ์•„์ด์ฝ˜ ํŒŒ์ผ์„ ๋„ฃ์€ ๋’ค ์„ค์ • //electron.js - ๋ฉ”์ธํ”„๋กœ์„ธ์„œ ํŒŒ์ผ const {app, BrowserWindow,ipcMain} = require('electron') const path = require('path') // const fs = require("fs"); function createWindow () { const mainWindow = new BrowserWindow({ width: 528, height: 791, resizable:false, //size ๊ณ ์ • useContentSize :true, //๊ฐ€์šด๋ฐ ์„ค์ • center:true, //์•ฑ ์‹คํ–‰์‹œ ์œˆ๋„์šฐ๋ฅผ ํ™”๋ฉด ์ •์ค‘์•™์— ์œ„์น˜ **icon:path.join(__dirname,'[๋กœ๊ณ  path]'), //์ผ๋ ‰ํŠธ๋ก .. 2023. 1. 25.
[React] console.log(useRef) useRefํ•จ์ˆ˜๋Š” current์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ ์ธ์ž๋กœ ๋„˜์–ด์˜จ ์ดˆ๊ธฐ๊ฐ’์„ current์†์„ฑ์— ํ• ๋‹น ์ด current ์†์„ฑ์€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ์ฒ˜๋Ÿผ React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ๋žœ๋”๋ง ์•ˆ๋จ React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ๋žœ๋”๋ง๋  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด current ์†์„ฑ์˜ ๊ฐ’์ด ์œ ์‹ค๋˜์ง€ ์•Š์Œ Reference React Hooks: useRef ์‚ฌ์šฉ๋ฒ• Hooks API Reference - React 2023. 1. 25.
[React] ref, useRef ref? JS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํŠน์ • DOM์„ ์„ ํƒํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ getElementById, querySelector ๊ฐ™์€ DOM Selector ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ DOM์„ ์„ ํƒ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ DOM์„ ์ง์ ‘ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋ฉด ref๋ฅผ ํ™œ์šฉ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ **ref**๋ฅผ ์‚ฌ์šฉ ํ•  ๋•Œ์—๋Š” **useRef** ๋ผ๋Š” Hook ํ•จ์ˆ˜ ์‚ฌ์šฉ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ **React.createRef ๋ผ๋Š” ํ•จ์ˆ˜ ์‚ฌ์šฉ** ํฌ์ปค์Šค๋ฅผ ์žก์œผ๋ ค๋ฉด nameInput.current.focus() ํ˜•ํƒœ๋กœ ์ž‘์„ฑ const nameInput = useReft(); const onClick = () => { nameInput.current.focus(); } return( ํด๋ฆญ ) use.. 2023. 1. 24.
[React] port ๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋ฐฉ๋ฒ•1. ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ (1ํšŒ์„ฑ) PORT=[์ˆซ์ž] npm run start ๋ฐฉ๋ฒ•2. package.json ์ˆ˜์ • window ... "scripts": { "start": "set PORT=3002 && react-scripts start", } ... ๋ฐฉ๋ฒ•3. ํ”„๋กœ์ ํŠธ๋ช…/node_modules/react-scripts/scripts/start.js ์ˆ˜์ •ํ•˜๊ธฐ const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3002;// ์ˆ˜์ • const HOST = process.env.HOST || '0.0.0.0'; ๋ฐฉ๋ฒ•4. .env ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ณ  port ์„ค์ •ํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๋ช…/.env PORT=3002 ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ npm run start Reference [#. .. 2023. 1. 23.
[axios] axios 1 axios๋ž€? ๋ธŒ๋ผ์šฐ์ €์™€ node.js์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Promise ๊ธฐ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŠน์ง• ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•ด XMLHttpRequests ์ƒ์„ฑ node.js๋ฅผ ์œ„ํ•ด http ์š”์ฒญ ์ƒ์„ฑ Promise API๋ฅผ ์ง€์› ์š”์ฒญ ๋ฐ ์‘๋‹ต ์ธํ„ฐ์…‰ํŠธ ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์š”์ฒญ ์ทจ์†Œ JSON ๋ฐ์ดํ„ฐ ์ž๋™ ๋ณ€ํ™˜ XSRF๋ฅผ ๋ง‰๊ธฐ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ง€์› ์„ค์น˜ npm install axios ์‚ฌ์šฉ ์˜ˆ์‹œ // POST ์š”์ฒญ ์ „์†ก axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' } }); // node.js์—์„œ GET ์š”์ฒญ์œผ๋กœ ์›๊ฒฉ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ axios({ method: 'ge.. 2023. 1. 21.
[npm].npmrc npmrc ํŒŒ์ผ์ด๋ž€? ๐Ÿ’ก npm์—์„œ ์„ค์ •์„ ์ €์žฅํ•ด๋‘๋Š” ํŒŒ์ผ ๋‚ด์žฅ(builtin), ์ „์—ญ(global), ์‚ฌ์šฉ์ž(user), ํ”„๋กœ์ ํŠธ(project) 4๊ฐ€์ง€ ๋ฒ”์œ„์˜ npmrc ํŒŒ์ผ์ด ์กด์žฌ ๋‚ด์žฅ ์„ค์ • npm์ด ์„ค์น˜๋œ ๊ฒฝ๋กœ์— ์žˆ๋Š” npmrc ํŒŒ์ผ์— ๋ช…์‹œ๋จ ๋ชจ๋“  ๊ธฐ๋ณธ ์„ค์ •์„ ๋‹ด๊ณ  ์žˆ์Œ ์ „์—ญ ์„ค์ • ๊ฐ™์€ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž˜ ๊ฑด๋“ค์ง€ ์•Š์Œ ๋ณดํ†ต, ์‚ฌ์šฉ์ž ๋ฒ”์œ„์™€ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„์—์„œ npmrc ํŒŒ์ผ์„ ๋‹ค๋ฃธ ⇒ํŒŒ์ผ ๋ช… ์•ž์— . ์„ ๋ถ™์—ฌ ์ˆจ๊ธด ํŒŒ์ผ๋กœ ์‚ฌ์šฉ ์‚ฌ์šฉ์ž ๋ฒ”์œ„ ์šด์˜ ์ฒด์ œ์˜ ์‚ฌ์šฉ์ž ํ™ˆ(home) ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„ ํ”„๋กœ์ ํŠธ ์ตœ์ƒ์œ„(root) ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„๊ฐ€ ์‚ฌ์šฉ์ž ๋ฒ”์œ„๋ณด๋‹ค ์ข์Œ ⇒ ํ”„๋กœ์ ํŠธ ์„ค์ •์ด ์‚ฌ์šฉ์ž ์„ค์ •๋ณด๋‹ค ์šฐ์„ ์‹œ npm confi.. 2023. 1. 19.
[React] React Hook API Hook ๊ฐœ์š” Hook์€ class๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ state์™€ ๋‹ค๋ฅธ React์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ Hook์€ ๊ณ„์ธต์˜ ๋ณ€ํ™” ์—†์ด ์ƒํƒœ ๊ด€๋ จ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ ๊ธฐ๋ณธ Hook useState useEffect useContext ์ถ”๊ฐ€ Hooks useReducer useCallback useMemo useRef useImperativeHandle useLayoutEffect useDebugValue useDeferredValue useTransition useId library hooks useSyncExternalStore useInsertionEffect ๐Ÿ“ŒState Hook ์—ฌ๋Ÿฌ state ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๊ธฐ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ state hook์„ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•  ์ˆ˜ .. 2023. 1. 18.
[React] React Life Cycle ; ๋ฆฌ์•กํŠธ ์ƒ๋ช…์ฃผ๊ธฐ React๋ž€? javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ React ํŒŒ์ผ๋“ค์˜ ์—ญํ•  index.js src ํด๋”์— ํฌํ•จ ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ HTML ํ…œํ”Œ๋ฆฟ ๋ฐ JavaScript์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜๊ณ  ๋ Œ๋”๋งํ•ด ์‹ค์ œ ํ‘œ์‹œ App.js src ํด๋”์— ํฌํ•จ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ๋“ฑ์ด ์ •์˜ index.html public ํด๋”์— ์žˆ์Œ ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ์ธ index.js์— ๋Œ€์‘๋˜๋Š” ๊ฒƒ HTML ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ ์ง์ ‘ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , index.js์— ์˜ํ•ด ์ผ์–ด๋‚˜ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋จ React Life Cycle React lifecycle ์šฉ์–ด ์šฉ์–ด ์„ค๋ช… ~ will ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ์™€ ๊ด€๋ จ๋œ ์šฉ์–ด ~ did ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ์ดํ›„์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ์™€ ๊ด€๋ จ๋œ ์šฉ์–ด moun.. 2023. 1. 14.
[Electron] Electron + React ์—ฐ๋™ํ•˜๊ธฐ 1. React์— electron ์ ์šฉํ•˜๊ธฐ https://2ssue.github.io/programming/electron-react/ #create-react-appํ›„ electron ์ง‘์–ด๋„ฃ๊ธฐ npm init npm install create-react-app --save npx create-react-app {project_name} cd {project_name} npm install electron --save-dev ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ {project_name} โ”œโ”€โ”€ public # ์ •์  ํŒŒ์ผ. react๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน๋ณ„ํžˆ ๋ณ€๊ฒฝํ•  ๋‚ด์šฉ์€ ์—†๋‹ค. โ”œโ”€โ”€ src # javascript ํŒŒ์ผ. react routing, electron๋กœ๋”ฉ ๋“ฑ์˜ ์ž‘์—…์„ ์ง„ํ–‰. โ”‚ โ”œโ”€โ”€ App.js โ”‚ โ”œโ”€โ”€ in.. 2023. 1. 13.
[Electron]Electron-forge Publishing a GitHub release Electorn-Forge electron forge๋Š” publisher ํ”Œ๋Ÿฌ๊ทธ์ธ Github access token ์ƒ์„ฑํ•˜๊ธฐ electorn forge๋Š” github permission ์—†์ด ์–ด๋–ค repository์—๋„ publish ํ•  ์ˆ˜ ์—†์Œ Forge์˜ github releases ํ—ˆ๊ฐ€๋ฅผ ์œ„ํ•ด authenticated token์ด ํ•„์š”ํ•จ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ public_repo์™€ ํ•จ๊ป˜ PAT๋ฅผ ์ƒ์„ฑํ•ด public repo์— ์ ‘๊ทผํ•ด ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ ๋ฐœ๊ธ‰ ๋ฐ›์€ ๋น„๋ฐ€๋กœ ์œ ์ง€๋˜์–ด์•ผ๋งŒ ํ•จ! forge์—์„œ github publisher ์„ธํŒ…ํ•˜๊ธฐ ๋จผ์ € forge์˜ github publisher ์„ค์น˜ npm install --save-dev @electron-fo.. 2023. 1. 12.