๊ธ์ด ์ข์์ ๋งํฌ๋ฅผ ํตํด ๊ณต์ ํฉ๋๋ค.( https://junilhwang.github.io/TIL/Javascript/Design/Vanilla-JS-Virtual-DOM/1\. ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ๊ณผ์ 1\. ํ์ฑ 2\. ์คํ์ผ 3\. ๋ ์ด์์
[Tech concert : front-end 2019 - ๋ฐ์ดํฐ ์ํ๊ด๋ฆฌ. ๊ทธ๊ฒ์ ์๋ ค์ฃผ๋ง](๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. FE์์ ์ํ๊ด๋ฆฌ๋? ํ์ด์ง ์์ ์ ํ๋ ํ๋ก ํธ ๊ฐ๋ฐ ๋ฐฉ์์์ ์ด์ ๋ Web app์ผ๋ก ์งํํ์ฌ ๋๊ธฐ, ๋น๋๊ธฐ ๋ก์ง์ ์ํํ๊ณ API๋ฅผ AJA
์ด๋ฒคํธ ๊ด๋ จ ์ด์๋ฅผ ์์ ๋์ค ์๊พธ ํท๊ฐ๋ฆฌ๋ ์ด๋ฒคํธ ์์์ด์ ํธ๋ค ๊ณผ์ ์ ์ ๋ฆฌํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณผ๊นํ๋ค.๋ธ๋ผ์ฐ์ ์์ ์ด๋ฒคํธ๊ฐ ์ด๋ป๊ฒ ๊ฐ์ง๋๋์ง ๋ ์ด๋ป๊ฒ ์ ํ๋๋์ง ํ์ธํด๋ณธ๋ค.์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ํน์ ํ๋ฉด ์์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์์๋ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ ์์์ ์์๋ค๋ก ์
ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ๊ฐ๊ฐ์ ํน์์ ๋ง๋ ๊ฐ๋ฐ ์ธ์ด๊ฐ ์กด์ฌํ๋ค.์ด๋ฌํ ์ธ์ด๋ ์ปดํจํฐ๊ฐ ๋ฐ๋ก ํด์ํ ์ ์๋ ๋จ๊ณ๊ฐ ์๋ ๊ฐ๋ฐ์๊ฐ ์์ฑ(์ฝ๋ฉ)ํ๊ธฐ ํธํ ์ธ์ด(๊ณ ๊ธ์ธ์ด)๋ก ๋์ด์๋ค.๊ณ ๊ธ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ๊ธฐ ์ํด์๋ ๋ฒ์ญ๊ธฐ๊ฐ ํ์ํ๋ค. ์ค๋ ์์๋ณผ ๋ด์ฉ์ด ๋ฐ๋ก ์ด ๋ฒ์ญ๊ธฐ์
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋๋ก ๋์๊ฐ๋ ์ธ์ด์ด๋ค. ํ์ง๋ง ๋น๋๊ธฐ์ ๋ก์ง๋ค๋ก ์ธํด ์ด๋ฅผ ํท๊ฐ๋ คํ๋ ์ฌ๋๋ค์ด ์กด์ฌํ๋ค. ๊ทธ๋์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ๋์ง์ ๋ํด์ ์์๋ณด๊ณ ์ ์ฑ๊ธ ์ค๋ ๋์ธ์ง๋ฅผ ํ์ตํ๋ คํฉ๋๋ค.์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋์ํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ํด์๋ JS
ํด๋ก์ ธ๋ ๋ด๋ถํจ์๊ฐ ์ธ๋ถํจ์์ ์คํ ์ปจํ ์คํธ์ ์ ๊ทผํ ์ ์๋ ๊ฒ์ ๊ฐ๋ฅดํจ๋ค.ํด๋ก์ ธ๋ ํจ์์ ํจ์์ ์ํด ์์ฑ๋๋ ๋ฒ์ ๊ฐ์ฒด๋ฅผ ํจ๊ป ์ง์นญํ๋ ์ฉ์ด.์๋ฐ์คํฌ๋ฆฝํธ๋ ํจ์๊ฐ ์คํ๋ ๋ ์ธ์ ๋, '๋ฒ์' ๊ฐ์ฒด(์คํ ์ปจํ ์คํธ)๊ฐ ์์ฑ๋์ด ํด๋น ํจ์๋ด์์ ์์ฑ๋ ์ง์ญ ๋ณ์๋ฅผ ์ฌ๊ธฐ
๐ ๋ค์ด๊ฐ๊ธฐ ํ ๋ ๊ทธ๋จ ๋ฉ์ ๋ ์๋๋ก์ด๋, iOS, Mac, Window ๋ฑ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฌด๋ฃ ๋ฉ์ ์ ์ ๋๋ค. ํ ๋ ๊ทธ๋จ ๋ฉ์ ์ ์ ์ฅ์ ์ค ํ๋๋ก๋ API๊ฐ ๊ณต๊ฐ๋์ด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋๋ ํ๋ซํผ๊ณผ ์ฐ๊ณํด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ์ ์ ๋๋ค. > ํ ๋ ๊ทธ๋จ ๋ด์ ๋ง๋๋
์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์ด์ํ๋ฉด์ ํ์ํ๋ ํด๋ผ์ด์ธํธ์ ์๋ฌ ๋ก๊ทธ ํธ๋ํน ์์คํ ๋์ ์ ์ ๋ฆฌSPA(Single Page Application) + CSR(Client Side Rendering)๋ก ๊ตฌ์ฑ๋ ์๋น์ค๋ค์ด ๋ง์์ง๊ณ ์์ต๋๋ค. ์๋น์ค๋ฅผ ์ด์ํ๋ค๋ณด๋ฉด ๊ฐ๋ฐ์์ ์์๊ณผ๋
๋ชจ๋ npm package๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๊ฐ์ ํจํค์ง๋ค์ scope๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฐ ์ค์ฝํ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํจํค์ง๋ค์ ์ด๋ฆ์ ์ ํ๋ ๋ฃฐ์ด ์์ต๋๋ค. ๋ฐ๋ก @ symbol๊ณผ slash๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์ฃ .์ด๊ฒ์ scoped packages ๋ผ๊ณ ๋ถ๋ฅด
์๋ฒ์ธก์์ ์์ ํ์ผ์ ๋ฆฌ๋ํ์ฌ ์ํ๋ ์์ ์ ์ํํ๋ ์์ ์ด ์์๋๋ฐ ์์ ํ์ผ์ ๋๋(5๋ง๊ฐ ์ ๋)์ ๋ฐ์ดํฐ๋ณด๋ค ์ด๊ณผ์ผ๋ response time์ด ์์๋ณด๋ค ๊ธธ์ด์ง๋ ์ด์๊ฐ ์๊ฒผ๋ค. ๋ ๊ทธ ์๋ต์๋๋ฅผ ์์ธก ํ ์ ์์๊ธฐ์ ํ์ ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋งํผ๋ง ์ ์ก ๊ฐ๋ฅํ๋๋ก
ํ๋ก ํธ ๋์์ธ์ ๊ตฌ์ฑํ๋ค๋ณด๋ฉด Modal๋ถ๋ถ์ด ๊ฑฐ์ ํ์์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋ง๋ จ์ด๋ค. ์์ฆ์ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๋ฐ ๋ชจ๋ฌ๋ค์ ์ง์ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ด๊ฐ ๋ง๋ค ํ์๋ ์์ง๋ง๋๋ง์ ์ปค์คํ ๋์์ธ์ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ์๊ณ , ์ด๋ค ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง๋ ๊ถ๊ธํ๊ธฐ๋ํ๋ค. ๊ทธ๋์ ์ค๋
ํ๋ก์ ํธ๋ฅผ ์ฌ๋ฌ๊ฐ ์งํํ๋ค๋ณด๋ฉด ์์ฑ์ ์ค์ ์ ์ค์ํ์ฌ ์ํ์ง์๋ ์์ฑ์๋ช ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๊ฒ์ ๊ณ ์ณ๋ณด๋๋กํ์.ํฐ๋ฏธ๋์ ์ด์ฉํ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ. git log๋ฅผ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ์ค์ํ ์ปค๋ฐ์ ๋ํ ํด์ฌ๊ฐ์ ๊ฐ์ ธ์จ๋ค.git rebase -i {
git์ ์ฌ์ฉํ ๋ ํ์ผ ์ด๋ฆ์ด๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๋์๋ฌธ์๋ง ๋ฐ๊ฟจ์๋ฟ์ธ๋ฐ ์ถ์ ์ด ์๋๋๊ฒฝ์ฐ๊ฐ ์๋ค.์ด๊ฒฝ์ฐ์๋ git์์ ์ ๊ณตํ๋ mv๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ฉด๋๋ค.
ESLint์ Prettier๋ฅผ ์ฌ์ฉํ๋ ์ด์ ESLint ์ ์ฉํ๊ธฐPrettier ์ ์ฉํ๊ธฐESLint + PrettierGit hook์ ์ด์ฉํ ์๋ํ ๋ฐฉ๋ฒESLint์ Prettier๋ ๋ณดํต ํ๋ก์ ํธ ์์ ๋จ๊ณ(์ด๊ธฐ ์ ํ )์์ ์ฝ๋ ํฌ๋งทํ ๊ณผ ์ฝ๋ ํ์ง์ ์ํด์ ์ฌ์ฉํฉ๋
ESLint ์ค์ ๊ณผ ์ต์ ์ ๊ฑด๋๋ฆฌ๋ฉด์ ์๊ฒ๋ ์ฌ์ค์ ๊ธฐ๋กํฉ๋๋ค.ํ๋ก์ ํธ์ ESLint๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒeslintrc ํ์ผ์ ์ค์ ๋ฌธ์๋ฅผ ์ดํดํ๋ฉฐ ์ฌ์ฉํ์ฌ ๋ด์์ ๋ด๋นํ๋ ํ๋ก์ ํธ์ Lint ์ค์ ์ด ์์ฃผ ๋ ํนํ๊ฒ ๋์ด์์๋ค. ํ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฆฐํธ ํ๋ฌ๊ทธ์ธ๋ค์ ๋ชจ์์
Leetcode algorithm study plan > ๋ฌธ์ ๋งํฌ1๋ถํฐ N๊น์ง์ ์ ์ค์์ ์ ๊ณต๋๋ isBadVersion ํจ์๋ฅผ ํตํด ๊ฐ์ฅ ๋ฎ์ ์์์์ true๊ฐ์ ์ฐพ๋ ๋ฌธ์ . O(log n)์ผ๋กisBadVersion ํจ์@param {Integer}@return
Leetcode algorithm study plan > ๋ฌธ์ ๋งํฌ์ ๋ ฌ๋ ๋ฐฐ์ด์ค์์ ํ๊ฒ๊ฐ๊ณผ ์ผ์นํ๋ ๊ฐ์ ์์น๋ฅผ ์ฐพ์๋ผ. O(log n)์ผ๋กO(log n)์ผ๋ก ํ์ด์ผํ๋ ๋ฌธ์ ์ด๋ฏ๋ก ์ด์งํ์์ ์ด์ฉํ๋ค.์ด์งํ์ ์กฐ๊ฑด์ค์ธ ๋ฐฐ์ด์ ์ ๋ ฌ์ํ๋ฅผ ํ์ธํ๋ค.์ด์งํ์์ ๋ฐฐ์ด์ ๊ฐ์ด
๋ฌธ์ ๋งํฌ์ ๋ ฌ๋์ง ์์ ์ซ์ ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๋ฐฐ์ด์ ์๋ ์์ ์๋ฅผ ๊ตฌํ์ฌ๋ผ.๋ฐฐ์ด์ ์์ ์ซ์๋ง ๋จ๋๋ก, ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.์ ์ผ ์ฒ์ ์์๊ฐ 1์ด ์๋๋ผ๋ฉด 1์ ๋ฆฌํดcnt๊ฐ์ 1๋ก ์์ํด์ ๋ฐฐ์ด์ ์ํํ๋ฉด์ cnt๊ฐ๋ ํจ๊ป ์ฌ๋ ค์ฃผ๋ฉด์ ์ฒดํฌํ๋ค.์ด๋ ์ค๋ณต๋๊ฐ์ด ์ฐ์
Problem ๋ฌธ์ ๋งํฌ ์ฃผ์ด์ง ๋ฐฐ์ด์ ์์๋ค์ ํฉํ์ฌ target์ ๊ฐ์ด๋๋ ์กฐํฉ์ ๊ตฌํ์ฌํ๋ ๋ฌธ์ Solution combination sum ์์์ ์ค๋ณต์ ๋บ ๋ฐฉ๋ฒ ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ์ง์๊ณ ๋์ค๋ฅผ ์ด์ด๋๊ฐ๋ฉด๋๋ค. JS Code
๋ฌธ์ ๋งํฌํ๋ณด๋ฆฌ์คํธ์์ ์ค๋ณต์ ํ์ฉํ์ฌ ํฉํ์ ๋ target์ด ๋์ค๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค.DFS๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐ์ด์ ์์๋๋ก depth๋ก ๋ค์ด๊ฐ๋ค. ๊น์ ๋์ค๋ก ์ด๋ ํ๋ฉด์ ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ ๋ํ๊ณ , ๊ทธ ๊ฐ์ด target๊ณผ ์ผ์นํ๋ฉด ์ ์ฅ, ์ด๊ณผํ๋ฉด ํจ์๋ฅผ ๋ฆฌํด์์ผ ๋์ด์