Database/JPA
์คํ๋ง๋ถํธ ํ๋ก์ ํธ๋ฅผ ์คํ์ํค๋ฉด ์์ ๊ฐ์ WARN์ด ํ์๋๋ค. spring.jpa.open-in-view์ ๊ธฐ๋ณธ๊ฐ์ true์ด๋ฉฐ ํด๋นํ๋ WARN์ false ๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๋ฉด ์์ด์ง๋ค.๋ฐฐํฌ์ฉ ์ชฝ yml ํ์ผ์ spring.jpa.open-in-view๋ฅผ false๋ก ํด์ฃผ์๊ณ , ๋ก์ปฌ ์ชฝ์๋ ๋ณ๋ค๋ฅธ ์ง์ ์ ํ์ง ์๊ณ ๋ฐฐํฌํ๋๋ ๋ฐฐํฌ ์ฌ์ดํธ์์ ๊ธ ์ ์ฒด๊ฐ ์กฐํ๋์ง ์๋ ์ํฉ์ด ๋ฐ์ํ๋ค. open-in-view:false ๋ฅผ ์ฃผ์์ฒ๋ฆฌํ๋ ๋คํํ ๊ธ ์ ์ฒด ์กฐํ๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋ค. open-in-view๊ฐ ๋ฌด์์ด๊ธธ๋ ์กฐํ์ ์ํฅ์ ๋ฏธ์น๋์ง ์์๋ณด๊ฒ ๋ค! ๋๋ณด๊ธฐ์์ ์ ๋ค์๋ ๊น์ํ ๊ฐ์ฌ๋์ '์ค์ ! ์คํ๋ง๋ถํธ์ JPA ํ์ฉ2 - API ๊ฐ๋ฐ ์ฑ๋ฅ์ต์ ํ' ๊ฐ์์์ ์น์
5 API ๊ฐ๋ฐ ๊ณ ๊ธ-์ค๋ฌด ํ์ ์ต์ ํ - '..
์๊ณ ๋ฆฌ์ฆ/CodeTree
โจ ๊ตฌํ โก๏ธ ์ฐ์์ ์ผ๋ก ์ด๋์ํค๊ธฐ & ์ด๋ํ ์ขํ ๊ฐฑ์ ํ๊ณ ์ ๋ฐ์์ํค๊ธฐ https://www.codetree.ai/training-field/frequent-problems/problems/rudolph-rebellion/description?page=1&pageSize=20 ์ฝ๋ํธ๋ฆฌ | ์ฝ๋ฉํ
์คํธ ์ค๋น๋ฅผ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ์ ๊ตญ๊ฐ๋ํ๊ฐ ๋ง๋ ์ฝ๋ฉ ๊ณต๋ถ์ ๊ฐ์ด๋๋ถ ์ฝ๋ฉ ์์ด๋ณด๋ถํฐ ๊ฟ์ ์ง์ฅ ์ฝํ
ํฉ๊ฒฉ๊น์ง, ๊ตญ๊ฐ๋ํ๊ฐ ์์ ํ ์ปค๋ฆฌํ๋ผ์ผ๋ก ์ค๋นํด๋ณด์ธ์. www.codetree.ai ๐๊ณ ๋ คํด์ผํ ์ ์ฐํ๊ฐ ๊ฐ๊น์ด ๋ฃจ๋ํ์๊ฒ ์ด๋ํ ๋, ๋ฐ๋๋ก ๋ฃจ๋ํ๊ฐ ๊ฐ๊น์ด ์ฐํ์๊ฒ ์ด๋ํ ๋ ์ด๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด์๋ ๊ฑฐ๋ฆฌ ๊ณต์ ๊ณ์ฐ์ ์ด์ฉํด์ ๋น๊ตํด์ผ ํ๋ค. ๐ ๋ฃจ๋ํ์ ๊ฒฝ์ฐ 8๋ฐฉํฅ ์ด๋ ๊ฐ๋ฅํ๊ณ , ์ฐํ๋..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
๋ฌํฝ์ด ์ด๋์ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ฝ๋๊ฐ ์์ด์ ๊ธฐ๋กํ๋ค. ์ฐ์ ๊ฒฉ์์ ํ ๋ณ์ ๋ฌด์กฐ๊ฑด ํ์๋ค. ์ -> ๋ฐ์ผ๋ก ์ด๋ํ๋ ๋ฐฉํฅ๊ณผ ๋ฐ -> ์์ผ๋ก ์ด๋ํ๋ ๋ฐฉํฅ์ ํ ๋ฒ์ ์ ์ฅํ๋ ๋ก์ง์ด๋ค. ๊ท์น ์ฐพ๊ธฐ ๋ฌํฝ์ด ์ด๋ํ๋ ๊ท์น์ ์ฐพ์๋ณด๋ฉด ํ์ฌ ๋ฐฉํฅ์ด ๋ง์ฝ ์ ๋๋ ์๋์ผ ๋๋ง๋ค ์ด๋ํ๋ ํ์๊ฐ 1์ฉ ์ฆ๊ฐํ๋ค. ์ โ ๋ฐ์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด, โฌ๏ธ โก๏ธ ๋ก ์ด๋ํ ๋๋ 1, 3, 5 ... ์นธ์ฉ ์ด๋ํ๊ณ , โฌ๏ธ โฌ
๏ธ ๋ก ์ด๋ํ ๋๋ 2, 4, 6 ... ์นธ์ฉ ์ด๋ํ๋ค. (0, 0)์นธ์ผ๋ก ํฅํด ๊ฐ๋ ๋ง์ง๋ง โฌ๏ธ๋ ์ง์ ์นธ๋งํผ ์ด๋ํ์ง๋ง ์ด์ฐจํผ (0, 0)์์ ๋๋๊ธฐ ๋๋ฌธ์ breakํ๋ฉด ๋๋ค. ๋ฐ โ ์์ผ๋ก ์ด๋ํ๋ ๋ฌํฝ์ด ๋ชจ์์ ์์ ๋ฐ๋๋ก ์๊ฐํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฉํฅ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ์ฝ๋ public st..
์๊ณ ๋ฆฌ์ฆ/CodeTree
โจ ๊ตฌํ https://www.codetree.ai/training-field/frequent-problems/problems/battle-ground/description?page=1&pageSize=20 ์ฝ๋ํธ๋ฆฌ | ์ฝ๋ฉํ
์คํธ ์ค๋น๋ฅผ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ์ ๊ตญ๊ฐ๋ํ๊ฐ ๋ง๋ ์ฝ๋ฉ ๊ณต๋ถ์ ๊ฐ์ด๋๋ถ ์ฝ๋ฉ ์์ด๋ณด๋ถํฐ ๊ฟ์ ์ง์ฅ ์ฝํ
ํฉ๊ฒฉ๊น์ง, ๊ตญ๊ฐ๋ํ๊ฐ ์์ ํ ์ปค๋ฆฌํ๋ผ์ผ๋ก ์ค๋นํด๋ณด์ธ์. www.codetree.ai ๐ ๊ณ ๋ คํด์ผํ ์ ํด๋นํ๋ ์นธ์ ์๋ ์ด๋ค์ ๋น๊ตํ๊ณ ๊ฐ์ฅ ๊ณต๊ฒฉ๋ ฅ์ด ๋์ ์ด์ ์ ํํด์ผํ๋ค. ์ง ์ฌ๋์ ๊ฒฝ์ฐ ์ด์ ํด๋นํ๋ ์นธ์ ๋๊ณ , ์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋ํ๋ค. ๐น๏ธ ์๊ณ ๋ฆฌ์ฆ ๊ณผ์ ์ง ์ฌ๋์ด ์ด์ ๋ฒ๋ฆฌ๊ณ ์ด๋ํด์ผํ๋๋ฐ, ๋ฒ๋ฆฌ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ ๋๋ฒ๊น
ํ๋๋ฐ ์๊ฐ์ ์๊ฐ๋ณด๋ค ๋ง์ด ์์ ๊ฒ ์ธ์๋ ๋ฑํ..
CS/๐ ๋คํธ์ํฌ
HTTP ํน์ฑ HTTP๋ stateless, connectionless ํน์ง์ ๊ฐ์ง๊ณ ์์ด ์์ฒญ์ ๋ํ ์๋ต์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฐ๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ ๋ํ ์ด์ ์ ์ํ ์ ๋ณด ๋ฐ ํ์ฌ ํต์ ์ ์ํ๊ฐ ๋จ์์์ง ์๋ค. ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํ๋ค๋ฉด ์ด์ ๋ฐ๋ฅธ ์์ ๋ญ๋น๊ฐ ์ฌํด์ง๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ์ํ๊ฐ ๋จ์์์ง ์์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ ์ ์๋ ๋จ์ ์ด ์๋ค. ๋ก๊ทธ์ธ์ ํ๋๋ผ๋ ๋ค์ ์์ฒญ์์ ํด๋น ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํ๋ฏ๋ก ๋ค์ ๋ก๊ทธ์ธ์ ํด์ผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋น์ฐ๊ฒฐ์ฑ๊ณผ ๋ฌด์ํ์ฑ ํน์ง์ ๋ณด์ํ ๊ธฐ์ ์ด Cookie์ Session์ด๋ค. Cookie ๐ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ Key-Valueํ์์ผ๋ก ์ ์ฅ๋๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค ๋งค๋ฒ ..
CS/๐ ๋คํธ์ํฌ
ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ์ ํต์ ์ ํ๋ ค๊ณ ํ ๋ ์ฆ, ํด๋ผ์ด์ธํธ์์ API๋ฅผ ์ง์ ํธ์ถํ ๋ CORS ์ ์ฑ
์๋ฐ์ผ๋ก ์ค๋ฅ๊ฐ ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ค. CORS๋ "๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ "๋ฅผ ์๋ฏธํ๊ณ , SOP๋ ๊ทธ ๋ฐ๋์ธ "๋์ผ ์ถ์ฒ ์ ์ฑ
"์ ์๋ฏธํ๋ค. "์ถ์ฒ๊ฐ ๊ต์ฐจํ๋ค"๋ ์๋ฏธ๊ฐ ๋ญ๊น? ์ถ์ฒ (Origin) ์ฐ์ CORS์ SOP ๊ณตํต์ผ๋ก Origin(์ถ์ฒ)์ด๋ผ๋ ๋จ์ด๋ฅผ ํฌํจํ๊ณ ์๋ค. ์ถ์ฒ๋ URL์์ ๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ๊น์ง ํฌํจํ๋ ๊ฐ๋
์ผ๋ก ์ด ์ค ํ๋๋ผ๋ ๋ค๋ฅด๊ฒ ๋๋ฉด CORS ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ ๊ฒ์ด๋ค. ๋๋ฉ์ธ (Hostname) : myshop.com ์ถ์ฒ (Origin) : https://myshop.com "์ถ์ฒ๊ฐ ๊ต์ฐจํ๋ค" ๐ ๋ฆฌ์์ค๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ ค๋ '๋ ์ถ์ฒ๊ฐ ์๋ก ๋ค๋ฅด๋ค'๋ฅผ ์๋ฏธ CORS ..
์๊ณ ๋ฆฌ์ฆ/BOJ
โจ ๊ตฌํ https://www.acmicpc.net/problem/17837 17837๋ฒ: ์๋ก์ด ๊ฒ์ 2 ์ฌํ์ด๋ ์ฃผ๋ณ์ ์ดํด๋ณด๋ ์ค ์ฒด์คํ๊ณผ ๋ง์ ์ด์ฉํด์ ์๋ก์ด ๊ฒ์์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์๋ก์ด ๊ฒ์์ ํฌ๊ธฐ๊ฐ N×N์ธ ์ฒด์คํ์์ ์งํ๋๊ณ , ์ฌ์ฉํ๋ ๋ง์ ๊ฐ์๋ K๊ฐ์ด๋ค. ๋ง์ ์ํ๋ชจ์์ด๊ณ , ํ www.acmicpc.net ๐ ๊ณ ๋ คํด์ผํ ์ ํ ์ขํ ์์ ์ฌ๋ฌ ๊ฐ์ ๋ง์ด ๋ค์ด๊ฐ ์ ์๋ค. โ ์ด๋ํ๋ ค๋ ์นธ์ ๋ง์ด ์กด์ฌํ๋ค๋ฉด ๊ทธ ์์ ๋ง์ด ์ฌ๋ผ๊ฐ ํ ๋ง์ด ์ด๋ํ ๋ ์์ ์ฌ๋ ค์ ธ ์๋ ๋ง๊น์ง ๋ชจ๋ ์ด๋ํ๋ค. ์ฌ๋ฌ ๊ฐ์ ๋ง์ด ๋ค์ด๊ฐ ๋ ์ขํ์ ์๊น์ ๋ฐ๋ผ ์ ๋ ฌ ๊ธฐ์ค์ด ์กด์ฌํ๋ค. ์ขํ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ์ขํ ์นธ์ด ํ๋์์ผ ๋์ ์กฐ๊ฑด์ ์ ์ํด์ผํ๋ค. ๐น๏ธ ํ์ด๊ณผ์ ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ก ํ์ฉํ ์ง ์ ํ๊ธฐ๋ง ํ๋ฉด ์ฝ๊ฒ ํ..
Spring/Spring & Spring Boot
Spring Security๋ฅผ ๊ตฌํํ๋ค๋ณด๋ฉด filter์ interceptor๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํํฐ์ ์ธํฐ์
ํฐ์ ๋ํ ๊ฐ๋
์ ์ดํดํ๋ฉด Spring Security ๊ณผ์ ์ ํ์
ํ๊ธฐ ์ฌ์ธ ๊ฒ์ด๊ธฐ์ ๊ธฐ๋กํ๋ค! โจ ์ฉ๋ - ๊ณตํต๊ด์ฌ์ฌํญ (Cross-cutting concern) ๐ ์น ์๋น์ค์์ ๋ก๊ทธ์ธ์ ํด์ผ ๋ค์ํ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ผ๋ฉฐ ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ ์ ๊ทผํ ์ ์๋ ํ์ด์ง๊ฐ ๋ค๋ฅด๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ก๊ทธ์ธ์ด ํ์ํ ๋ชจ๋ ์ปจํธ๋กค๋ฌ ๋ก์ง์ ๋ก๊ทธ์ธ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผํ ํ
๋ฐ... ์ด๋ ๊ฒ ๋๋ค๋ฉด ์ฝ๋๊ฐ ์ค๋ณต๋ ๊ฒ์ด๊ณ ๋ณต์กํด์ง ๊ฒ์ด๋ค. ๋ง์ ๋ก์ง์์ ๊ณตํต์ผ๋ก ๊ด์ฌ ์๋ ๋ถ๋ถ์ ๊ณตํต ๊ด์ฌ ์ฌํญ์ด๋ผ๊ณ ํ๋ฉฐ ์ด๋ฅผ ์คํ๋ง์ AOP๋ก๋ ํด๊ฒฐํ ์ ์์ง๋ง ์น์์๋ ์๋ธ๋ฆฟ ํํฐ์ ์คํ๋ง ์ธํฐ์
ํฐ๋ก ์ฒ๋ฆฌํ ์ ์..