ํ”„๋กœ์ ํŠธ ํŒ€์› ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“œ๋Š” ๋ฒ• ๋ฐฐ์šฐ๊ธฐ(typescript + clsx)
ยท
Frontend
0. ์ด๋ฒˆ ์ฃผ๋Š” ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.ํ˜„์žฌ ํ”„๋ก ํŠธ 2๋ช…, ๋ฐฑ์—”๋“œ 1๋ช…, AI 1๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ์ ํŠธ์— ์ฐธ๊ฐ€ ์ค‘์ด๋‹ค. ๋‚˜๋ž‘ ๊ฐ™์ด ์›น ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ฐธ๊ฐ€ํ•˜๋Š” ์นœ๊ตฌ๋Š” ๊ต๋‚ด ๊ฐœ๋ฐœ๋™์•„๋ฆฌ์™€ ์—ฐํ•ฉ ๊ฐœ๋ฐœ๋™์•„๋ฆฌ์—์„œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉฐ ๊ฒฝํ—˜์น˜๋ฅผ ๋งŽ์ด ์Œ“์•„์„œ ๊ฐœ๋ฐœ์— ๋Šฅํ†ตํ•˜๋‹ค. ์ด ์นœ๊ตฌ์™€ ์ด๋ฒˆ ์ฃผ์—๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์นœ๊ตฌ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊นŒ? ์นœ๊ตฌ์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.1. ํด๋”(ํŒŒ์ผ) ๊ตฌ์กฐ๋ถ€ํ„ฐ ํ™•์ธํ•˜์žsrc ์•ˆ์— components ํด๋”๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™์€๋ฐ, common components๋“ค์„ ์ €์žฅํ•  common ํด๋”๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ , ๋„๋ฉ”์ธ๋ณ„๋กœ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋“ค์„ ๋ถ„๋ฆฌํ•œ๋‹ค.input ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์นœ๊ตฌ๋Š” components/common ์•ˆ์—..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘๊ธฐ๋Šฅ๊ฐœ๋ฐœ’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/425861. ๋‚˜์˜ ํ’€์ด์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ฝ์„ ๋•Œ๋Š” ์กฐ๊ธˆ ๋ง‰๋ง‰ํ–ˆ์—ˆ๋‹ค. ๋„๋Œ€์ฒด ๋ญ˜ ํ•˜๋ผ๋Š”๊ฑฐ์ง€?progressses ๋ฐฐ์—ด๊ณผ speeds ๋ฐฐ์—ด์ด ์žˆ๋‹ค.๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜๋Š” ์žˆ๋Š”๋ฐ๊ทธ๋Ÿฌ๋ฉด ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ๊ฐ™์ด ๋ฐฐํฌ๋œ๋‹ค.๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ํ–ˆ๋ƒ๋ฉด,100์—์„œ progesses๋ฅผ ๋บ€ left_progresses ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.left_progresses๋ฅผ speeds๋กœ ๋‚˜๋ˆˆ ๊ฐ’(์ด ๋•Œ ์˜ฌ๋ฆผ์„ ํ•ด์•ผํ•œ๋‹ค(ceil ์‚ฌ์šฉ))์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— push ํ•œ๋‹ค.๊ฐ’๋“ค์ด ๋“ค์–ด๊ฐ„ ๋ฐฐ์—ด(days)๋ฅผ ์ˆœํšŒํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” index์˜ ๊ฐ’์„ ๋ณ€์ˆ˜ standar..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/12906 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์Šคํƒ์ด ์—†๋‚˜?์Šคํƒ์„ ํ™œ์šฉํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ ๊ฐ™์•˜๊ณ , ๋งŒ์•ฝ C++๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค๋ฉด STL stack์„ ํ™œ์šฉํ•ด์„œ ๊ธˆ๋ฐฉ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค.ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋„ ์Šคํƒ์ด ์žˆ๋‚˜? ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ๋ฐฐ์—ด์„ ํ™œ์šฉํ•ด์„œ ์Šคํƒ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ๋งŽ์ด ๋‚˜์™”๋‹ค. ๊ทผ๋ฐ ๊ทธ๋Ÿฌ์ง€๋ง๊ณ  ๋ฐ”๋กœ ๋ฐฐ์—ด์„ ์“ฐ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ–ˆ๋‹ค.2. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋žฉํŠธ ๋ฐฐ์—ด์—๋Š” top์ด ์—†๋‹ค.ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‚ด๊ฐ€ ๋ฌด์˜์‹์ ์œผ๋กœ top์„ ํ™œ์šฉํ–ˆ๋Š”๋ฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์— .top์„ ๋ถ™์—ฌ๋ดค์ž ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.top ๋Œ€์‹  ‘๋ฐฐ์—ด.length - 1’์„ ๋„ฃ์œผ๋ฉด ์–ด..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] '์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜' ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/425761. ๋‹ต์€ ๋งž์•˜์ง€๋งŒ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์— ํ†ต๊ณผ๋ฅผ ๋ชปํ–ˆ๋‹ค์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ participant์— ์žˆ๋Š” ์ด๋ฆ„์ด completion์— ์—†์œผ๋ฉด ๊ทธ ์ด๋ฆ„์„ return ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ฐธ๊ฐ€์ž ์ค‘์— ๋™๋ช…์ด์ธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊ฐํ•ด์•ผ ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ participant์— ํ•ด๋‹น ์ด๋ฆ„์ด 2๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๊ณ , completion ๋ฐฐ์—ด์— ์กด์žฌํ•˜๋Š” ํ•ด๋‹น ์ด๋ฆ„์˜ ๊ฐœ์ˆ˜๊ฐ€ participant ๋ฐฐ์—ด์— ์กด์žฌํ•˜๋Š” ํ•ด๋‹น ์ด๋ฆ„์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ์ ๋‹ค๋ฉด ํ•ด๋‹น ์ด๋ฆ„์„ return ํ–ˆ๋‹ค.function solution(participant, completion) { for (var i = 0; i pa..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] 'ํฐ์ผ“๋ชฌ' ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
0. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฐฉํ•™์„ ๋งž์•„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์‘์‹œํ•˜๊ณ ์ž ํ•˜๋Š”, ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ํฌ๋งํ•˜๋Š” ์นœ๊ตฌ๋“ค๋ผ๋ฆฌ ๋ชจ์˜€๋‹ค. ํ•œ๋™์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์ง€ ์•Š์•„์„œ ์ž˜ ํ’€ ์ˆ˜ ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๊ทธ๋ž˜์„œ ๋”์šฑ ์—ด์‹ฌํžˆ ํ•ด๋ณด๋ คํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‚ฌ์ดํŠธ์—์„œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํƒญ → ‘์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  Kit’ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜๋ฉด ์œ ํ˜•๋ณ„๋กœ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ๋งจ ์™ผ์ชฝ ์œ„์— ์œ„์น˜ํ•œ ‘ํ•ด์‹œ’ ์œ ํ˜•๋ถ€ํ„ฐ ํ’€์–ด๋ณด์•˜๋‹ค. ๊ทธ ์ค‘ ๋งจ ์ฒซ๋ฒˆ์งธ ๋ฌธ์ œ, ‘ํฐ์ผ“๋ชฌ’์„ ํ’€์–ด๋ณด์ž. ๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/1845 1. ๋‚˜์˜ ํ’€์ดfunction solution(nums) { var..
[Next.js] Next.js(SSR ํ™˜๊ฒฝ)์—์„œ css ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž‘๋™ ์•ˆํ•˜๋Š” ์ด์œ 
ยท
Frontend
1. Next.js? ๊ทธ๋ƒฅ react ๊ฐœ๋ฐœํ•˜๋“ฏ์ด ํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜?๋ฐฉํ•™ ๋™์•ˆ, Next.js 14๋ฅผ ์ตํžˆ๊ณ  ์‹ถ์–ด์„œ Next.js๋กœ ์ž๊ธฐ์†Œ๊ฐœ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฝ์œผ๋ฉฐ ๊ฐœ๋ฐœํ•  ๋•Œ React์™€ ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€ ์ฝ๊ณ  ๋ฐ”๋กœ ์ž‘์—…์— ๋“ค์–ด๊ฐ”๋‹ค. ์ž‘์—…์„ ํ•˜๋ฉฐ ๋ผ์šฐํŒ… ๋ฐฉ์‹์ด๋‚˜ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ๊ฐ™์€ ์ฐจ์ด์  ์™ธ์—๋Š” React์™€ ๋ณ„ ๋‹ค๋ฅธ ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ๋„ ํ–ˆ์—ˆ๋‹ค.(header ๋ฐ–์— ์•ˆ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ๊ทธ๋Ÿฐ ์ƒ๊ฐ์„ ํ•œ ๊ฒŒ ์ฐธ…ใ…‹ใ…‹ใ…‹). ํ•˜์ง€๋งŒ, ๊ทธ ์ƒ๊ฐ์€ ๊ธธ๊ฒŒ ์œ ์ง€๋˜์ง€ ์•Š์•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด css ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 2. css ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•„์š”๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์Œ์•…์˜ ์•จ๋ฒ” ์ปค๋ฒ„, ๋…ธ๋ž˜ ์ œ๋ชฉ, ๊ฐ€์ˆ˜ ์ด๋ฆ„์ด ์ ํ˜€์žˆ๋Š” MusicCard ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๊ณ , ๊ทธ MusicCard ์ปดํฌ๋„ŒํŠธ๋“ค์ด..
ํ์‹œ์ฆ˜ ์ „์‹œํšŒ - ENGAGE ENERGY ๊ฐ”๋‹ค์˜จ ํ›„๊ธฐ
ยท
Event
IT ์—ฐํ•ฉ๋™์•„๋ฆฌ์—์„œ ์ „์‹œํšŒ๋ฅผ ์—ฐ๋‹ค๊ณ ?๊ฐ™์€ ๋™์•„๋ฆฌ ๋ถ€์›์ด์ž, ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์›์ธ ์นœ๊ตฌ๊ฐ€ ๋ณธ์ธ์ด ์†ํ•ด์žˆ๋Š” ๋™์•„๋ฆฌ์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ–ˆ๊ณ , ๋˜ ๊ทธ ์„œ๋น„์Šค๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ์ „์‹œํšŒ๊ฐ€ ์—ด๋ฆฐ๋‹ค๊ณ  ํ•ด์„œ ๊ฐ”๋‹ค์™”๋‹ค. ์ „์‹œํšŒ๊ฐ€ ์šฉ์‚ฐ๊ตฌ์—์„œ ์—ด๋ ค์„œ ์‚ด์ง ๊ณ ๋ฏผ์„ ํ•˜๊ธดํ–ˆ์ง€๋งŒ, IT ์—ฐํ•ฉ๋™์•„๋ฆฌ ์ „์‹œํšŒ๋ฅผ ๊ตฌ๊ฒฝํ•  ๊ธฐํšŒ๋Š” ํ”์น˜ ์•Š์€ ๊ฒƒ ๊ฐ™๊ธฐ์—, ๋˜ ๊ตฌ๊ฒฝํ•ด๋ณด๊ณ  ์‹ถ๊ธฐ๋„ ํ–ˆ๊ธฐ์— ๋‹ค๋…€์™”๋‹ค. ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๋‹ˆ ๋งŽ์€ ๋ถ€์Šค๋“ค์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒœํ”Œ๋ ›์„ ๋ฐ›์•˜๋Š”๋ฐ, ํŒœํ”Œ๋ ›์— ์Šคํƒฌํ”„๊ฐ€ 4๊ฐœ๊ฐ€ ์ฐํ˜€์žˆ์œผ๋ฉด ๊ฐ€์ฑ ๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ 1๋ฒˆ ์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ณผ์—ฐ ์ „์‹œํšŒ์—๋Š” ๋ฌด์Šจ ์„œ๋น„์Šค๋“ค์ด ์žˆ์„๊นŒ. ํ•˜๋‚˜์”ฉ ๋‘˜๋Ÿฌ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.1. ๋˜๋ฐ”์นœ๊ตฌ๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ฐธ์—ฌํ•œ ‘๋˜๋ฐ”’๋Š” ๋…ธ์ธ๋ถ„๋“ค์˜ ์‚ฌํšŒํ™œ๋™์„ ๋„์™€๋“œ๋ฆฌ๋Š” ์„œ๋น„์Šค๋‹ค. ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ  ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์€ ํ™œ๋™์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ •ํ•˜..
[KUIT] 2024-1 ์›น ํŒŒํŠธ์žฅ ํ›„๊ธฐ
ยท
KUIT
0. ๋„ค? ์ œ๊ฐ€ ํŒŒํŠธ์žฅ์ด์š”?์˜ฌํ•ด 1์›” ๋ง์ด์—ˆ์„ ๊ฒƒ์ด๋‹ค. ๋‚ ์”จ๋Š” ๊ฝค๋‚˜ ์ถ”์› ๊ณ , ๋ด„์ด ์˜จ๋‹ค๋Š” ๊ฒƒ์ด ์ƒ์ƒ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ๋‚˜๋Š” ๋™์•„๋ฆฌ์—์„œ ์›น ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ฐธ์—ฌํ•œ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ํ•˜๋ฉฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์žˆ์—ˆ๋‹ค. ๋А์Šจํ–ˆ์ง€๋งŒ ์•„์˜ˆ ๋†€์ง€๋Š” ์•Š์•˜๋˜, ์กฐ๊ธˆ์€ ์—ฌ์œ ๋กœ์› ๋˜ ์ˆœ๊ฐ„์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋””์Šค์ฝ”๋“œ๋กœ ์—ฐ๋ฝ์ด ์™”๋‹ค. ๋™์•„๋ฆฌ ์ฐจ๊ธฐ ํšŒ์žฅ์ด ๋˜๋Š” ์นœ๊ตฌ์˜€๋‹ค. ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด, ๊ทธ๋ฆฌ๊ณ  ๋จธ์ง€ ์•Š์•„ ์ง„ํ–‰๋  ๋‹ค์Œ ํ•™๊ธฐ ์ˆ˜๊ฐ• ์‹ ์ฒญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๊ฐ‘์ž๊ธฐ, ๋‚˜๋ณด๊ณ  ๋‹ค์Œ ํ•™๊ธฐ ์›น ํŒŒํŠธ์žฅ์„ ํ•  ์ƒ๊ฐ์ด ์—†๋ƒ๊ณ  ๋ฌผ์–ด๋ดค๋‹ค. ์Œ?์ฃผ๊ด€์ ์œผ๋กœ, ์•„๋‹ˆ ๊ฐ๊ด€์ ์œผ๋กœ๋„ ๋‚ด๊ฐ€ ์›น ๋ถ€์› ์ค‘์—์„œ ํŒŒํŠธ์žฅ์„ ๋งก์„๋งŒํผ ์‹ค๋ ฅ์ด ์ข‹์•˜๋ƒ๊ณ  ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด, ์•„๋‹ˆ๋ผ๊ณ  ๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ›จ์”ฌ ๋…ผ๋ฆฌ์ ์ด๊ณ  ์ฝ”๋”ฉ ์ž˜ํ•˜๋Š” ์นœ๊ตฌ๋“ค์˜ ์–ผ๊ตด์ด ์Šค์ณ์ง€๋‚˜๊ฐ”๋‹ค. ์™œ ๊ฐ‘์ž๊ธฐ ๋‚˜ํ•œํ…Œ ์ด๋Ÿฐ ๊ธฐ..
[KUIT] 10์ฃผ์ฐจ ๋ณด์ถฉ - ํ† ํฐ ์ €์žฅ ์œ„์น˜, ์„ธ์…˜ ์ธ์ฆ ๋ฐฉ์‹๊ณผ JWT, .env ํŒŒ์ผ
ยท
KUIT
์•„๋ž˜ ๊ธ€์€ KUIT ์›น ๋ถ€์›๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.Access Token๊ณผ Refresh Token์€ ์–ด๋””์— ์ €์žฅํ•ด์•ผํ• ๊นŒ?๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณ€์ˆ˜๋Š” ๋„ค ๊ฐ€์ง€ ๊ณต๊ฐ„์— ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ฟ ํ‚ค๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋ฉ”๋ชจ๋ฆฌ์ด ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•˜๋ ค๋ฉด ์›น์•ฑ์˜ ๋กœ์ปฌ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ €์žฅํ•ด์•ผ→ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ→ ๋˜ ํ•˜๋‚˜ ๊ธฐ์–ตํ•ด์•ผ ํ•  ํŠน์ง•์€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€→ XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝ(๋‹ค๋งŒ ์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ HttpOnly ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์ฟ ํ‚ค ์ƒ์„ฑ ๊ฐ€๋Šฅ) ์ถœ์ฒ˜: https://velog.io/@iamtaehoon/sagah Refresh Token → HttpOnly..
[KUIT] 9์ฃผ์ฐจ ์›Œํฌ๋ถ ๋ณด์ถฉ - API endpoint, Axios์™€ Fetch์˜ ์ฐจ์ด, GraphQL
ยท
KUIT
์•„๋ž˜ ๊ธ€์€ KUIT ์›น ๋ถ€์›๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.API endpoint์˜ ๋œป์€?→ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ ์žํ•˜๋Š” URLAxios์™€ Fetch์˜ ์ฐจ์ด1. ์—๋Ÿฌ ์ฒ˜๋ฆฌaxios์™€ fetch๋Š” ๋‘˜ ๋‹ค Promise๋ฅผ ์ด์šฉํ•ด ๋น„๋™๊ธฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ axios: ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, HTTP ์ƒํƒœ์ฝ”๋“œ๊ฐ€ 200~299๊ฐ€ ์•„๋‹ˆ๋ฉด Promise๋ฅผ reject ์‹œfetch: ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋งŒ Promise๋ฅผ reject-> axios์ฒ˜๋Ÿผ ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 200~299 ์‚ฌ์ด๊ฐ€ ์•„๋‹ ๋•Œ๋„ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, Response.ok๋ฅผ ํ™œ์šฉํ•ด์•ผ  2. ํ—ค๋”axios๋Š” ์š”์ฒญ ํ—ค๋”์— ‘Content-Type: application/json์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€(fetch๋Š” ์ง์ ‘ ์ถ”๊ฐ€ํ•ด์•ผ) ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ Content..