๐Ÿ‘ฉ‍๐Ÿ’ป 93

[CSS3/tailwindCSS] background-image๋ฅผ ํ†ตํ•ด ์ปค์Šคํ…€ ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์ „์ฒด ๋™์˜ ์šฐ์„  ์ œ์ผ ๋จผ์ € ํƒœ๊ทธ์˜ type ์†์„ฑ์„ checkbox๋กœ ๋‘”๋‹ค. ์œ„ ์ฝ”๋“œ๋Š” ์ „์ฒด ๋™์˜๋ฅผ ์œ„ํ•œ checkbox input ์˜ˆ์ œ ์ฝ”๋“œ. TailwindCSS์™€ ์„ž์–ด ์จ์„œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด, sr-only : ๋ผ๋ฒจ ๋‚ด ํƒœ๊ทธ ํ…์ŠคํŠธ๋Š” ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์ฝํžˆ๋„๋ก ํ•œ๋‹ค. rounded-full : border-radius: 50%;์™€ ๋™์ผ. ์ฒดํฌ ๋ฐ•์Šค ์ด๋ฏธ์ง€๋ฅผ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ ๋‹ค. checked:bg-green-default : green-default๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์œผ๋กœ tainwind.config.js ํŒŒ์ผ์— ๋“ฑ๋กํ•ด๋‘” ์ƒ‰์ƒ์œผ๋กœ background-color๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค. ๋‹จ, checked๊ฐ€ true์ผ ๋•Œ๋งŒ ํ™œ์„ฑํ™”ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. appearance-none : appearance: none;๊ณผ ๋™์ผํ•œ..

[react-router-dom] React Router v6์— ๋„์ž…๋œ ์ƒˆ๋กœ์šด Navigate API - Redirect ๋Œ€์ฒดํ•˜๊ธฐ

์ตœ๊ทผ์— react-router-dom์„ ์“ฐ๋ ค๊ณ  ๋ณด๋‹ˆ ๋ฒ„์ „ ์—…์ด ๋˜์–ด์„œ ๊ธฐ์กด์— ์•Œ๋˜ v5์˜ ์‚ฌํ•ญ๋“ค์ด ๋งŽ์ด ๋ฐ”๋€ ๊ฒƒ์„ ์•Œ์•˜๋‹ค. ๊ฐ€๋ น Switch๊ฐ€ Routes๋กœ, Redirect๊ฐ€ Navigate ๋“ฑ์œผ๋กœ ๋Œ€์ฒด๋˜๋Š” ๊ฒƒ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ข€ ๋” ํ™•์‹คํžˆ ์ดํ•ด ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ๋„ ํ–ˆ๊ณ , ๊ธฐ์กด rediect ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Navigate API๊ฐ€ ๋„์ž…๋˜๊ธฐ๋„ ํ–ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ํ•„์š”ํ•œ ๋‚ด์šฉ๋งŒ ์ •๋ฆฌํ•ด๋ณด์•˜๋Š”๋ฐ, ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๊ณณ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋งํ•˜๊ธธ, ์šฐ์„  v5์™€์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€๋Š” ์กฐ๊ธˆ ์‹œ์ผ์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€๋˜๋Š” routes๊ฐ€ ์žˆ์„ ๊ฒƒ์ธ์ง€, ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ..! We recommend waiting fo..

[TypeScript] ์ ์žฌ์ ์†Œ์— interface์™€ type์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

๋ช‡ ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๊ณ  ๋‚˜์„œ๋ถ€ํ„ฐ๋Š” ์ด์ œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋˜ ์ฒด๊ณ„์ ์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์จ์˜จ ๊ฒŒ ์•„๋‹ˆ๋ผ, ์“ฐ๋Š” ํƒ€์ž…๋งŒ ์“ฐ๊ณ , ๊ทธ๋•Œ ๊ทธ๋•Œ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ์ฒด๋“ํ•œ ๊ฒƒ์ธ์ง€๋ผ ์‹œ๊ฐ„์ด ๋‚˜๋ฉด ์ž˜ ์ •๋ฆฌ๋œ ๋ฌธ์„œ๋“ค์„ ์ฝ์œผ๋ฉด์„œ, ๋ฌธ๋ฒ•์„ ์ตํžˆ๋ ค๊ณ  ํ•œ๋‹ค. React Native๋ฅผ ํ•  ๋•Œ ๊ฐ€์žฅ TS๋ฅผ ๋งŽ์ด ์ผ๋Š”๋ฐ, ์ด๋•Œ๋Š” ๊ฑฐ์˜ interface๋กœ ์ ์ฒ ํ•˜๋‹ค์‹œํ”ผํ–ˆ๋‹ค. type๊ณผ interface๊ฐ€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๋”ฑ ๊ฑฐ๊ธฐ๊นŒ์ง€์–ด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด๋ดค๋‹ค. Interface interface๋Š” object ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ๋ฐ›๋Š” user๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด ์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ ์•„๋ž˜์ฒ˜๋Ÿผ interface๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. interfa..

[๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ] 1ํ•™๋…„ 1ํ•™๊ธฐ ์„ฑ์ ์šฐ์ˆ˜์žฅํ•™๊ธˆ, ์ฆ์ง„ ์„ ๋ฐœ๋กœ ํ•™๋น„ 50% ๋ฉด์ œ๋ฐ›์•˜๋‹ค.

2022.01.20 - [๐Ÿ‘ฉ‍๐Ÿ’ป/KNOU] - [๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ] 2022๋…„ 1ํ•™๋…„ 2ํ•™๊ธฐ ์ˆ˜๊ฐ•์‹ ์ฒญ [๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ] 2022๋…„ 1ํ•™๋…„ 2ํ•™๊ธฐ ์ˆ˜๊ฐ•์‹ ์ฒญ ์‚ฌ์‹ค ์›๋ž˜ ๋‚˜๋Š” ์ „๊ณต์ด ์–ด๋ฌธ๊ณ„์—ด์ด์—ˆ๋‹ค. ํ•œ ์‹ญ ๋…„๋„ ๋” ์ „์—๋Š” ๋ฒˆ์—ญํ•˜๊ฒ ๋‹ค๊ณ , ์ด๋Ÿฐ ์ €๋Ÿฐ ๊ณต๋ถ€๋„ ํ–ˆ๋Š”๋ฐ, ํƒ€๊ฒŸ ์–ธ์–ด์— ๊ทธ๋‹ค์ง€ ๋งค๋ ฅ์„ ๋ชป ๋Š๋ผ๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์˜์–ด๋งŒ ์ญ‰ ํ•ด์™”๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ปดํ“จํ„ฐ ์‚ฌ uiyoji-journal.tistory.com 2022๋…„ 1ํ•™๊ธฐ ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ๋งˆ์น˜๊ณ  ์ด์ œ ๋“ฑ๋ก ๊ธฐ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ, ๊ฐœํŽธ๋œ ๊ต์žฌ๋Š” ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ๋“ฑ ์‹ ํ•™๊ธฐ๋ฅผ ์ค€๋น„ํ•˜๋‹ค๊ฐ€, ์„ฑ์  ์šฐ์ˆ˜ ์žฅํ•™๊ธˆ ์„ ๋ฐœ ๋‚ด์—ญ์„ ์ด์ œ ํ™•์ธํ–ˆ๋‹ค! ์ง์ „ ํ•™๊ธฐ ์„ฑ์ ์€ [๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต ํ™ˆํŽ˜์ด์ง€ -> ์ƒ๋‹จ์˜ ๋งž์ถค์ •๋ณด -> ํ•™์‚ฌ์ •๋ณด -> ๋‹นํ•ดํ•™๊ธฐ ์„ฑ์  ์กฐํšŒ] ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ง‰์ƒ..

[๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ] 2022๋…„ 1ํ•™๋…„ 2ํ•™๊ธฐ ์ˆ˜๊ฐ•์‹ ์ฒญ

