header-img
Info :
๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 195
list_img
๊ตฌ๊ธ€์—์„œ ์ œ์•ˆํ•˜๋Š” ์ตœ์ ํ™”๋œ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ๋ฒ•
2023.04.13
์›๋ฌธ Writing Helpful Error Messages ์ด์™ธ์—๋„ ๊ณตํ•™์ž๋“ค์„ ์œ„ํ•œ techincal ๋Šฅ๋ ฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๊ณต์‹ ์‚ฌ์ดํŠธ ์—์„œ ๊ต์œก์ž๋ฃŒ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋‹ค. ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ธฐ ์ „, ์˜ค๋ฅ˜๋ฉ”์„ธ์ง€ ์ž‘์„ฑ ์‹œ ๊ทœ์น™์„ ๋จผ์ € ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ์˜ค๋ฅ˜ ์•Œ๋ฆผ์„ ์ฆ‰์‹œ ๋ฐœ์ƒ์‹œ์ผœ๋ผ. ์‹คํŒจ๋ฅผ ์กฐ์šฉํ•˜๊ฒŒ ๋„˜๊ธฐ์ง€ ๋งˆ๋ผ. ์˜ค๋ฅ˜์˜ ๊ทผ์›์ด ๋ฌปํžˆ์ง€ ์•Š๋„๋ก ํ•ด๋ผ. ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋กํ•˜๋ผ. ์ตœ์ ํ™”๋œ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ์˜ค๋ฅ˜์˜ ์›์ธ์„ ์ „๋‹ฌํ•˜๋ผ identify the error's cause ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์‹คํ•˜๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. โœ– ์ž˜๋ชป๋œ ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค. โœ” ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. [์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ค ..
list_img
[React] FETCH ์™€ AXIOS ์˜ ์ฐจ์ด์  1
2023.04.13
What is difference between Fetch and Axios ? JS์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” HTTP ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐฉ๋ฒ•์ธ Axios ์™€ Fetch ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. Axios/Fetch ์ƒ๊ฒจ๋‚œ ๋ฐฐ๊ฒฝ ๊ธฐ์กด์˜ ์›น์—์„œ๋Š” ์–ด๋–ค ์ •๋ณด๋“ค์„ ๋น„๋™๊ธฐ๋กœ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ XHR(XML HTTP Request) ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ๋งŒ ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.. ๊ทผ๋ฐ XHR์€ ๋˜๊ฒŒ ๋ถˆ์นœ์ ˆํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์งธ๋กœ ์ค˜๋ฒ„๋ฆฐ๋‹ค๋˜์ง€..) ์š”์ฒญ์˜ ์ƒํƒœ๋‚˜ ๋ณ€๊ฒฝ์„ ๊ณ„์† ๋ณด๊ณ  ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€๋กœ ๋“ฑ๋กํ•ด์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ๋‹ค์‹œ ๋ฐ›์•„์•ผ ํ•˜๊ณ .. ์š”์ฒญ์˜ ์„ฑ๊ณต/์‹คํŒจ/์ƒํƒœ๋ณ€๊ฒฝ ๋“ฑ์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ๋ณต์žกํ–ˆ๋‹ค. → ์ƒˆ๋กœ์šด url์„ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ ค์•ผ ํ•˜๋Š” ๋“ฑ์˜ ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ..
list_img
[๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ] 11์žฅ. ๋‰ด์Šค ํ”ผ๋“œ ์‹œ์Šคํ…œ ์„ค๊ณ„
2023.04.13
๋‰ด์Šค ํ”ผ๋“œ ๋ž€? ํ™ˆ ํŽ˜์ด์ง€ ์ค‘์•™์— ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์Šคํ† ๋ฆฌ๋“ค๋กœ, ์‚ฌ์šฉ์ž ์ƒํƒœ ์ •๋ณด ์—…๋ฐ์ดํŠธ, ์‚ฌ์ง„, ๋น„๋””์˜ค, ๋งํฌ, ์•ฑ ํ™œ๋™(app activity), ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์Šค๋ถ์—์„œ ํŒ”๋กœ์šฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค, ํŽ˜์ด์ง€, ๋˜๋Š” ๊ทธ๋ฃน์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” '์ข‹์•„์š”(likes)' ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ ๋น„์Šทํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋กœ ํŽ˜์ด์Šค๋ถ ๋‰ด์Šค ํ”ผ๋“œ, ์ธ์Šคํƒ€๊ทธ๋žจ ํ”ผ๋“œ, ํŠธ์œ„ํ„ฐ ํƒ€์ž„๋ผ์ธ ์„ค๊ณ„ ๋“ฑ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. 1๋‹จ๊ณ„. ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ • ๋ชจ๋ฐ”์ผ ์•ฑ, ์›น ๋ชจ๋‘ ์ง€์›ํ•ด์•ผํ•จ ์ƒˆ๋กœ์šด ์Šคํ† ๋ฆฌ ์˜ฌ๋ฆฌ๊ธฐ ๋ฐ ๋ณด๊ธฐ ๋‹ค ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค. ํ”ผ๋“œ ๋‚˜์—ด์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ๊ฐ„ ํ๋ฆ„ ์—ญ์ˆœ(reverse chronological order)์œผ๋กœ : ์ตœ์‹ ์ˆœ ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๋Š” ์ตœ๋Œ€ 5000๋ช…์˜ ์นœ๊ตฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ ํŠธ๋ž˜ํ”ฝ ๊ทœ๋ชจ๋Š” ์•ฝ 1,000๋งŒ๋ช… ํ”ผ๋“œ์—๋Š” ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค..
list_img
[React] UseEffect ์•ˆ์—์„œ ์ฝ˜์†”์„ ์ฐ์œผ๋ฉด ์™œ ๋‘๋ฒˆ ์ฐํžˆ๋Š”๊ฑธ๊นŒ? (๋‘๋ฒˆ ๋ Œ๋”๋ง)
2023.04.13
0. about UseEffect UseEffect ํ•จ์ˆ˜ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Hook component์˜ mount ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ, ํ˜น์€ ๋‚ด์šฉ์ด update ๋˜์—ˆ์„ ๋•Œ, ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์‚ฌ์šฉ๋ฒ• ์€ import React, {useEffect} from 'react' ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ useEffect(()=>{ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•˜๊ณ  ์‹ถ์€ ์ผ },[๊ธฐ์ค€ ๊ฐ’]) ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๊ฐ€์žฅ ์ฒ˜์Œ ๋ Œ๋”๋ง ๋  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š” ๊ธฐ์ค€๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” [] ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ๋นˆ ๋ฐฐ์—ด๋กœ ๋‘๋ฉด ๋œ๋‹ค. 1. ๋ฌธ์ œ ์ƒํ™ฉ useEffect(()=>{},[]) ์–˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ด๋ก ์ƒ ๋”ฑ! ํ•œ๋ฒˆ๋งŒ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋Š”๋ฐ...
list_img
[html] ๊ธฐ๋ณธ SEO / [react] SEO pre-rendering ๋ฐฉ์‹์œผ๋กœ ๋จน์ด๊ธฐ
2023.04.12
์˜ค๋Š˜์€ HTML์˜ ๊ธฐ๋ณธ SEO ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์œ ๋Š” ๋ช‡์ผ ์ „์˜ ๋‚ด๊ฐ€ TITLE ๋„ ์•ˆ ๋ฐ”๊พธ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฆด๋ป”ํ•œ ์ ์ด ์žˆ์–ด์„œ ๋‚˜๋Š” HTML์— H๋„ ๋ชจ๋ฅด๋Š”๊ตฌ๋‚˜ ๋ผ๊ณ  ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€์ฐธ์‚ฌ๋Š” ๋ˆˆ์น˜๊ป ๋ง‰์•„๋ƒˆ์ง€๋งŒ.. ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์•„๊ธฐ ์›น์•ฑ ๐Ÿ‘ถ์€ ๋ณด๋‹ค์‹ถ์ด ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๋…ธ์…˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ•œ์ฐธ ๋กœ๋”ฉ์ด ๊ฑธ๋ฆฌ๋‹ค๊ฐ€ - ๊ทธ๋ƒฅ ๋งํฌ ์ด๋ฆ„๋งŒ ๊ฑธ์–ด์ค€๋‹ค ๐Ÿ˜ฅ ๋Œ€๊ฐ• ์ด๋Ÿฐ ๋Š๋‚Œ์ด๋‹ค.. ์ฝฉ์ง€์•ผ.. ๋‚œ ๋”์ด์ƒ ์•ˆ๋˜๊ฐœ์จ ๐Ÿธ ์ด ์ด์œ ์— ๋Œ€ํ•ด์„œ๋Š” ์‹ฌ๊ฐํ•œ ๊ฑด ์•„๋‹ˆ๊ณ  ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ HTML ๊ธฐ๋ณธ SEO์— ๋Œ€ํ•ด ์•Œ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๐Ÿต๐Ÿต๐Ÿต ์šฐ์„  0. SEO ๋ž€? Search Engine Optimization์˜ ์•ฝ์ž๋กœ, ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™” ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์›น ์‚ฌ์ดํŠธ์™€ ์›นํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰..
list_img
2023 ๊ฐœ๋ฐœ ๋ถ€๋ฌธ ์ž๊ธฐ๊ฐœ๋ฐœ to do list ์•„์นด์ด๋น™
2023.04.12
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋กœ๋“œ๋งต 2023 ํ”„๋ก ํŠธ์—”๋“œ ๋กœ๋“œ๋งต ์ฐธ๊ณ  ์›๋ณธ ์˜์ƒ
list_img
[๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ] 10์žฅ. ์•Œ๋ฆผ ์‹œ์Šคํ…œ ์„ค๊ณ„
2023.04.12
1๋‹จ๊ณ„. ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ • ์•Œ๋ฆผ ์ข…๋ฅ˜: ํ‘ธ์‹œ ์•Œ๋ฆผ, SMS ๋ฉ”์„ธ์ง€, ์ด๋ฉ”์ผ ์—ฐ์„ฑ ์‹ค์‹œ๊ฐ„(soft real-time) ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๊ฐ€์ • IOS, ์•ˆ๋“œ๋กœ์ด๋“œ(android) ๋‹จ๋ง, ๊ทธ๋ฆฌ๊ณ  ๋žฉํ†ฑ/๋ฐ์Šคํฌํ†ฑ์„ ์ง€์›ํ•ด์•ผ ํ•จ. ์•Œ๋ฆผ: ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋งŒ๋“ค์ˆ˜๋„ ์žˆ๊ณ , ์„œ๋ฒ„์—์„œ ์Šค์ผ€์ค„๋ง ํ• ์ˆ˜๋„. ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ๋ฆผ ๋„๊ธฐ๋„ ๊ฐ€๋Šฅํ•ด์•ผํ•จ. ํ•˜๋ฃจ์— ์ฒœ๋งŒ ๊ฑด ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ ์•Œ๋ฆผ, ๋ฐฑ๋งŒ ๊ฑด์˜ SMS ๋ฉ”์„ธ์ง€, 5๋ฐฑ๋งŒ ๊ฑด์˜ ์ด๋ฉ”์ผ 2๋‹จ๊ณ„. ๊ฐœ๋žต์  ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ ์•Œ๋ฆผ ์œ ํ˜•๋ณ„ ์ง€์› ๋ฐฉ์•ˆ 1. IOS ํ‘ธ์‹œ ์•Œ๋ฆผ ์•Œ๋ฆผ ์ œ๊ณต์ž(provider) ์•Œ๋ฆผ ์š”์ฒญ(notification request)์„ ๋งŒ๋“ค์–ด ์• ํ”Œ ํ‘ธ์‹œ ์•Œ๋ฆผ ์„œ๋น„์Šค(APNS)๋กœ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด ์•Œ๋ฆผ ์š”์ฒญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”... ๋‹จ๋ง ํ† ํฐ(device..
list_img
[๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ] 9์žฅ. ์›น ํฌ๋กค๋Ÿฌ(Web Crawler) ์„ค๊ณ„
2023.04.12
์›น ํฌ๋กค๋Ÿฌ๋ž€? ๋กœ๋ด‡(robot) ๋˜๋Š” ์ŠคํŒŒ์ด๋”(Spider)๋ผ๊ณ  ๋ถ€๋ฆ„ ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ๋„๋ฆฌ ์“ฐ๋Š” ๊ธฐ์ˆ ๋กœ, ์›น์— ์ƒˆ๋กœ ์˜ฌ๋ผ์˜ค๊ฑฐ๋‚˜ ๊ฐฑ์‹ ๋œ ์ปจํ…์ธ ๋ฅด ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ์ฃผ๋œ ๋ชฉ์  -> ๋ช‡๊ฐœ์˜ Web Page ์—์„œ ์‹œ์ž‘ํ•ด์„œ ๊ทธ ๋งํฌ๋ฅผ ๋”ฐ๋ผ ๋‚˜๊ฐ€๋ฉฐ ์ƒˆ๋กœ์šด ์ฝ˜ํ…์ธ ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค... ํฌ๋กค๋Ÿฌ๊ฐ€ ์ด์šฉ๋˜๋Š” ๊ณณ๋“ค ? 1. ๊ฒ€์ƒ‰ ์—”์ง„ ์ธ๋ฑ์‹ฑ(Search Engine Indexing) ํฌ๋กค๋Ÿฌ๊ฐ€ ์ œ์ผ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ชจ์•„ ๊ฒ€์ƒ‰ ์—”์ง„์„ ์œ„ํ•œ ๋กœ์ปฌ ์ธ๋ฑ์Šค(local index)๋ฅผ ๋งŒ๋“ฌ ex) Googlebot - ๊ตฌ๊ธ€(Google) ๊ฒ€์ƒ‰ ์—”์ง„์ด ์‚ฌ์šฉํ•˜๋Š” ์›น ํฌ๋กค๋Ÿฌ 2. ์›น ์•„์นด์ด๋น™(Web Archiving) ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์žฅ๊ธฐ๋ณด๊ด€์„ ์œ„ํ•ด ์›น์—์„œ ์ •๋ณด๋ฅผ ๋ชจ์œผ๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•จ ex) ๋ฏธ๊ตญ ๊ตญํšŒ ๋„์„œ๊ด€(US Librar..
list_img
[HTTP/ HTTPS] ์ฐจ์ด์™€ HTTPS๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ• (feat.React)
2023.04.12
๋‚˜๋Š” ๋‘๊ฐœ์˜ ์ฐจ์ด๋ฅผ ๋ณด์•ˆ์ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ.. ๋‚ด๊ฐ€ ๋†“์น˜๊ณ  ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ์žˆ์„์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๋‹ค์‹œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž ๋ ›์ธ ๊ณ  HTTP ๋ž€? ํ•˜์ดํผ ํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(Hypertext Transfer Protocol)์˜ ์•ฝ์ž ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋“ค ์‚ฌ์ด์—์„œ ํ†ต์‹ ์„ ์ฃผ๊ณ ๋ฐ›๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ํ”„๋กœํ† ์ฝœ ์ธํ„ฐ๋„ท ์ดˆ๊ธฐ์˜ ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ.. ์„œ๋ฒ„์—์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด ์ฃผ๋Š” ์šฉ๋„๋กœ ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. HTTPS ๋ž€? ํ•˜์ดํผ ํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ ๋ณด์•ˆ(Hypertext Transfer Protocol Secure)์˜ ์•ฝ์ž ๋ง ๊ทธ๋Œ€๋กœ ๋ณด์•ˆ์„ฑ์ด ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ. ์ผ๋ฐ˜ HTTP ํ”„๋กœํ† ์ฝœ์˜ ๋ฌธ์ œ๋Š” " ์„œ๋ฒ„์—์„œ๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†ก๋˜๋Š” ์ •๋ณด๊ฐ€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ " = ๋ฐ์ด..
list_img
[REACT] JSON ์„œ๋ฒ„ ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ
2023.04.12
์™„์„ฑ๋ณธ ์‚ฌ์ง„... ๋ ›์ธ ๊ณ  JSON-SERVER ? ๋น„๊ต์  ๊ฐ„ํŽธํ•˜๊ฒŒ ์•„์ฃผ ์งง์€ ์‹œ๊ฐ„์„ ๋“ค์—ฌ REST API๋ฅผ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์ฃผ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜, ๊ณต๋ถ€ํ•˜๊ณ  ์‹ค์Šตํ•  ๋•Œ.. ์ด์šฉํ•˜๋Š” ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ๊ตฟ์ธ ๋„๊ตฌ ! REST API ์„œ๋ฒ„์˜ ์™ ๋งŒํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ๋Œ€๋ถ€๋ถ„ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”๋ฐ ํ”„๋กœ๋•์…˜์šฉ์œผ๋กœ๋Š” ๋ถ€์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ์ด๋‹ˆ๊นŒ ์•„๋ฌดํŠผ ๋ ›์ธ ๊ณ  ~! ๐Ÿ”Œ JSON SERVER Setup ๋‚˜๋Š” npm์„ ์‚ฌ์šฉํ•ด์„œ json-server๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๋ถ™์ด๊ณ  ์‹ถ์€ react ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋” ์ตœ์ƒ๋‹จ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด์„œ // ์„œ๋ฒ„ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋‚˜๋Š” ์„ฑ์žฅ์šฉ์ด๋ผ ์ด๋ฆ„์„ ์ด๋ ‡๊ฒŒ ์ง€์—ˆ๋‹ค. $ mkdir server-grow // ๋งŒ๋“  ์„œ๋ฒ„ ํด๋”๋กœ ์ด๋™ $ cd ./server-gro..
list_img
[React] input - sql injection ๋ฐฉ์ง€
2023.04.12
SQL INJECTION ์ด๋ž€? ์‚ฌ์šฉ์ž๊ฐ€ ์ •์ƒ์ ์ธ ์ž…๋ ฅ์ด ์•„๋‹Œ ๋น„์ •์ƒ์ ์ธ ์ž„์˜์˜ SQL ๋ฌธ์„ ์ž…๋ ฅํ•ด์„œ DB์— ๋น„์ •์ƒ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ.. ๋น„์ •์ƒ์ ์ด์ง€๋งŒ ์ปดํ“จํ„ฐ๋Š” ๋น„์ •์ƒ์ธ๊ฑธ ๋ชฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์ค˜๋ฒ„๋ฆฐ๋‹ค (๋ฌธ์ œ) SQL INJECTION ๋ณด์•ˆ ๋ฐฉ๋ฒ• ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ (์ง€๊ธˆ ํ• ๊ฑฐ์ž„) Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ - ํ•œ์ค„๋กœ ์กฐํšŒ ๋•Œ๋ ค๋ฒ„๋ฆฌ์ง€๋ง๊ณ  ๋‚˜๋ˆ ์„œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ๋ ๋งŒํ•œ ์• ๋“ค์€ ๋ณ€์ˆ˜๋‚˜ ์ด๋Ÿฐ๋ฐ ์ €์žฅ๋†“๊ณ  ๋ฝ€๊ฐœ์„œ ์“ฐ๋ž€ ์†Œ๋ฆฌ Error Message ๋…ธ์ถœ ๊ธˆ์ง€ - ๋””ํ…Œ์ผ ํ•œ ๊ฒƒ๋“ค์€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๊ฐœ๋ฐœ์ž๋งŒ ๋ณด์ž... ๋ฐฉํ™”๋ฒฝ ์‚ฌ์šฉ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ๋‚˜๋Š” ์•ž์—์„œ ๋งํ•œ ๋ณด์•ˆ ๋ฐฉ๋ฒ•๋“ค ์ค‘ 1๋ฒˆ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ”ํžˆ ๋งํ•˜๋Š” ์ •๊ทœ์‹์„ ์‚ฌ์šฉ ํ•œ ๊ฒƒ์ธ๋ฐ.. ์ •๊ทœ์‹(Regular Expressions)๋ž€..
list_img
[React] ํ™•์ธ์„ ๋ฐ›์ž (with. window.confirm)
2023.04.12
๐Ÿต ํ˜„์žฌ ์ƒํ™ฉ ๊ฒŒ์‹œ๊ธ€ delete ํ•˜๋ฉด ๋ฐ”๋กœ ์‚ญ์ œ๋˜์–ด๋ฒ„๋ฆผ ๋กœ๊ทธ์ธํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์ž๋ฅผ ์ธ์‹ํ•ด์„œ ์ˆ˜์ •/์‚ญ์ œ ๋ฒ„ํŠผ์„ ์—ด์–ด์ฃผ๊ณ  ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‚ญ์ œ ํ• ๊นŒ๋ง๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์†๊ฐ€๋ฝ์ด ๋นจ๋ผ๋ฒ„๋ ค์„œ ์—ด์‹ฌํžˆ ์“ด ๊ธ€์„ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค๋ฉด... ํ˜น์€ ์ง€์šฐ์ง€ ์•Š์•„์•ผํ•  ๊ธ€์„ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค๋ฉด... ์‚ฌ์šฉ์ž๊ฐ€ ๊ฝค ์Šฌํ”„๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๋ฌผ ํ•œ๋ฐฉ์šธ๋„ ์•„๊ปด์จ์•ผ ํ•˜๋Š” ์ด ์„ธ์ƒ์—์„œ ์‚ฌ์šฉ์ž์˜ ๋ˆˆ๋ฌผ์„ ํ—›๋˜์ด ์“ฐ๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ๋ ›์ธ ๊ณ  ์ˆ˜์ • ๊ฐ„๋‹จํ•˜๊ฒŒ confirm ํ•œ๋ฒˆ ๋” ๋ฐ›๊ณ  ํ™•์ธ ๋ˆ„๋ฅด๋ฉด ๊ทธ๋•Œ axios ์‹ ํ˜ธ๋ฅผ ์ฃผ๋„๋ก ํ•˜์ž. C#์— messagebox ๊ฐ€ ์žˆ๋“ฏ, react์—๋Š” window.confirm์ด ์žˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. window.confirm("๋„์šฐ๊ณ  ์‹ถ์€ ๋ฉ”์„ธ์ง€"); ๋‹ต๋ณ€ ๊ฐ’์€ ํ™•์ธ: true ์ทจ์†Œ: false ๋‹ต๋ณ€ ๊ฐ’๋„ ๊น”๋”ํ•˜๊ฒŒ..