ํด๋ฆฐ ์ฝ๋ ์ฝ์ผ๋ฉฐ ๋ผ๋ง์๋ ๋ด์ฉ ์ค 3๊ฐ์ง ์ง๋ฆฌ ๋ฅผ ๊ณ ๋ฅด๊ณ , ์ง๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์ ์ด 3๊ฐ์ง๋ฅผ ๋ง๋ค๊ธฐ. ์ง๋ฆฌ 1. try/catch ๋ธ๋ก์ ๋ณ๋ ํจ์๋ก ๋ฝ์๋ด๋ ํธ์ด ์ข๋ค. (p.58) ๋ฌด์์ ๊ณ ์ณค๋๊ฐ? ๐ Before const saveAsImageHandler = async () => { const target = document.getElementById('content'); if (!target) return alert('๊ฒฐ๊ณผ ์ ์ฅ์ ์คํจํ์ต๋๋ค.'); alert( '์๋ก์ด ์ฐฝ์ด ์ด๋ฆฌ๋ฉด\nPC์์๋ ์ฐํด๋ฆญ -> ์ด๋ฏธ์ง ์ ์ฅํ๊ธฐ\n๋ชจ๋ฐ์ผ์ ์ด๋ฏธ์ง๋ฅผ ๊พน ๋๋ฌ์ฃผ์ธ์!\n*์๋ก์ด ์ฐฝ์ด ์ ์ด๋ฆฐ๋ค๋ฉด ํ์ ์ ํด์ ํด์ฃผ์ธ์*' ); try { const canvas = await html2canvas(target..
Day 20, 21 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 10์ฅ ํด๋์ค(p.172 ~ p.192) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ฒซ๋ฒ์งธ ๊ท์น์ ํฌ๊ธฐ๋ค. ํด๋์ค๋ ์์์ผ ํ๋ค. ๋ ๋ฒ์งธ ๊ท์น๋ ํฌ๊ธฐ๋ค. ๋ ์์์ผ ํ๋ค.(p.172) ํด๋์ค ์ค๋ช ์ ๋ง์ผ("if"), ๊ทธ๋ฆฌ๊ณ ("and"), -(ํ)๋ฉฐ("or), ํ์ง๋ง("but")์ ์ฌ์ฉํ์ง ์๊ณ ์ 25๋จ์ด ๋ด์ธ๋ก ๊ฐ๋ฅํด์ผ ํ๋ค.(p.175) ๋จ์ผ ์ฑ ์ ์์น์ ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋, ๋จ ํ๋๋ฟ์ด์ด์ผ ํ๋ค๋ ์์น์ด๋ค.(p.175) ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋ ์์ ์ ํ๋ก๊ทธ๋จ๋ง์ด ์๋๋ผ ํ๋ก๊ทธ๋๋ฐ ํ๋์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํ๋ค.(p.176) "๋๊ตฌ ์์๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๊ณ ์ถ์๊ฐ? ์์ ์๋์ ๋ง์ด ๋๊ณ ๊ธฐ๋ฅ๊ณผ ์ด๋ฆ์ด ๋ช ํํ ์ปดํฌ๋ํธ๋ฅผ ๋๋ ๋ฃ๊ณ ์ถ์๊ฐ? ์๋..
Day 17, 18 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 9์ฅ ๋จ์ ํ ์คํธ(p.153 ~ p.170) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ TDD ๋ฒ์น ์ธ ๊ฐ์ง(p.155) ์ฒซ์งธ ๋ฒ์น: ์คํจํ๋ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค. ๋์งธ ๋ฒ์น: ์ปดํ์ผ์ ์คํจํ์ง ์์ผ๋ฉด์ ์คํ์ด ์คํจํ๋ ์ ๋๋ก๋ง ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ค. ์ ์งธ ๋ฒ์น: ํ์ฌ ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋๋ก๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ํ ์คํธ ์ฝ๋๊ฐ ๋ณต์กํ ์๋ก ์ค์ ์ฝ๋๋ฅผ ์ง๋ ์๊ฐ๋ณด๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๊ธฐ ์ญ์์ด๋ค. ์ค์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด ๊ธฐ์กด ํ ์คํธ ์ผ์ด์ค๊ฐ ์คํจํ๊ธฐ ์์ํ๋ฉด, ์ง์ ๋ถํ ์ฝ๋๋ก ์ธํด, ์คํจํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ ํต๊ณผ์ํค๊ธฐ ์ด๋ ค์์ง๋ค.(p.156) ํ ์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋ ๋ชป์ง์๊ฒ ์ค์ํ๋ค.(p.157) ์ฝ..
๐ ์ถ์ฒํ๋ TIL @Flynn ๋ ๋งํฌ: Day11 ๋ด๊ฐ ์์ฑํ๋ Day11์ ๋ฆฌํฉํ ๋ง ๋ถ๋ถํ๊ณ ๊ตฌ์กฐ ์์ฒด๋ ๋น์ทํ์ง๋ง ๋ด ์ฝ๋์์ ๋ญ๊ฐ ์ข ๋ ๋ถ์กฑํ์ง ์๊ฒ ํด์ฃผ์๋ Flynn๋์ ์ฝ๋์๋ค. ๋ณ์๋ช , ํจ์๋ช , ํจ์ ๊ธฐ๋ฅ ๋ถ๋ถ์์ ์ต~๋ํ ๋ช ํํ๊ฒ ์ด๋ฆ์ ์ง๊ณ ์ธ๋ถํ ํ ๊ฒ์ ๋ณด๊ณ ์ด๋ ๊ฒ๊น์ง ํ ์ ์์๊ตฌ๋ ๋๊ผ๋ Flynn๋์ ์ฝ๋์๋ค. @์น์ ๋ ๋งํฌ: Day12 ์ง๊ธ๊น์ง ์ฝ์ผ๋ฉด์ ๊ฐ์ธ์ ์ผ๋ก ์ ์ผ ์ด๋ ค์ ๋ ๋ถ๋ถ์ด '๊ฐ์ฒด์ธ ์๋ฃ๊ตฌ์กฐ' ๋ถ๋ถ์ด์๋๋ฐ ์น์๋๊ป์๋ ์ธ๋ฐํ๊ฒ ์ฝ๋ ๋ถ๋ถ๋ ์ธ์ฉํ๊ณ ์ ๋ฆฌ๋ ์ ํ์ ๊ฒ ๊ฐ๋ค. @Arthur Coker ๋ ๋งํฌ: Day15 '์ค๋ฅ ์ฒ๋ฆฌ'์ฅ์์ ์ง์ ์ฝ๊ณ ์์ ์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ ๊ฒ์ ์์ฑํ๊ณ ๋ฌธ์ ์ ๊น์ง ์ ์ํ๋ ๋ถ๋ถ์ด ์ธ์๊น์๋ค.
Day 13, 15 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 7์ฅ ์ค๋ฅ ์ฒ๋ฆฌ(p.130~p.142) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ ๊นจ๋ํ ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ์คํ ์ฐ๊ด์ฑ์ด ์๋ค. ์๋น์ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ์ ์ผ๋ก ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋์ ์ข์ฐ๋๋ค.(p.130) ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ.(p.130) ์์ธ๊ฐ ๋ฐ์ํ ์ฝ๋๋ฅผ ์งค ๋๋ try-catch-finally ๋ฌธ์ผ๋ก ์์ํ๋ ํธ์ด ๋ซ๋ค. ๊ทธ๋ฌ๋ฉด try ๋ธ๋ก์์ ๋ฌด์จ ์ผ์ด ์๊ธฐ๋ ์ง ํธ์ถ์๊ฐ ๊ธฐ๋ํ๋ ์ํ๋ฅผ ์ ์ํ๊ธฐ ์ฌ์์ง๋ค.(p.131) ์ค๋ฅ ๋ฉ์์ง์ ์ ๋ณด๋ฅผ ๋ด์ ์์ธ์ ํจ๊ป ๋์ง๋ค. ์คํจํ ์ฐ์ฐ๊ณผ ์คํจ ์ ํ๋ ์ธ๊ธํ๋ค.(p.135) ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋ฅ๋ฅผ ์ ์ํ ๋ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ด์ฌ์ฌ๋ ์ค๋ฅ๋ฅผ ์ก์๋ด๋ ๋ฐฉ๋ฒ์ด ๋์ด์ผ ํ๋ค.(p.135) null์ ๋ฐํํ๋ ์ฝ๋๋..
Day 12 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 6์ฅ ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ(p.118~p.128) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ ๊ฐ๋ฐ์๋ ๊ฐ์ฒด๊ฐ ํฌํจํ๋ ์๋ฃ๋ฅผ ํฌํํ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ฌ๊ฐํ๊ฒ ๊ณ ๋ฏผํด์ผ ํ๋ค.(p.119) ๊ฐ์ฒด๋ ์ถ์ํ ๋ค๋ก ์๋ฃ๋ฅผ ์จ๊ธด ์ฑ ์๋ฃ๋ฅผ ๋ค๋ฃจ๋ ํจ์๋ง ๊ณต๊ฐํ๋ค.(p.119) ์๋ฃ ๊ตฌ์กฐ๋ ์๋ฃ๋ฅผ ๊ทธ๋๋ก ๊ณต๊ฐํ๋ฉฐ ๋ณ๋ค๋ฅธ ํจ์๋ ์ ๊ณตํ์ง ์๋๋ค.(p.119) ์ ์ฐจ์ ์ธ ์ฝ๋๋ ๊ธฐ์กด ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ์ ํจ์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ฝ๋ค. ๋ฐ๋ฉด, ๊ฐ์ฒด ์งํฅ ์ฝ๋๋ ๊ธฐ์กด ํจ์๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ์ ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ธฐ ์ฝ๋ค.(p.122) ์ ์ฐจ์ ์ธ ์ฝ๋๋ ์๋ก์ด ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋ฌ๋ ค๋ฉด ๋ชจ๋ ํจ์๋ฅผ ๊ณ ์ณ์ผ ํ๋ค. ๊ฐ์ฒด ์งํฅ ์ฝ๋๋ ์๋ก์ด ์ด ํจ์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋ฌ๋ ค๋ฉด ๋ชจ๋ ํด๋์ค๋ฅผ ๊ณ ์ณ..
DAY 11 ๐ ๋ฏธ์ : ๋๋ฌ์ด ์ฝ๋๋ฅผ ๊ณ ์น์ ๐ฉ ๋๋ฌ์ด ์ฝ๋ const merry = document.querySelector(".js-clock"); function getClock() { const christmas = new Date("2021, 12, 25"); const date = new Date(); const timeGap = christmas - date; const xDay = Math.floor(timeGap / (1000 * 60 * 60 * 24)); const xHours = Math.floor( (timeGap - xDay * 1000 * 60 * 60 * 24) / (1000 * 60 * 60) ); const xMinutes = Math.floor((timeGap % (60..
Day 10 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 5์ฅ ํ์ ๋ง์ถ๊ธฐ(p.96~p.116) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ ํ๋ก๊ทธ๋๋จธ๋ผ๋ฉด ํ์์ ๊น๋ํ๊ฒ ๋ง์ถฐ ์ฝ๋๋ฅผ ์ง์ผํ๋ค. ์ฝ๋ ํ์์ ๋ง์ถ๊ธฐ ์ํ ๊ฐ๋จํ ๊ท์น์ ์ ํ๊ณ ๊ทธ ๊ท์น์ ์ ํ๊ณ ๊ทธ ๊ท์น์ ์ฐฉ์คํ ๋ฐ๋ผ์ผ ํ๋ค. ํ์ผ๋ก ์ผํ๋ค๋ฉด ํ์ด ํฉ์ํด ๊ท์น์ ์ ํ๊ณ ๋ชจ๋๊ฐ ๊ทธ ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ค. ํ์ํ๋ค๋ฉด ๊ท์น์ ์๋์ผ๋ก ์ ์ฉํ๋ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ค.(p.96) ์ฝ๋ ํ์์ ์์ฌ์ํต์ ์ผํ์ด๋ค. ์์ฌ์ํต์ ์ ๋ฌธ ๊ฐ๋ฐ์์ ์ผ์ฐจ์ ์ธ ์๋ฌด๋ค.(p.96) ์ ์ ํ ํ ๊ธธ์ด๋ฅผ ์ ์งํ๋ผ.(p.96) ์์คํ์ผ๋ ์ ๋ฌธ๊ธฐ์ฌ์ ๋น์ทํ๊ฒ ์์ฑํ๋ค. ์ผ๋ฏ์ ๊ฐ๋จํ๋ฉด์๋ ์ค๋ช ์ด ๊ฐ๋ฅํ๊ฒ ์ง๋๋ค. ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ์ฌ๋ฐ๋ฅธ ๋ชจ๋์ ์ดํด๋ณด๊ณ ์๋์ง ์๋์ง๋ฅผ ํ๋จํ ์ ๋๋ก ์ ๊ฒฝ ์จ์ ์ง๋๋ค. ์์ค ํ์ผ ์ฒซ ๋ถ..
Day 09 ๐ ์ค๋ ์ฝ์ ๋ฒ์ : 4์ฅ ์ฃผ์ (p.83~p.94) ๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ ํจ์๋ ๋ณ์๋ก ํํํ ์ ์๋ค๋ฉด ์ฃผ์์ ๋ฌ์ง ๋ง๋ผ.(p.84) ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ ๋๊ฐ ์ธ์ ๋ฌด์์ ์ถ๊ฐํ๋์ง ๊ท์ ์ฒ๋ผ ๊ธฐ์ตํ๋ค. ์ ์ ์ด๋ฆ์ผ๋ก ์ฝ๋๋ฅผ ์ค์ผ์ํฌ ํ์ ์๋ค.(p.86) ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ ์ฝ๋๋งํผ ๋ฐ์ด์ค๋ฌ์ด ๊ดํ๋ ๋๋ฌผ๋ค.(p.86) ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ด ์ฐ๋ฆฌ๋ฅผ ๋์ ํด ์ฝ๋๋ฅผ ๊ธฐ์ตํด์ค๋ค. ์ด์ ๋ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค. ๊ทธ๋ฅ ์ฝ๋๋ฅผ ์ญ์ ํ๋ผ. ์์ด๋ฒ๋ฆด ์ผ๋ ค๋ ์๋ค. ์ฝ์ํ๋ค.(p.87) ์ฃผ์์ ๋ฌ์์ผ ํ๋ค๋ฉด ๊ทผ์ฒ์ ์๋ ์ฝ๋๋ง ๊ธฐ์ ํ๋ผ. ์ฝ๋ ์ผ๋ถ์ ์ฃผ์์ ๋ฌ๋ฉด์ ์์คํ ์ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ์ง ๋ง๋ผ.(p.88) ์ฃผ์์๋ค ํฅ๋ฏธ๋ก์ด ์ญ์ฌ๋ ๊ด๋ จ ์๋ ์ ๋ณด๋ฅผ ์ฅํฉํ๊ฒ ๋์ฌ๋์ง ๋ง๋ผ...