๋ค์ด๊ฐ๊ธฐ ์ ์...์ง๊ธ๊น์ง ์๊ฒผ๋ ์๋ฌธ๋ค์ ์ ๋ฆฌํด๋ณด์Q1. SSR์ ๋น๋์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค ๊ฐ์ ธ์ค๋๊ฒ ์๋๋ฐ ์ด๋ป๊ฒ SEO ์ธก๋ฉด์ ์ ๋ฆฌํ ๊ฑธ๊น?SSR(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง)์ ๊ฐ ์์ฒญ๋ง๋ค ์๋ฒ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ํ์ด์ง๋ฅผ ๋ ๋๋งํจ. ๋ฐ๋ผ์ SSR์ ๋น๋ ์์ ์ ๋ฐ์ดํฐ
React-Query + Next.js ์ด๋ฒ ํ๋ก์ ํธ๋ ๋ฆฌ์ํธ ์ฟผ๋ฆฌ์ ๋ฅ์คํธ๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์ํธ์ฟผ๋ฆฌ ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ค. SSR react-query๋ SSR์ ์ํด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ํ๋ฆฌํจ์นญ์ ์ง์ํจ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ queryClient์
๋ด์ฅ๋ ์ฝ๋๋ถํ ๊ธฐ๋ฅ์ ํตํด ๋์. /page ๋๋ ํ ๋ฆฌ ๋ด์ ๊ฐ ํ์ผ์ ๋น๋ ๋จ๊ณ์์ ์์ฒด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ก ์๋๋ถํ ๋จ์ด๊ฒ ๋ฌด์จ๋ง์ด๋๋ฉด...Next.js์์ ํ์ด์ง๋ /page ๋๋ ํ ๋ฆฌ์ ์์นํจ. ์ด ๋๋ ํ ๋ฆฌ ๋ด์ ๊ฐ ํ์ผ์ ํด๋น ํ์ด์ง์ ๋ํ ๊ธฐ๋ฅ๊ณผ ๋ก์ง์ ํฌํจํจ.
React๋ฅผ ์ด์ฉํ ์น ์ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ framewrokReact : โA JavaScript library for building user interfacesโ Angular : 'Angular is an application-design framework
์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์. >์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ๊ท์น ๋๋ ๋ชฉ์ ์ ๋ง๊ฒ ์ ์ฅํ๊ธฐ ์ํ ๊ตฌ์กฐ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ์ด๋ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ๋ฌ ๋์๋ค์ ๋ชจ์์ ๋๋ค. ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. >
OSI 7๊ณ์ธต์ ๋ํด์ ์ค๋ช ํด๋ณด์ธ์.๊ตญ์ ํ์คํ ๊ธฐ๊ตฌ์์ ์ ์ํ ํ์ค์ผ๋ก ์ปดํจํฐ ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ ํต์ ์ ๊ณผ์ ์ ์ผ๊ณฑ ๊ฐ์ ๊ณ์ธต์ผ๋ก ๋๋ ๊ฐ๋ ๋ชจ๋ธ์ ๋๋ค. ๊ฐ๊ฐ์ ๊ณ์ธต์ ํน์ ํ ๊ธฐ๋ฅ์ ์ํํ๊ณ , ๋ฐ์ดํฐ ํ๋ฆ์ ์กฐ์ ํ๋ฉฐ, ํต์ ์ ํ์ํ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. 7๊ณ์ธต์ ์ต
์ด์์ฒด์ ๋ ๋ฌด์์ธ๊ฐ์์ด์์ฒด์ ๋ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ํ๋์จ์ด ๊ฐ์ ์ธํฐํ์ด์ค๋ก์จ ์์ฉํ๋ก๊ทธ๋จ๋ค์ด ์ ์์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๊ฒฝ์ ์ ๊ณตํด์ค๋๋ค.์๋ฅผ ๋ค์ด ์๋์ฐ, ๋ฆฌ๋ ์ค ๋ฑ์ด ์์ต๋๋ค.์ด์์ฒด์ ์ ์ญํ ์ ๋งํด์ฃผ์ธ์์ด์์ฒด์ ๋ ์์ฉํ๋ก๊ทธ๋จ๊ณผ ํ๋์จ์ด ๊ฐ์ ์ธํฐํ์ด์ค ์ญํ ์
SQL Injection SQL Injection ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ๋ณด์์์ ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ, ์์์ SQL ๋ฌธ์ ์ฃผ์ ํ๊ณ ์คํ๋๊ฒ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋น์ ์์ ์ธ ๋์์ ํ๋๋ก ์กฐ์ํ๋ ํ์ ๊ณต๊ฒฉ๋ฐฉ๋ฒ ์ธ์ฆ ์ฐํ, ๋ฐ์ดํฐ ๋ ธ์ถ, ํด์ปค๋ GET๋ฐฉ์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ถ๊ฐ
Isolation level์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ฒ๋ฆฌ๋ ๋, ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ๊ฒฉ๋ฆฌ ์์ค์ด ๋์ ์์๋๋ก SERIALIZABLEREPEATABLE READREAD COMMITTEDRE
ํธ๋์ญ์ ์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์ ์ ๋จ์๋ฅผ ๋งํจ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํจ๋ค -> SELECT, INSERT, DELETE, UPDATEex> ๊ฒ์ํ์ ์ ๊ฐ ๊ฒ์๊ธ์ ์์ฑํ๊ณ ์ฌ๋ฆฌ๊ธฐ๋ฒํผ(INSERT)์ ๋๋ฅธ ํ ๋ค์ ๊ฒ์ํ์ ๋์์์๋
์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์ ๊ณผ ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์์ฑ ์ ์๋ก ๋ค์์๋, ์ ์๋ ์ฑ ์ ๋งจ์์ ์์ธ์ ์ถ๊ฐํด๋์, ๋ ์๊ฐ ์ํ๋ ๋ด์ฉ์ ์ฐพ๊ณ ์ ํ ๋, ์๊ฐ์ ์ค์ฌ์ค๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค๋ ์ฑ ์ ์์ธ๊ณผ ๊ฐ๋ค.์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด
๋๊ฐ ์ด์์ ํ ์ด๋ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒํ ์ด๋ธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด, ์ ์ด๋ ํ๋์ ์นผ๋ผ์ ์๋ก ๊ณต์ ํ๊ณ ์์ด์ผ ํ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฒ์์ ํ์ฉJoin์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์์กฐ์ธ์ด๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํน์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ
๋ค์ด๊ฐ๊ธฐ์ ์...๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ฌ๋์ด ๊ณต์ ํ๊ณ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ํตํฉ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ์์ ๋งํจDB๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด, ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ ์์ ์ ๊ทธ ์ ๊น์ง ์์ฑํ ๋ง์ ๋ฐ์ดํฐ๋ค์ด ๋ชจ๋ ๋ ์๊ฐ๊ฒ๋จ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค์๊ฐ
์๊ณ ๋ฆฌ์ฆ๋ณ ํ๊ธฐ-> ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์์ 14501๋ฌธ์ ๋ฅผ ๋ง๋ฌ๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ด์ฌ์ ์์ ํ์๊ณผ ๋ฐฑํธ๋ํน, ์ฌ๊ท๋ฅผ ์๊ฐํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํ ํ์ง๋ง ํธ๋ฉด ํ์๋ก ์กฐ๊ฑด๋ค์ด ๊น๋ค๋ก์์ ธ์ ๊ตฌ๊ธ๋ง์ ํด๋ดค๋๋ ๋๋ถ๋ถ์ด dp๋ฅผ ํ์ฉํด์ ํ dp๋ ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์
๋นํธ๋ง์คํฌ๋ ์ด์ง์๋ฅผ ์ฌ์ฉํ๋ ์ปดํจํฐ์ ์ฐ์ฐ ๋ฐฉ์์ ์ด์ฉํ์ฌ, ์ ์์ ์ด์ง์ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฐ๋ ๊ธฐ๋ฒ์ ๋งํจ๋ถ๋ถ์งํฉ ์์ฑ,์์ด ๋ฐ ์กฐํฉ ์์ฑ ๋ฑ๊ณผ ๊ฐ์ ๋ฌธ์ ํด๊ฒฐํ ๋ ์ฐ์๊ฐ ๋นํธ๋ ์งํฉ์ ์์์ ๋์๋จ. ๋นํธ๊ฐ 1์ด๋ฉด ํด๋น ์์๊ฐ ์งํฉ์ ์กด์ฌ. 0์ด๋ฉด ์กด์ฌX์ฅ์ 1\
๊ทธ๋ํ์์ ํน์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ. DP๋ฅผ ์ด์ฉํจ์ด ์๊ณ ๋ฆฌ์ฆ์ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง์ง ์๋ ๊ทธ๋ํ์์ ์ฌ์ฉ๋จ ์ฃผ๋ก GPS ๊ฒฝ๋ก ํ์, ๋คํธ์ํฌ ๋ผ์ฐํ , ์ง๋app์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํ ๋ ํ์ฉ๋จDP์ธ ์ด์ ์ต๋จ๊ฑฐ๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ
๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์๊ทธ๋ํ๋ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ์ฌ์ค ํธ๋ฆฌ๋ ๊ทธ๋ํ์ ์ผ์ข ์. ํ์ง๋ง ๊ทธ๋ํ๋ ํธ๋ฆฌ์ ๋ฌ๋ฆฌ ์ ์ ๋ง๋ค ๊ฐ์ ์ด ์กด์ฌํ์ง ์์ ์ ์์ผ๋ฉฐ, ๋ฃจํธ๋ ธ๋,๋ถ๋ชจ๋ ธ๋,์์๋ ธ๋ ๊ฐ๋ ์ด ์กด์ฌํ์ง ์์๊ทธ๋ํ๋ฅผ ๊ตฌํํ ์ ์๋ ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ํ๋ก๊ทธ๋๋ฐ ์ฌ์ฉ ์ ์ง๋์น๊ฒ ๋ง์ ์ผ์ ํ๋ค๋ ๊ฒ์์ ์ฐฉ์ํ์ฌ ๊ณ ์๋ ์๊ณ ๋ฆฌ์ฆ์๋์ ํ๋ก๊ทธ๋๋ฐ์ ๋์ฒดํ๋ ๊ฒ์ ์๋๊ณ ๊ฐ์ด ์ฐ์ด๋ฉฐ ์๋ก ๋ณด์ํ๋ ๊ฐ๋ ๋ฏธ๋๋ฅผ ์๊ฐํ์ง ์๊ณ ๊ฐ ๋จ๊ณ์์ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ ํ๋ ๊ธฐ๋ฒ๊ทธ๋ ๊ฒ ๊ฐ ๋จ๊ณ์์ ์ต์ ์ ์ ํ์
๋ฒ๋ธ ์ ๋ ฌ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์๋ฒ๋ธ ์ ๋ ฌ์ ์๋ก ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ตํ์ฌ ํฌ๊ธฐ๊ฐ ์์๋๋ก ๋์ด์์ง ์์ผ๋ฉด ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ0๋ฒ ์ธ๋ฑ์ค๋ถํฐ n-1๋ฒ ์ธ๋ฑ์ค๊น์ง n๋ฒ๊น์ง์ ๋ชจ๋ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ๋ฉฐ ์ ๋ ฌ. ์๊ฐ๋ณต์ก๋๋ O(n^2)์ ํ ์ ๋ ฌ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์์ ํ ์ ๋ ฌ์ ์ฃผ์ด์ง
๊น์ด ์ฐ์ ํ์๋ฃจํธ ๋ ธ๋์์ ์์ํด ๋ค์ branch๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น branch๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ๋ ๊ธฐ๋ฒ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋จ์ ๊ฒ์ ์๋ ์์ฒด๋ BFS์ ๋นํด ๋๋ฆผํน์ง์๊ธฐ ์์ ์ ํธ์ถํ๋ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํํ๊ตฌํํ ๋ ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์๋์ง