์‚ฌ์‹ค ์›๋ž˜ ๋‚˜๋Š” ์ „๊ณต์ด ์–ด๋ฌธ๊ณ„์—ด์ด์—ˆ๋‹ค. ํ•œ ์‹ญ ๋…„๋„ ๋” ์ „์—๋Š” ๋ฒˆ์—ญํ•˜๊ฒ ๋‹ค๊ณ , ์ด๋Ÿฐ ์ €๋Ÿฐ ๊ณต๋ถ€๋„ ํ–ˆ๋Š”๋ฐ, ํƒ€๊ฒŸ ์–ธ์–ด์— ๊ทธ๋‹ค์ง€ ๋งค๋ ฅ์„ ๋ชป ๋Š๋ผ๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์˜์–ด๋งŒ ์ญ‰ ํ•ด์™”๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ปดํ“จํ„ฐ ์‚ฌ์ด์–ธ์Šค๋ฅผ ํ•˜๊ฒŒ ๋˜๊ณ , ์ง€๊ธˆ์€ ์›น/์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด ์žˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ๊ทธ๋•Œ ๊ทธ๋•Œ ์—…๋ฐ์ดํŠธ๋œ ์‹ ๊ธฐ์ˆ ๊ณผ ๊ณต์‹ ๋‹คํ๋จผํŠธ์— ์ถฉ์‹คํ•˜๋ฉด ์–ด๋Š ์ •๋„ ํ•ด๊ฒฐ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์ง€๋งŒ ๋” ๋ฐฐ์šฐ๊ณ  ์‹ถ์–ด์„œ ์ปดํ“จํ„ฐ ๊ณผํ•™๊ณผ๋ฅผ ๋ฐฉํ†ต๋Œ€๋ฅผ ํ†ตํ•ด ์ „๊ณตํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์–ด๋Š ์ •๋„ ์‹œ๊ฐ„์˜ ์—ฌ์œ ๊ฐ€ ์ƒ๊ธด ์ž‘๋…„ ์—ฌ๋ฆ„, 1ํ•™๋…„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ๋๋Š”๋ฐ, ๋Œ€์ฒด๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ํŽธ์ž…์ƒ์œผ๋กœ ๋“ค์–ด์˜ค๋Š”๋ฐ, 1ํ•™๋…„๋ถ€ํ„ฐ ํ•™๊ต๋ฅผ ๋‹ค๋‹ˆ๋ ค๋‹ˆ, ์–ด๋–ป๊ฒŒ ์ผ๊ณผ ๊ณต๋ถ€ ์‹œ๊ฐ„์„ ์กฐ์œจํ•˜์ง€๋ผ๋Š” ์ƒ๊ฐ ๋ฐ˜, ๋Œ€์ฒด ์–ธ์ œ...์กธ์—…ํ•˜์ง€ ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋ฐ˜์ด์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ถ”ํ›„์— ํ•˜๊ณ  ์‹ถ์€ ๊ณต๋ถ€๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ํ•™์‚ฌ ..

[TypeScript] TS2531 Object is possibly 'null'๊ณผ Optional Chaining Operator(์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž) (?.)

