๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

๐Ÿ“ What I learned ์–ด๋Š ๊ฒƒ ํ•˜๋‚˜์— ์ง‘์ค‘ํ•˜์ง€ ๋ชป ํ•˜๊ณ  ์ด๋ฃฌ๊ฒƒ ์—†๋Š” ํ•œ๋‹ฌ์„ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™๋‹ค. ํœด๊ฐ€์ฒ ์ด๋ผ์„œ ๋งˆ์Œ์ด ๋ถ•~๋œฌ๋‹ค๋Š” ํ•‘๊ณ„๋ฅผ ๋Œ€๋ฉด ๊ดœ์ฐฎ์„๊นŒ? ๋Šฅ๋ ฅํ’€์„ ๋„“ํžˆ๊ณ  ์‹ถ๋‹ค๋Š” ์š•์‹ฌ์— '์˜์–ด'์— ์š•์‹ฌ์„ ๋ƒˆ๊ณ , ๊ทธ ์ƒ๊ฐ๊ณผ ์ด์–ด์ง€๋Š” ํฌ์ธํŠธ๋กœ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๊ฒธํ•  '์˜์–ด'๋งŒ ์‚ฌ์šฉํ•  github pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด๊ฒƒ์ €๊ฒƒ ์†์„ ๋Œ”์ง€๋งŒ ์ •์ž‘ ์˜์–ด๋กœ ์˜ฌ๋ฆฐ ์ปจํ…์ธ ๋Š” ์•„์ง 2๊ฐœ ๋ฐ–์— ์—†๋‹ค. ๋ง์„ค์ž„ ์—†๋Š” ํ–‰๋™๋ ฅ์€ ์ข‹์•˜์œผ๋‚˜ ์•„์‰ฌ์šด ๊พธ์ค€ํ•จ. ๐Ÿ’ป Work ๐ŸŒฑ ๋“œ๋””์–ด ๋‹ค์‹œ ํŒ€์ด ๋งŒ๋“ค์–ด์ ธ๊ฐ€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœํŒ€์„ ๋น„๋กฏํ•ด์„œ ๋‹ค๋ฅธ ํŒ€์—๋„ ์ƒˆ๋กœ์šด ์ธ์žฌ๊ฐ€ ๋“ค์–ด์™”๊ณ  ๋ชจ๋‘๋“ค ์กฐ๊ธˆ์”ฉ ์ ์‘ํ•ด๊ฐ€๋ฉด์„œ ์šด์˜์„ ์ •์ƒํ™”ํ•ด๊ฐ€๋Š” ์ค‘์ด๋‹ค. ๋‚˜ ์—ญ์‹œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ์˜ ํ‹ฐํ‚คํƒ€์นด๋ฅผ ๋งž์ถฐ์•ผํ•˜๋Š” ์ƒํ™ฉ์ธ๋ฐ, ์ด์ „ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ณผ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์Šคํƒ€์ผ์— ์™œ ์ด๋ ‡๊ฒŒ ..
jekyll์„ ์‚ฌ์šฉํ•ด์„œ ํ…œํ”Œ๋ฆฟ์„ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ๊นŒ์ง€ ๋งŽ์€ ์šฐ์—ฌ๊ณก์ ˆ์ด ์žˆ์—ˆ์ง€๋งŒ ํ•ด๋ƒˆ๋‹ค. ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์•„๋ž˜์˜ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ๋œ๋‹ค. ๐Ÿ‘‡๐Ÿป ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages ๋กœ ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ - ํ…œํ”Œ๋ฆฟ๊ฐ€์ ธ์™€์„œ ์„ค์ •ํ•˜๊ธฐ (1) ๋ฐฐํฌ๋„ ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ! ๋„˜๋‚˜ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค! ์˜ˆ์ „์— ๋ธ”๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•ด์„œ ํฌํŠธํด๋ฆฌ์˜ค ๊ฒธํ•ด์„œ pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ ์ง€์šด์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์˜์–ด์šฉ์œผ๋กœ ํ•˜๋‚˜ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์„œ mindevlog.tistory.com ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ruby์—†์ด๋„ jekyll ํ…œํ”Œ๋ฆฟ๊ฐ€์ ธ์™€์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ปค์Šคํ…€ํ•˜๊ณ  ํ•˜๋ ค๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋กœ์ปฌ์— ํด๋ก ํ•ด์„œ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ... ๋ฌดํŠผ ๋‚˜๋Š” ๋กœ์ปฌ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์ƒํ™ฉ์ด ๋˜์—ˆ๊ณ , ๋ง˜๊ป ์ปค์Šคํ…€์„ ์‹œ์ž‘ํ•˜์ž!!!! ๊ณ  ๋ง˜์„ ๋จน๊ธฐ ์‹œ์ž‘ํ•˜..
๋ฐฐํฌ๋„ ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ! ๋„˜๋‚˜ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์€ github pages๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค! ์˜ˆ์ „์— ๋ธ”๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•ด์„œ ํฌํŠธํด๋ฆฌ์˜ค ๊ฒธํ•ด์„œ pages๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ ์ง€์šด์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์˜์–ด์šฉ์œผ๋กœ ํ•˜๋‚˜ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์—ฌ๊ธฐ์— ๊ธ€์„ ์˜ฌ๋ฆด๊ฑฐ๋ผ์„œ ํฌ์ŠคํŒ…์ด ๋Šฆ์–ด์งˆ ์ˆ˜๋„ ์žˆ์–ด์š”. ํ•œ๋ฒˆ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ์–ด๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ ์œผ๋กœ ์ €๋Š” jekyll theme๋ฅผ ์‚ฌ์šฉํ•  ๊ฑฐ๋ผ์„œ ๋‚ด๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ๋”. ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. jamstackthemes.dev jekyllthemes.org jekyllthemes.io jekyll-themes.com ์ œ๊ฐ€ ์„ ํƒํ•œ ํ…Œ๋งˆ๋Š” https://jekyllthemes.io/theme/mediumis..
์ด๊ฒƒ์ €๊ฒƒ ํด๋ก ์ฝ”๋”ฉํ•ด๋ณด๋ฉฐ ๋งŒ๋“ค๋˜ ์‹œ์ ˆ์— ๋งŽ์ด ์ ‘ํ–ˆ๋˜ mongoDB. ์ด ๋•Œ๋Š” ๊ทธ์ € ๋”ฐ๋ผํ•˜๊ธฐ ๊ธ‰๊ธ‰ํ•ด์„œ mongoDB ๋ž‘ atlas ๋ถ™๋Š”๊ฒŒ ๋ญ๊ฐ€ ๋‹ค๋ฅธ์ง€ ๋ชฐ๋ž๋‹ค. ๊ทธ๋ƒฅ ์—…๋ฐ์ดํŠธ ๋ฒ„์ ผ์ธ๊ฐ€? ๋ผ๋ฉฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ทธ์ € ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ์— ๋ฐ”๋นด๋˜ ๊ทธ ์‹œ์ ˆ. ์ด์ œ ์ง€์‹์˜ ํ’€์„ ๋„“ํ˜€๊ฐ€์•ผํ•˜๋Š” ์ˆœ๊ฐ„์ด ์™”๋‹ค. MongoDB ์˜คํ”ˆ ์†Œ์Šค NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. MongoDB Atlas MongoDB์˜ ๊ด€๋ฆฌํ˜• ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ, MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํด๋ผ์šฐ๋“œ์—์„œ ์‰ฝ๊ฒŒ ๋ฐฐํฌ, ์šด์˜ ๋ฐ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค MongoDB vs MongoDB Atlas 1. ๋ฐฐํฌ ๋ฐ ์šด์˜ MongoDB MongoDB๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค. ์„œ๋ฒ„์˜ ํ™•์žฅ, ๋ณต์ œ ์„ค์ • ๋“ฑ์„..
๊ฐœ๋ฐœ์ž๋กœ ์ปค๋ฆฌ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ผํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ง€ 1๋…„์ด ์ง€๋‚ฌ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๊ณ ๋Œ€ํ•˜๊ณ  ๊ณ ๋Œ€ํ–ˆ๋˜ 1๋…„์ด ์ง€๋‚ฌ๋‹ค. '1๋…„์ฏค ์ง€๋‚˜๋ฉด ๋‚˜๋Š” ๊ฝค๋‚˜ ๋งŽ์ด ์„ฑ์žฅํ•ด์žˆ๊ฒ ์ง€?', '์ด๊ฒƒ์ €๊ฒƒ ๋‹ค ํ•  ์ค„ ์•Œ๊ฒ ์ง€?', '๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์–ด๋Š ์ •๋„ ๊ฐ์ด ์žกํ˜€์žˆ๊ฒ ์ง€?' ๋“ฑ์˜ ๋‚˜ ์Šค์Šค๋กœ๊ฐ€ ๊ฐ€์กŒ๋˜ ๊ธฐ๋Œ€๋“ค์ด ๋งŽ์•˜๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์จ๋จธ๋ฆฌ ํ•ด๋ณด์ž๋ฉด ์Šค์Šค๋กœ์—๊ฒŒ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์„ฑ์žฅ์€ ์•„์ง ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์„ฑ์žฅ์„ ์•ˆ ํ–ˆ๋‹ค๊ณ ๋Š” ๋ชปํ•˜๊ฒ ์ง€. ์–ด์จŒ๋“  '๊ฒฝํ—˜์น˜'๋ฅผ ์–ป์—ˆ์œผ๋‹ˆ๊น ๋ง์ด๋‹ค. ์•„์ง๊นŒ์ง€๋„ ์–ด๋””๋ก ๊ฐ„ ์ด์ง์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, '์‹ ์ž…'์˜ ํƒ€์ดํ‹€์„ ๋–ผ์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ์ธ 30๋Œ€ ์ค‘๋ฐ˜์˜ ์‹ ์ž… 'ํ”„๋ก ํŠธ์—”๋“œ' ๊ฐœ๋ฐœ์ž์˜ ํšŒ๊ณ ์ด์ž ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋Š๋‚€ ์ ์„ ์ด์•ผ๊ธฐํ•ด๋ณผ๊นŒ ํ•œ๋‹ค. 1. ๊ฐœ๋ฐœ์ผ๋กœ ๋จน๊ณ  ์‚ด ์ˆ˜ ์žˆ๊ฒ ๊ตฌ๋‚˜! ์ง€๋‚œ 1๋…„์„ ๋Œ์ด์ผœ๋ณด๋ฉด์„œ ์ œ์ผ ๋จผ์ € ๋“  ์ƒ๊ฐ์€ ๋ฐ”๋กœ ํ•˜๋‚˜๋‹ค. "์•„~! ๋‚˜..
container๋ฅผ ์ƒ‰์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋กœ ๋„ฃ์–ด์•ผ ํ•  ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋•Œ, ๊ฐ„๋‹จํ•˜๊ฒŒ~ ๋‘ ๊ฐ€์ง€ ์ •๋„์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค! 1. src ์ด๋ฏธ์ง€ ์ฃผ์†Œ๋ฅผ ์“ธ ๋•Œ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( src ), fit: BoxFit.cover ), ), ) 2. image assets ์„ ์“ธ ๋•Œ Container( width: 155.0.w, decoration: BoxDecoration( image: DecorationImage( image: AssetImage('/assets/image.png'), fit: BoxFit.cover ), ), ) ์ด๋ฏธ์ง€ ์ฃผ์†Œ๋ฅผ ์–ด..
์šด์˜ ์„œ๋น„์Šค์™€ ์Šคํ…Œ์ด์ง€ ๋‹จ๊ณ„ ์„œ๋น„์Šค์˜ ๊ฐ„๊ทน์ด ๋‚ ์ด ๊ฐˆ์ˆ˜๋ก ์‹ฌํ•ด์ง€๊ณ  ์žˆ๋‹ค. ๊ธฐ์กด์˜ ์šด์˜๋˜๋Š” ์„œ๋น„์Šค์˜ ์ˆ˜์ •์ด๋‚˜, ๋ฒ„๊ทธ ํ˜น์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•  ๋•Œ ๋‚œ๊ฐํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์Šคํ…Œ์ด์ง€ ๋‹จ๊ณ„์—์„œ QA ํ›„์— ์ง„ํ–‰์„ ํ•ด์•ผํ•˜๋‹ค๋ณด๋‹ˆ ๊ผฌ์—ฌ์„œ ์Šคํ…Œ์ด์ง€์— ์žˆ๋Š” ์šด์˜ ์„œ๋น„์Šค์—๋Š” ์—†๋Š” ํŒŒ์ผ์ด merge ๋˜์–ด์žˆ์„ ๋•Œ๋„ ์žˆ๊ณ  ์•Œ๊ฒŒ๋ชจ๋ฅด๊ฒŒ ์ด์ƒํ•˜๊ฒŒ ๊ผฌ์ผ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ...์•ˆ ์ƒ๊ธธ๊ฒƒ ๊ฐ™์€๊ฐ€? .... ์ƒ๊ธด๋‹ค. ์™œ๋ƒ ๋Œ€๋ถ€๋ถ„์€ ํ˜‘์—…์„ ํ•˜๋‹ˆ๊น ๋ง์ด๋‹ค .... ใ…Ž..... ์˜ˆ์ƒ์น˜๋ชปํ•˜๊ฒŒ ์ƒ๊ธด๋‹ค์•„์•„์•„์•„ ๋ฌดํŠผ ์ด๋Ÿฐ ๋‚œ๊ฐํ•œ ์ƒํ™ฉ์—์„œ ํ•ด๋‹น ์ž‘์—… ์ปค๋ฐ‹๋“ค๋งŒ cherrypick์ด๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋ฝ‘์•„๋‚ด์„œ ์šด์˜ ์„œ๋น„์Šค์— merge ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค. Cherry Pick (์ฒด๋ฆฌํ”ฝ) - ํŠน์ • commit๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ โ–ถ Cherry Pick..
React-Query ์žฅ์  ์ค‘์˜ ํ•˜๋‚˜์˜€๋˜ ์บ์‹ฑ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์บ์‹ฑ์„ ์ด์•ผ๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์„ tool์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ReactQueryDevtools ์ด๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ fetching ๋˜๊ณ  ๊ทธ ์ƒํƒœ๊ฐ’์ด๋ผ๋˜๊ฐ€ ๋‚ด๋ถ€ ๋‚ด์šฉ์„ ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” tool์ž…๋‹ˆ๋‹ค. react query ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. โ–ถ ReactQueryDevtools ์‚ฌ์šฉ๋ฒ• import { ReactQueryDevtools} from 'react-query/devtools'; //์ด๋ ‡๊ฒŒ import ํ•ฉ๋‹ˆ๋‹ค function App() { return ( ); } ์•„๋ž˜์™€ ๊ฐ™์ด ํ™”๋ฉด ํ•˜๋‹จ ์˜ค๋ฅธ์ชฝ์— ๋œฌ ๋ฒ„ํŠผ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์–ด์š”. ํด๋ฆญ์„ ํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋œน๋‹ˆ๋‹ค. tools ์•ˆ์—์„œ fresh ,..
React-Query ๋น„๋™๊ธฐ ํ†ต์‹  fetch, axios ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋น„๋™๊ธฐ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ react-query๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค(์บ์‹ฑ, ๊ฐ’ ์—…๋ฐ์ดํŠธ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋“ฑ)์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋„ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๋กœ์ง์„ store์—์„œ ๊ฐœ๋ฐœํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. store๋Š” client์—์„œ state๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€์— client data ์™€ server data ๊ฐ€ ๊ณต์กด์„ ํ•˜๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„์ด ์ƒ๊ฒจ๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ํ˜ผ๋ž€์„ ๋นš์–ด๋‚ด๋Š”๋ฐ react-query๋ฅผ ..
์•ฝ 1์—ฌ๋…„ ๊ฐ€๊นŒ์ด ํ”Œ๋Ÿฌํ„ฐ๋กœ ์•ฑ์„ ์ œ์ž‘ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ์†Œ์†Œํ•œ ๊ฐœ๋…๋“ค์„ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชป ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. GetX๋กœ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ stateless ์œ„์ ฏ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์‚ฌ์‹ค stateful์ด๋ผ๊ณ  getx๋ฅผ ๋ชป ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋…์ด ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค๋ณด๋‹ˆ ๊ทธ์ € ์•ˆ ์“ฐ๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์•ˆ์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ๋งŒ์œผ๋กœ ์œ„์ ฏ์ด ๋ณ€๊ฒฝ๋˜์•ผํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ทธ๋ƒฅ stateless๋กœ ์จ์•ผํ•˜๋Š”๊ฑธ๊นŒ getx๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฑธ๊นŒ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๊ณ , ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ธ์ง€ ์•Œ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•ด๋ณด๋ ค๊ณ  ์ž‘์„ฑํ•ด๋ณธ๋‹ค. โœ… Stateless Widget ํ™”๋ฉด์ด ๋กœ๋“œ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ๊ทธ๋ ค์ง€๋Š” state๊ฐ€ ์—†๋Š” ์œ„์ ฏ์œผ๋กœ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ Data๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ์˜๋ฏธ ์ด๋ฒคํŠธ ..
โ™จ๏ธ ๋ฌธ์ œ์ƒํ™ฉ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ์ค‘์— ๊ธ€์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด๋ฅผ ๋“ฑ๋ก, ์‚ญ์ œ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ. Hive์— ์ €์žฅํ•ด๋‘๊ณ  ํ•ด๋‹น ์•„์ดํ…œ์„ ๊บผ๋‚ด์™€์„œ obx๋กœ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ์‚ญ์ œ, ๋“ฑ๋ก์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐฐ์—ด์˜ ๋’ค์— ๋ถ™๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์•ž์— ๋ถ™๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๋’ค๋กœ ๋ถ™์ผ ๊ฑฐ๋ฉด reverse๋ฅผ ์‹œ์ผœ์„œ ๋ฐฐ์—ด์ด ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ํ•ด์ค˜์•ผ ํ•˜๋Š” ์ƒํ™ฉ. ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๊ดœ์ฐฎ์€๋ฐ, ๋ฌธ์ œ๋Š” ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ญ์ œ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค. ๋ฐฐ์—ด ์•ž์ชฝ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ๋”๋‹ˆ ์ธ๋ฑ์Šค๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ธ์ง€ ํ•ด๋‹น ๋‹จ์–ด๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค๋ฅธ ๋‹จ์–ด๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ 10๊ฐœ ์ด์ƒ์€ ์ถœ๋ ฅ์‹œํ‚ค์ง€ ๋ง๋ผ๋Š” ์กฐ๊ฑด๊นŒ์ง€ ๋ถ™์—ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ โœ… ์ตœ๊ทผ๊ฒ€์ƒ‰์–ด ์—…๋ฐ์ดํŠธ ๋  ๋•Œ ๋ฐฐ์—ด ์•ž์ชฝ์œผ๋กœ ๋ณด๋‚ด๊ธฐ โžก๏ธ inser..
๐Ÿ’ก localStorage vs Cookie ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์„ค์ •ํ•˜๊ธฐ ๋กœ๊ทธ์ธํ•  ๋•Œ jwt web token์„ ๋ฐ›์•„์„œ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•ด ๋‘๊ณ  api ํ˜ธ์ถœ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๊บผ๋‚ด ์“ธ ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋กœ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ •ํ•ด๋†“๊ณ  ์“ฐ์ง€๋Š” ์•Š์•˜๋Š”๋ฐ, ์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋กœ์ง์ด ์ˆ˜์ •๋˜๊ณ  ํ•˜๋ฉด์„œ ํ† ํฐ ์ž์ฒด๋ฅผ ์ง€์›Œ๋‚ด์„œ ์ž๋™๋กœ๊ทธ์•„์›ƒ์„ ์‹œ์ผœ๋ฒ„๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚œ ๊ณ ๋ฏผ์— ๋น ์กŒ๋‹ค. ์›๋ž˜ localStorage์— ํ† ํฐ์„ ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, localStorage์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ฟ ํ‚ค๋‚˜ sessionStorage์— ์ €์žฅํ•ด์„œ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฑธ๊นŒ? ๋ผ๋ฉฐ ์ด๋ฆฌ์ €๋ฆฌ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด์•˜๋‹ค. ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋˜ ๋‹ค๋ฅธ ๊ณ ๋ฏผ์— ๋น ์กŒ๋‹ค. ์–ด๋–ค ๊ฒŒ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ผ๊นŒ? ..
๋ฐ(Ming) ๐Ÿฐ
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (8 Page)