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

์ „์ฒด ๊ธ€166

Firebase Hosting ์‹œ GitHub Actions ์‚ฌ์šฉํ•ด์„œ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ CI/CD๋ž€? CI (์ง€์†์  ํ†ตํ•ฉ, Continuous Integration) ๊ฐœ๋ฐœ์ž๋“ค์ด ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊นƒ์— ํ‘ธ์‹œํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ํ†ตํ•ฉํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋ฉฐ, ๋น ๋ฅธ ์˜ค๋ฅ˜ ๊ฒ€์ถœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ž‘์—… ์‹คํ–‰ ex) Jenkins, Travis CI, CircleCI, GitHub Actions CD (์ง€์†์  ๋ฐฐํฌ, Continuous Deployment) ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ ์ฃผ์š” ์ด์  ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์†๋„ ํ–ฅ์ƒ ์‹ ์†ํ•œ ์˜ค๋ฅ˜ ๊ฐ์ง€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค GitHub Actions๋ž€? GitHub์—์„œ ์ œ๊ณตํ•˜๋Š” CI/CD ๋„๊ตฌ.. 2023. 9. 12.
[๊ณต์œ ] ๊ฐœ์ธ ์—…๋ฌด ํšŒ๊ณ  ํ…œํ”Œ๋ฆฟ ํ‡ด์‚ฌ๋ฅผ ์•ž๋‘๊ณ  ํ˜„์žฌ๊นŒ์ง€ ์ง„ํ–‰ํ•œ ์—…๋ฌด๋“ค์— ๋Œ€ํ•ด ์ž์ฒด ํšŒ๊ณ ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋˜ ์ค‘ ํ…œํ”Œ๋ฆฟ์„ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ดค๋‹ค. 1. ์—…๋ฌด ์ง„ํ–‰ - ๋‚ด๊ฐ€ ์ด ์—…๋ฌด๋ฅผ ์™œ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ๊ณผ์ •, ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜์˜€๋‹ค. 2. KPT - KPT ํšŒ๊ณ ๋ก ์€ ์œ ๋ช…ํ•ด์„œ ๋‹ค๋“ค ์•Œ ๊ฒƒ ๊ฐ™๋‹ค. - ํ…œํ”Œ๋ฆฟ์—๋Š” KPT๋ฅผ ๋ชจ๋‘ ๋„ฃ์—ˆ์ง€๋งŒ, ์—…๋ฌด์˜ ํŠน์„ฑ์— ๋งž์ถฐ์„œ ๋‚ด์šฉ์ด ์—†๊ฑฐ๋‚˜ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ์ƒ๋žตํ•˜๊ณ  ๊ธฐ๋กํ•˜์˜€๋‹ค. 3. ์ธ์‚ฌ์ดํŠธ - ์‚ฌ์‹ค ์ด ๋ถ€๋ถ„์ด ํ•ต์‹ฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค. - ๊ธฐ์ˆ ์ ์ธ ๋ถ€๋ถ„ ์™ธ์—๋„ ๋น ์ง์—†์ด ์ ์—ˆ๋‹ค. (ex. ์˜์‚ฌ์†Œํ†ต, ๊ฐˆ๋“ฑ ๊ด€๋ฆฌ ๋“ฑ) ํ˜น์‹œ ํ•„์š”ํ•˜์‹  ๋ถ„์ด ๊ณ„์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€์„œ ํ…œํ”Œ๋ฆฟ ๋ณต์ œํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค :) https://maze-slouch-c9c.notion.site/cfdefed202104227a4be8961d7aac08.. 2023. 8. 15.
styled-components์™€ emotion์— ๋Œ€ํ•œ ๊ณ ์ฐฐ ํ˜„์žฌ ๊ทผ๋ฌด ์ค‘์ธ ๊ณณ์—์„œ ์Šคํƒ€์ผ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ emotion์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. (๊ทผ๋ฐ ๋˜ styled-components๋„ ์ผ๋ถ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.) ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์ด๊ณณ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „๊นŒ์ง€๋Š” styled-components๋งŒ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์ ์ด ๊ถ๊ธˆํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ฝ”๋“œ ์ƒ ํฌ๊ฒŒ ๋‹ค๋ฅธ ์ ์ด ๋ณด์ด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ๋™๋ฃŒ ๋ถ„๊ป˜ ์งˆ๋ฌธํ–ˆ์„ ๋•Œ ๋Œ์•„์˜จ ๋‹ต์€ "emotion์ด ์ข€ ๋” ๊ฐ€๋ฒผ์›Œ์„œ์š”~" ์˜€์—ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋‹ค๋ฅธ ํšŒ์‚ฌ๋“ค ์ฑ„์šฉ ๊ณต๊ณ  ํŽ˜์ด์ง€์— ์ ํ˜€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๋ฉด, styled-component์™€ emotion์„ ๊ฐ๊ฐ ๊ท ๋“ฑํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋‘˜์ด ๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋‹ค๋ฅธ ๊ฑด์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ์Šคํƒ€์ผ ๊ธฐ๋Šฅ ๋ฐ ๋ฌธ๋ฒ• ์šฐ์„  ์ „๋ฐ˜์ ์ธ ์Šคํƒ€์ผ ๊ธฐ๋Šฅ์€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š.. 2023. 8. 13.
[Next.js] Google Maps API๋กœ ์ง€๋„์— ์› ๊ทธ๋ฆฌ๊ธฐ (๋‹น๊ทผ๋งˆ์ผ“ ๋‚ด ๋™๋„ค ์„ค์ • ๋”ฐ๋ผํ•ด๋ณด๊ธฐ) ๋‹น๊ทผ๋งˆ์ผ“์˜ ๋‚ด ๋™๋„ค ์„ค์ • ๊ธฐ๋Šฅ์„ ๋ณด๋ฉด, ํ•˜๋‹จ ๋ฐ”๋ฅผ ์›€์ง์ผ ๋•Œ๋งˆ๋‹ค ์ง€๋„์— ํ‘œ์‹œ๋œ ์˜์—ญ์˜ ๋„“์ด์™€ ์ง€๋„ ์Šค์ผ€์ผ์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋‹น๊ทผ๋งˆ์ผ“์ฒ˜๋Ÿผ ์ง€์—ญ ํŠน์„ฑ์— ๋งž์ถ”์–ด ์ž์„ธํ•œ ๋‹ค๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด๋ฆฌ๊ณ , ์ง€์—ญ๋ณ„๋กœ ์ค‘์‹ฌ ์ขŒํ‘œ๋ฅผ ์ •ํ•˜๊ณ , ์ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์›์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์„ ํ•œ ๋ฒˆ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. 0. Google Maps API ํ‚ค ๋ฐ›๊ธฐ ๊ฐ€์ž…ํ•ด์„œ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ›์œผ๋ฉด ๋œ๋‹ค. https://developers.google.com/maps?hl=ko Google Maps Platform | Google for Developers Google Maps Platform ์„ค๋ช… developers.google.com 1. ์„ค์น˜ํ•˜๊ธฐ Google Maps API Docs๋Š” ์ˆœ์ˆ˜ javascript๋กœ ์„ค๋ช…์„ ํ•ด์ฃผ๊ณ  ์žˆ๊ธฐ ๋•Œ.. 2023. 6. 28.
[Next.js] ๋ฒˆ์—ญ ๊ธฐ๋Šฅ (๋‹ค๊ตญ์–ด) ์ ์šฉํ•˜๊ธฐ (i18next) ํ•œ๊ตญ์—์„œ ์šด์˜ ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ํ–ฅํ›„ ์™ธ๊ตญ๊นŒ์ง€ ํ™•์žฅํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ๊ตญ๊ฐ€์˜ ์–ธ์–ด ์ ์šฉ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋Ÿด๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ํŽ˜์ด์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์ผ์ผํžˆ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ next-i8next๋ผ๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ์˜ ๊นƒํ—ˆ๋ธŒ ๋ฆฌ๋“œ๋ฏธ์— ๋ฌธ์„œ๊ฐ€ ์ƒ์„ธํžˆ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด ์ด๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ์ง„ํ–‰ํ–ˆ๋‹ค. https://github.com/i18next/next-i18next GitHub - i18next/next-i18next: The easiest way to translate your NextJs apps. The easiest way to translate your NextJs apps. Contribute to i18next/next-i18next development by creating an accoun.. 2023. 5. 16.
SyntaxError: Cannot use import statement outside a module โ€ป SyntaxError: Cannot use import statement outside a module redux๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ชจ๋“ˆ์„ ๋งŽ์ด ์“ฐ๋‹ค ๋ณด๋‹ˆ, ์ด ์—๋Ÿฌ๋ฅผ ๋‹ค์†Œ ๋งŽ์ด ๋งŒ๋‚ฌ๋‹ค. ์ด๊ฒƒ์€ default๋กœ export ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋ฅผ {}๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋‚ด๋ณด๋‚ผ ๋•Œ ๋‚˜์˜ค๋Š” ์—๋Ÿฌ์ด๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด, export ํ•จ์ˆ˜ ๋กœ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์‚ฌ์šฉํ•  ๋•Œ import { ํ•จ์ˆ˜ } from './๊ฒฝ๋กœ' ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ณ , export default ํ•จ์ˆ˜ ๋กœ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์‚ฌ์šฉํ•  ๋•Œ import ํ•จ์ˆ˜ from '/๊ฒฝ๋กœ' ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค 2023. 5. 10.
redux-persist๋กœ localStorage ๊ด€๋ฆฌํ•˜๊ธฐ ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ redux๋ฅผ ์ƒˆ๋กœ ๋„์ž…ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฏธ๋ฆฌ ๊ณต๋ถ€ํ•˜๋Š” ์ค‘์— ๊ตฌ๊ธ€๋งํ•ด์„œ ์ฐพ์•„๋‚ธ ๊ธ€๋“ค๊ณผ ์ฑ—์ง€ํ”ผํ‹ฐ์˜ ๋„์›€์„ ๋ฐ›์œผ๋ฉฐ ํ•ด๋ณด๋˜ ์ค‘์— ๊ทธ ๊ณผ์ •์„ ์ •๋ฆฌํ•˜๊ณ  ๋ฐœ์ƒํ–ˆ๋˜ ์—๋Ÿฌ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. redux-persist๋ž€? redux์˜ ์ƒํƒœ๋Š” ์ผ์‹œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋ชจ๋“  ์ƒํƒœ๊ฐ’๋“ค์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ์‚ฌ๋ผ์ ธ๋ฒ„๋ฆฌ๋ฉด ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด, redux-persist๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ redux์˜ ์ƒํƒœ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” redux store ๊ฐ’๋“ค์„ ์˜๊ตฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋”๋ผ๋„ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ ์ƒํƒœ ์ง€๊ธˆ์€ ํŠน๋ณ„ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ.. 2023. 5. 10.
[Redux] Redux ์‚ฌ์šฉํ•ด์„œ Counter ๊ตฌํ˜„ํ•˜๊ธฐ (Next.js + TypeScript) ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๋ฌธ์„œ๋ฅผ ๋”ฐ๋ผํ•˜๋ฉด์„œ redux ํŠœํ† ๋ฆฌ์–ผ์„ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ redux ํŠœํ† ๋ฆฌ์–ผ์ด (์ด๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ) React์™€ JavaScript ๊ธฐ๋ฐ˜์œผ๋กœ ์ง„ํ–‰๋˜์–ด ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค๋Š” ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ ธ๋‹ค (ํ—ค๋งค๋А๋ผ....), ๊ทธ๋ž˜์„œ ๋‚˜๋„ ์•ž์œผ๋กœ ์•ˆ ํ—ค๋งค๊ณ , ๋˜ ๋‚˜์ฒ˜๋Ÿผ Next Typescript Redux๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐฐ์šฐ๋Š”.. ์‹œ๋„ํ•˜๋Š” ... ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด์„œ ๊ธฐ๋กํ•ด๋ณธ๋‹น. 0. ์„ค์น˜ํ•˜๊ธฐ 1) next ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ : npx create-next-app ํ”Œ์ ์ด๋ฆ„ --typescript 2) redux ์„ค์น˜ : npm install react-redux next-reddux-wrapper 3) redux-devtools ์„ค์น˜ : npm install react-devtools-exte.. 2023. 5. 8.
Next.js + TypeScript + Redux ์‹œ์ž‘ํ•˜๊ธฐ (+ redux-devtools ์‚ฌ์šฉ) 1. Next.js ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ npx create-next-app ํ”Œ์ ์ด๋ฆ„ --typescript ์ด ๋•Œ, ํ„ฐ๋ฏธ๋„์— ESLint ์“ธ๊ฑฐ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋Š”๋ฐ, yes๋ผ๊ณ  ๋Œ€๋‹ตํ•˜๋ฉด ts ๊ด€๋ จ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค๋„ ์•Œ์•„์„œ ๋‹ค์šด๋ฐ›์•„์ค€๋‹ค. ๋งŒ์•ฝ์— ์•ˆ ๊น”์•„์ค€๋‹ค๋ฉด, ์ง์ ‘ ๊น”์•„์ฃผ๋ฉด ๋œ๋‹ค. npm install --save-dev typescript @types/react @types/node 2. Redux ์„ค์น˜ํ•˜๊ธฐ next์—์„œ redux๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, 2๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. npm install react-reduxnpm install next-redux-wrapper 3. redux devtools redux devtools๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ˜„์žฌ ์Šคํ† ์–ด์˜ ์ƒํƒœ๋ฅผ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ์•ก์…˜๋“ค์ด ๋””์ŠคํŒจ.. 2023. 5. 7.