๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?

๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง36

๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.11.์ˆ˜ Today I Learn 220511 ์˜ค๋Š˜์€ Vuex์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์˜€๋‹ค. Vuex๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์žˆ์„ ๋•Œ ๊ธฐ์กด์˜ Vueํ™˜๊ฒฝ์€ ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค data๋ฅผ ๋“ค๊ณ  ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด emit๊ณผ props๋ฅผ ๊ณ„์† ๊ฑฐ์ณ ํ†ต์‹ ํ•ด์•ผ ํ•˜๊ณ  ๋‚˜์™€ ๊ฐ™์€ ๋™๊ธฐ component์™€ ๋Œ€ํ™”ํ•  ๋•Œ๋„ ์—ฌ๋Ÿฌ๋ช…์„ ๊ฑฐ์ณ ํ†ต์‹ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด Vuex๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค! Vuex์—์„œ๋Š” index.js๋ผ๋Š” ๊ณณ์—์„œ (๋งˆ์น˜ ๊ณต์šฉํ†ต์žฅ) data๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ํŽธ๋ฆฌ์„ฑ์€ ์ฆ๊ฐ€ ๋œ ๋ฐ˜๋ฉด ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์ž˜ ํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์ƒ๊ฒผ๋‹ค! ์–ด์จ‹๋“ , Vuex์˜ core ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. - State โ€‹ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์ƒํƒœ ์ •๋ณด (data) .. 2022. 5. 11.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.10.ํ™” Today I Learn 220510 ์–ด์ œ ๋งŒ๋“ค์—ˆ๋˜ ๊ณผ์ œ์—์„œ ์‚ฌ์‹ค /lotto/6์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด์„œ path๋ฅผ '/lotto/6'์œผ๋กœ ์ง€์ •ํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ, ์˜ค๋Š˜ ์™œ ๋„˜์–ด๊ฐ€์ง€ ์•Š์•˜๋Š”์ง€ ๋ฐœ๊ฒฌํ•˜์˜€๋‹ค..! ์—ญ์‹œ๋‚˜ ํœด๋จผ์—๋Ÿฌ์˜€๊ณ  params๋ฅผ parmas๋ผ๊ณ  ์ ์–ด์„œ ์ƒ๊ธด ์˜ค๋ฅ˜์˜€๋‹ค....!! ๋˜ ๋กœ๋˜ ํŽ˜์ด์ง€์—์„œ ์ˆซ์ž 6๊ฐœ๋ฅผ ๋ฝ‘๋Š” ํ•จ์ˆ˜์—์„œ this.$router.params.lottoNum์ด๋ผ ์ ์–ด์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์—ˆ๋‹ค!!! this.$route.params.lottoNum์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, lunchํŽ˜์ด์ง€์—์„œ lottoํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ this.$router.push๋ผ๊ณ  ์ ์–ด์„œ route์™€ router๊ฐ€ ํ—ท๊ฐˆ๋ ธ๋‹ค! ์™œ lunchํŽ˜์ด์ง€์—์„œ๋Š” ๋‹ค๋ฅธ URL๋กœ ์ด๋™ํ•˜๋ ค๋ฉด this.$router.push๋ผ ์“ฐ๋Š” .. 2022. 5. 10.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.09.์›” workshop - Vue CLI ์˜ค๋Š˜์€ Node.js๋ฅผ ์„ค์น˜ํ•˜๊ณ  Vue CLI๋ฅผ ์ด์šฉํ•ด Vue Router์•ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ๋กœ๋˜๋ฒˆํ˜ธ ์ถ”์ฒจ๊ธฐ(?)์™€ ์ ์‹ฌ๋ฉ”๋‰ด๋ฅผ ๊ณ ๋ฅด๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ œ๋ฅผ ํ–ˆ๋‹ค. javascript๋งŒ์„ ์ด์šฉํ•ด ์ด ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์‚ฌ์‹ค ์ข€ ํž˜๋“ค์—ˆ๋Š”๋ฐ, lodash๋ฅผ importํ•ด์„œ ์“ฐ๋‹ˆ ์ˆซ์ž๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๊ฒƒ๋„ ํ›จ์”ฌ ์ €๋ฒˆ๋ณด๋‹ค ํŽธํ–ˆ๋‹ค!๋˜ํ•œ ์ ์‹ฌ๋ฉ”๋‰ด ๊ณ ๋ฅด๋Š” ๊ฒƒ๋„ lodash๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ํ•œ๊ฒฐ ๊ฐ„๋žตํ•ด์ง„๊ฑฐ ๊ฐ™๋‹ค. ๋˜ํ•œ, Vue CLI๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•˜๋‹ˆ ์ „๋ณด๋‹ค ํ›จ์”ฌ ๊น”๋”ํ•˜๊ณ  ๋น„๋™๊ธฐํ™” ์‹œํ‚ค๋Š” ๊ฒƒ๋„ ์•Œ์•„์„œ ๋˜๋‹ˆ๊นŒ ์ข‹์€๊ฑฐ ๊ฐ™๋‹ค. ์ง€๋‚œ์ฃผ์™€ ๊ทธ์ „ ์ฃผ์—๋Š” javascript์— ์ ์‘ํ•˜๋Š๋ผ ํž˜๋“ค์—ˆ์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•˜๋Š”๊ฑด ์•„์ง ์–ด๋ ค์›Œ๋„ ์žฌ๋ฐŒ๋Š”๊ฑฐ ๊ฐ™๋‹ค. App.vue Lunch | L.. 2022. 5. 9.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.06.๊ธˆ Today I Learn 220506 ์˜ค๋Š˜์€ AJAXํ†ต์‹ ์„ ์ด์šฉํ•ด ์„œ๋ฒ„์—์„œ JSON๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ๋น„๋™๊ธฐ๋กœ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ์•„์ง axios๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ํœด๋จผ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋‚ฌ์—ˆ๋‹ค. ์–ด๋ ค์› ๋˜ ์  ์œ ์ € ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ url์„ ์ฐฉ๊ฐํ•ด์„œ accounts/pk/follow/๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, accounts/username/follow๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ 404 ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜์„œ 1์‹œ๊ฐ„ ๋„˜๊ฒŒ ๊ตฌ๊ธ€๋ง ํ•˜๋‹ค๊ฐ€ network ๋ณด๋Š”๋ฒ•์„ ๊ณต๋ถ€ํ–ˆ๋‹ค...^.ใ…  ๊ทธ ์ค‘ ๋‚˜์ค‘์— ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ๋‚จ๊ฒจ๋†“๋Š” ๋ธ”๋กœ๊ทธ ๋งํฌ(https://github.com/Lagom92/TIL/blob/master/web/400%20%EC%97%90%EB%9F%AC%20%ED%95.. 2022. 5. 6.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.03.ํ™” ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. 2022. 5. 3.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.05.02.์›” Today I Learn 220502 ์˜ค๋Š˜์€ ๋น„๋™๊ธฐ์™€ ๋™๊ธฐ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ๋น„๋™๊ธฐ์™€ ๋™๊ธฐ์˜ ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋™๊ธฐ :์ˆœ์ฐจ์ , ์ง๋ ฌ์  Task ์ˆ˜ํ–‰ , ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ๋‹ค์Œ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง (blocking) ๋น„๋™๊ธฐ :๋ณ‘๋ ฌ์  Task ์ˆ˜ํ–‰, ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง (non-blocking) JavaScript๋Š” single threaded์—ฌ์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ main thread๋ผ ๋ถˆ๋ฆฌ๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ์—์„œ๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Call Stack์ด ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JavaScript๋Š” ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด๋ฒคํŠธ๋“ค์„ ๋‹ค๋ฅธ๊ณณ (Web API)์œผ๋กœ ๋ณด๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๊ณ , ์ฒ˜๋ฆฌ.. 2022. 5. 2.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.28.๋ชฉ Today I Learn 220428 setAttribute()๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ setAttribute๋Š” ๋„ˆ๋ฌด ๊ฐ•๋ ฅํ•ด์„œ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ. ์ด๋Š” inline์œผ๋กœ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ CSS ํŒŒ์ผ์—์„œ ์ ์šฉํ•œ ์„ค์ •๋ณด๋‹ค ์šฐ์„ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค!! ๋”ฐ๋ผ์„œ, ์ •ํ™•ํžˆ๋Š” setAttribute()์™€ classList๊ฐ€ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” ๋Œ€์ƒ์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฆ„ #setAttribute()๋Š” HTML ์š”์†Œ์— inline ์Šคํƒ€์ผ๋กœ ์–ด๋– ํ•œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ -class ์†์„ฑ -style ์†์„ฑ -href ์†์„ฑ -....๋“ฑ๋“ฑ #classList()๋Š” ์š”์†Œ์˜ ์—ฌ๋Ÿฌ ์†์„ฑ ์ค‘ ํ•˜๋‚˜์ธ ํด๋ž˜์Šค ์†์„ฑ๋งŒ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ ์š”์†Œ์— ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์ œ๊ฑฐ ํ•˜๋Š”์‹์œผ๋กœ ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  ์‹ถ๋‹ค๋ฉด, classList๋ฅผ .. 2022. 5. 2.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.27.์ˆ˜ Today I Learn 220427 ์˜ค๋Š˜์€ JavaScript์˜ Dom ์กฐ์ž‘์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ์žŠ๊ณ ์žˆ๋˜ html&css ๊ฐœ๋…์„ ๋„์ง‘์–ด์˜ค๋ ค๋‹ˆ ์ข€ ํ—ท๊ฐˆ๋ ธ๋‹ค. ์ด๋ฒˆ์ฃผ ๊ธˆ์š”์ผ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ์“ฑ ํ›‘์–ด๋ด์•ผ๊ฒ ๋‹ค. ์˜ค๋Š˜ ์›Œํฌ์ƒต ๊ณผ์ œ๋ฅผ ํ•˜๋Š”๋ฐ ์•ฝ๊ฐ„ ๋‚ด์šฉ์ด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์–ด์„œ ๊ณผ์ œ ํ’€์ดํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค. ์†์„ฑ๊ฐ’ ์ง€์ •ํ•ด์ฃผ๋Š”๊ฑด ์ž˜ ํ–ˆ๋Š”๋ฐ, tag๋ฅผ ์—ฐ๊ฒฐํ•ด ์ค„ ๋•Œ ์•ฝ๊ฐ„ ํ—ท๊ฐˆ๋ ธ๊ณ  // div#app ์š”์†Œ ์„ ํƒ const divTag = document.querySelector('#app') // h1 ํƒœ๊ทธ๋ฅผ createElement ๋กœ ์ƒ์„ฑ const h1Tag = document.createElement('h1') // ์ƒ์„ฑํ•œ h1ํƒœ๊ทธ์˜ ๋‚ด์šฉ์„ '์˜ค๋Š˜์˜ Todo' ๋กœ ์„ค์ • h1Tag.innerText = '์˜ค๋Š˜์˜ Todo' .. 2022. 5. 2.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.25.์›” ์˜ค๋Š˜์€ JavaScript๋ฅผ ์ƒˆ๋กœ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋˜ํ•œ ์˜ค๋Š˜์€ Java์˜ ์กฐ๊ฑด๋ฌธ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. ์˜ค๋Š˜ ๋“  ์ƒ๊ฐ์€ ์ตœ๊ทผ์— ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ์‹œํ—˜์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋ณด์•˜๋˜ Java๋‚˜ C์–ธ์–ด ์ฝ”๋“œ๋“ค์ด ์ง€๊ธˆ ๋ฐฐ์šฐ๋Š” JavaScript์™€ ๊ฒฐ์ด ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์—ˆ๋‹ค. ํŒŒ์ด์ฌ์„ ๋จผ์ € ๋ฐฐ์šฐ๊ณ  ๋ฐฐ์šฐ๋‹ค๋ณด๋‹ˆ, ํŒŒ์ด์ฌ์€ ์ด๋Ÿฐ๋ฐ ๊ตณ์ด...? ์ด๋ ‡๊ฒŒ ์“ฐ๋„ค... ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๊ฐ€๋” ๋“ค์ง€๋งŒ ๊ฐ๊ฐ์˜ ์–ธ์–ด๋งˆ๋‹ค ์žฅ๋‹จ์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์˜ค๋Š˜ ๋ฐฐ์šฐ๋ฉด์„œ ์‹ ๊ธฐํ–ˆ๋˜ ์ ! JavasScript๋Š” ๋ธŒ๋ผ์šฐ์ € ์กฐ์ž‘ํ•˜๋Š” ์œ ์ผํ•œ ์–ธ์–ด์ด๋‹ค. ๊ทธ๋ž˜์„œ F12 ๊ฐœ๋ฐœ์ž๋„๊ตฌ์˜ console์ฐฝ์„ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์‹ ๊ธฐํ•˜๊ฒŒ ๋‹ค๊ฐ€์™”๋‹ค. JavaScript๋ฅผ ๋ฐฐ์šฐ๋Š” ์ด์œ ๋Š” ๋ธŒ๋ผ์šฐ์ €(BOM)๊ณผ ๊ทธ ๋‚ด๋ถ€์˜ ๋ฌธ์„œ(DOM)๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•™์Šตํ•œ๋‹ค. ์˜ค๋Š˜์˜ ๋‚˜.. 2022. 4. 25.
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.22.๊ธˆ ์˜ค๋Š˜์€ M:N์„ ์ด์šฉํ•˜๊ณ  REST API๋ฅผ ํ™œ์šฉํ•œ ํŽ˜์ด์ง€ ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค. ์‚ฌ์‹ค M:N์˜ ๊ฐœ๋…์ด ์•„์ง ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฝ๋˜์ง€ ์•Š์•„์„œ models.py์™€ serializers.py๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ํž˜๋“ค์—ˆ๋‹ค. ๋˜ํ•œ, python manage.py loaddata movies/actors.json movies/movies.json movies/reviews.json ํ•  ๋•Œ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค. ๊ทธ๋ž˜์„œ models.py ๋ถ€๋ถ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ๋‹ค. from django.db import models # Create your models here. class Actor(models.Model): name = models.CharField(max_length=100) class Movie(models.Model): title.. 2022. 4. 22.