์ž‘๋…„ ๋ง๋ถ€ํ„ฐ๋Š” ์›น ๊ฐœ๋ฐœ๋ณด๋‹ค๋Š” ์•ฑ ๊ฐœ๋ฐœ์„ ๋” ์—ด์‹ฌํžˆ ํ•˜๋Š” ํ•ด๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†์–ด์„œ, ๋˜๋„๋ก ๋นจ๋ฆฌ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” MVP ์•ฑ์€ ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ+์—‘์Šคํฌ ์Šคํƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, Expo ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” expo-constants library ์‚ฌ์šฉ ์ค‘์— ๋งŒ๋‚œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์—๋Ÿฌ์ด๋‹ค. ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ์˜ Aniamted ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด backgroundColor๋ฅผ ์ง€์ •ํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ์ด๋•Œ App.json์— ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ ์‹œ์Šคํ…œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ๊ฐ€์ง€๊ณ  ์˜ค๋ ค๊ณ  ํ–ˆ๋‹ค. ์ฃผ์„์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์—์„œ ๋ณด๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋“ค์ด ์ฒด์ด๋‹๋˜์–ด ํ‚ค๋“ค์„ ์ž˜ ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ, ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ App.json์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์„œ ํ™•์ธํ•ด๋ดค๋‹ค. "splash": { "image": "./src/assets/images/splash.png"..

[CSS] writing-mode: vertical-rl, vertical-lr

ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ๋””์ž์ธ์œผ๋กœ ๋œ ํฌ์Šคํ„ฐ๋ฅผ ์›น์— ๋„์šฐ๊ฒŒ ๋˜์–ด์„œ ์„ธ๋กœ๋กœ ๊ธ€์ž๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋˜ ์ค‘์— writing-mode ์†์„ฑ์„ ์•Œ๊ฒŒ ๋๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ํ•ด๋‹น ์†์„ฑ์„ ์“ธ ์ผ์ด ์—†์—ˆ๋Š”๋ฐ, ์›๋ž˜ ์“ฐ๊ณ ์ž ํ–ˆ๋˜ ๊ฐ’์€ deprecated๋˜์—ˆ์ง€๋งŒ, ์ถ”ํ›„์— ๋ ˆํผ๋Ÿฐ์Šค์šฉ์œผ๋กœ ๋ธ”๋กœ๊ทธ์— ๋‚จ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค. Can I use์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ 2021๋…„ 12์›” ๊ธฐ์ค€ Opera Mini๋งŒ ์ œ์™ธํ•˜๊ณ  ๊ฑฐ์˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ์ค‘ sideways-lr, sideways-rl์€ ํŒŒ์ด์–ดํญ์Šค๋งŒ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. A B C D E A B C D E ๊ฐ€ ๋‚˜ ๋‹ค ๋ผ ๋งˆ ๊ฐ€ ๋‚˜ ๋‹ค ๋ผ ๋งˆ .alignment-lr { writing-mode: vertical-lr } .alignment-rl { writing-mode: vert..

[leetCode] Add Binary

Add Binary Input: a = "11", b = "1" Output: "100" Input: a = "1010", b = "1011" Output: "10101" String ํƒ€์ž…์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ด์ง„์ˆ˜๋ฅผ ๋”ํ•ด์„œ String ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. /** * @param {string} a * @param {string} b * @return {string} */ // First Try var addBinary = function(a, b) { let carry = 0 const res = [] const aLen = a.length; const bLen = b.length; for (let i = aLen - 1, j = bLen - 1; 0 = 0 ? Number(a[i]) : 0; let..

[Git] deleteํ•œ ํŒŒ์ผ๋งŒ ์Šคํ…Œ์ด์ง•์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•, ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ• git add/--deleted/git checkout commit id/revert

๋ฆฌํŒฉํ† ๋งํ•  ์ผ์ด ์žˆ์–ด์„œ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์‚ญ์ œํ–ˆ๋Š”๋ฐ, ์ปค๋ฐ‹์„ ์œ„ํ•ด ์Šคํ…Œ์ด์ง•ํ•  ๋•Œ ์ผ์ผ์ด ํ•˜๋‚˜์”ฉ ํ•ด์ฃผ๊ธฐ ๊ท€์ฐฎ์•„์„œ ์ฐพ์•„๋ณด๋‹ˆ ํ•œ ์ค„์˜ ๋ช…๋ น์–ด๋กœ deleted๋œ ํŒŒ์ผ๋“ค๋งŒ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. git add `git ls-files --deleted` ํ…Œ์ŠคํŠธ ํด๋”์™€ ํ…Œ์ŠคํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ์‚ญ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ D ๋ผ๋Š” ํ‘œ์‹œ์™€ ํ•จ๊ป˜ ์‚ญ์ œ๋œ change ๊ธฐ๋ก์ด ๋ณด์ด๋Š”๋ฐ, ์ด๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ, ์œ„์— ์จ๋‘” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ Staged Changes๋กœ ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Test๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด์—ˆ์œผ๋‹ˆ,git log๋ฅผ ํ†ตํ•ด์„œ ๋˜๋Œ์•„๊ฐˆ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•œ๋‹ค. ์ƒ๋‹จ์˜ ์ง€์šฐ๊ณ ์ž ํ•˜๋Š” commit์ด 819545a์ด๋ฏ€๋กœ, ๊ทธ ์ด์ „ ์ปค๋ฐ‹ id์ธ 05ecdc2๋ฅผ ํ™œ์šฉํ•ด git ..

SOP(Same-Origin-Policy), CORS(Cross-Origin-Resource-Sharing)

์ž์ฃผ ๋งˆ์ฃผ์น˜๋Š” CORS ์˜ค๋ฅ˜ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ ์ž์ฃผ ๋งˆ์ฃผ์น˜๋Š” ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜๋กœ CORS๊ฐ€ ์žˆ๋‹ค. ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ API๋ฅผ ๊ฐ€์ ธ๊ฐ€ ์“ธ ๋•Œ๋„ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ–ˆ๊ณ , ํ˜„์—…์—์„œ ๋ฐฑ์—”๋“œ/ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฐœ๋ฐœํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ํ•œ ์ค„ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ํ”„๋ก์‹œ๋ฅผ ์šฐํšŒํ•˜๋„๋ก ํ•˜๋ฉฐ API๋ฅผ ์“ฐ๊ฑฐ๋‚˜(a), webpack ์„ค์ • ํŒŒ์ผ์— ๊ฐœ๋ฐœ ์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ proxy ์„ค์ •(b)์„ ํ•ด์ฃผ๊ณค ํ–ˆ๋‹ค. ์ข€ ๋” ํฐ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ CORS ํ•ด๊ฒฐ์„ ์œ„ํ•ด ํ˜‘์กฐ๋ฅผ ์š”์ฒญํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค. (์‚ฌ์ „ ์ง€์‹์ด ๋ถ€์กฑํ–ˆ์„ ๋•Œ ํ”„๋ก ํŠธ์—”๋“œ ๋‹จ์—์„œ ์‹ค์ˆ˜์ธ๊ฐ€ ์‹ถ์–ด์„œ ์˜จ๊ฐ– ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉด์„œ ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ•ด๋ดค์ง€๋งŒ AWS ์„œ๋ฒ„ ์„ค์ • ํŽ˜์ด์ง€์—์„œ ๋‹จ ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ..