![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpA5xq%2FbtszyL3gng6%2FcMGT5jM1CkYeHxgkKzvUD0%2Fimg.png)
IntelliJ ์์ฐ๋ import ์ ๋ฆฌ
์์ฐ๋ import๋ฌธ์ ์ ์ ๋ก ์์ด์ง๊ฒ ํ๊ณ ์ถ์ ๋ ์ฐ๋ ๋ฐฉ๋ฒ! ์ค์ -> ์๋ํฐ -> ์ผ๋ฐ -> ์๋ ๊ฐ์ ธ์ค๊ธฐ -> import๋ฌธ ์ฆ์ ์ต์ ํ๋ฅผ ์ฒดํฌํ๋ค. ๋ด๊ฐ ๋ณด๋ ค๊ณ ์์ฑ ใ ใ
์์ฐ๋ import๋ฌธ์ ์ ์ ๋ก ์์ด์ง๊ฒ ํ๊ณ ์ถ์ ๋ ์ฐ๋ ๋ฐฉ๋ฒ! ์ค์ -> ์๋ํฐ -> ์ผ๋ฐ -> ์๋ ๊ฐ์ ธ์ค๊ธฐ -> import๋ฌธ ์ฆ์ ์ต์ ํ๋ฅผ ์ฒดํฌํ๋ค. ๋ด๊ฐ ๋ณด๋ ค๊ณ ์์ฑ ใ ใ
๐ฑ ์คํ๋ง ์ํ๋ฆฌํฐ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ก๊ทธ์ธ ๋ก์ง form์ ํตํด์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ์ธ์ ๋ฐ ์ธ์ฆ ํ ํฐ์ ์ ์ฅํ๋ค. ์ถํ์๋ ํด๋น ์ธ์ฆ์ ํตํด์ ์์ ๊ฐ๋ฅํ๋ค. ๋ก๊ทธ์ธ API ์ฌ๊ธฐ์ ๋ง๋ถ์ฌ์ ์ค๋ช ํ๋ฉด loginProcessingUrl : form ํ๊ทธ์ ์๋ action url , ํ์๋ฆฌํ ์ฐ๋ฉด th:action successHandler : ์ฑ๊ณตํ์ ๋ ๋ด๊ฐ ์ถ๊ฐ์ ์ผ๋ก ์ ์ดํ ์ ์๋ ํธ๋ค๋ฌ failureHandler : ์คํจํ์ ๋ ๋ด๊ฐ ์ถ๊ฐ์ ์ผ๋ก ์ ์ดํ ์ ์๋ ํธ๋ค๋ฌ ๐ successUrl์ด๋ failureUrl์ด๋ ๋น์ทํ๋ค๋ ์๊ฐ์ ํ ์๋ ์๊ฒ ์ง๋ง ์์ ๋ ๊ฐ๋ url์ค์ ๋ฐ์ ํ์ง ๋ชปํ๋ค. Controller @GetMapping("/loginPage") public Strin..
๊ฐ์๋ค์ผ๋ฉด์ ๋ฐฐ์ด ๊ฒ๋ค์ ๊ฐ๋จํ๊ฒ๋ผ๋ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋ค! ๐ฅ Spring Security(์คํ๋ง ์ํ๋ฆฌํฐ)๋? Spring ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ๋ด๋นํ๋ Spring ํ์ ํ๋ ์์ํฌ์ด๋ค. springboot์ spring security๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ ์์กด์ฑ์ ์ถ๊ฐํด์ค์ผํ๋ค. implementation 'org.springframework.boot:spring-boot-starter-security' ์คํ๋ง ์ํ๋ฆฌํฐ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด ์ผ์ด๋๋ ๊ฒ์? ์๋ฒ๊ฐ ๊ฐ๋๋๋ฉด ์คํ๋ง ์ํ๋ฆฌํฐ์ ์ด๊ธฐํ ์์ ๋ฐ ๋ณด์ ์ค์ ์ด ์ด๋ฃจ์ด์ง ๋ณ๋์ ์ค์ ์ด๋ ๊ตฌํ์ ํ์ง ์์๋ ๊ธฐ๋ณธ์ ์ธ ์น ๋ณด์ ๊ธฐ๋ฅ์ด ํ์ฌ ์์คํ ์ ์ฐ๋๋ผ ์๋ ๋ชจ๋ ์์ฒญ์ ์ธ์ฆ์ด ๋์ด์ผ ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅ ์ธ์ฆ ๋ฐฉ์์ Form ๋ก๊ทธ์ธ ๋ฐฉ์๊ณผ ..
๐ ํธ๋์ญ์ ์ด๋? ํธ๋์ญ์ ์ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ฒฉ๋ฆฌ ๋ฐ ์ง์์ฑ) ์์ฑ์ด ์๋ ์์ ๊ทธ๋ฃน์ด๋ค. ์ฆ, ํด๋น ์์ฑ์ ๊ฐ์ง๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด์ ์ํํ๋ ์์ ์ ๋จ์๋ฅผ ๋งํ๋ค. ๋ณดํต ์๋์ ์ง์์ด๋ฅผ ํตํด์ ์์ ์ด ์ด๋ฃจ์ด์ง๋ฉฐ ACID ๊ท์น์ ์งํค๊ฒ ๋๋ค. SELECT INSERT DELETE UPDATE ๐ก ํธ๋์ญ์ ํน์ง ์์์ฑ (Atomicity) ์์์ฑ์ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋๊ฐ, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์ํ ์ก๊ธ์ ์๋ก ๋ค์ด๋ณด์. ์ํ ์ก๊ธ์ ํ ๊ณ์ข์ ๋ค๋ฅธ ๊ณ์ข์ ๋ํ ํ๋์ด ์์์ฑ์ ์งํฉ์ด๋ค. A๊ณ์ข์์ B๊ณ์ข๋ก ๋์ ์ด์ฒดํ๋๋ฐ ์ค๊ฐ์ ์ค๋ฅ๊ฐ ๋์ A๊ณ์ข์๋ ๋์ด ๋น ์ ธ๋๊ฐ์ง๋ง B๊ณ์ข์๋ ๋์ด ๋ค์ด์ค์ง ์์ ์๊ฐ ์๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ง..
์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ repository.save()๋ฅผ ํ์ง ์์๋ update ์ฟผ๋ฆฌ๊ฐ ์คํ๋์ด DB์ ๋ฐ์๋๋ ํ์์ ๋ณด๊ณ Dirty Checking์ ๋ํด์ ์์๋ณด์๋ค ๐ค โ๏ธ Dirty Checking์ด๋? Spring JPA์์ ๋ํฐ ์ฒดํน์ด๋ ์์์ฑ ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์ํฐํฐ์ ์ํ๋ฅผ ๊ฐ์งํด์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋์ผ๋ก ํธ๋์ญ์ ์ด ๋๋๋ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๋ ๊ธฐ๋ฅ์ด๋ค. dirty : ๋ณ๊ฒฝ๋ ์ํฐํฐ ๋ฐ์ดํฐ dirty checking : ๋ณ๊ฒฝ๋ ๋ถ๋ถ ๊ฐ์ง Dirty Checking์ ์ธ์ ์ผ์ด๋ ๊น? ์์์ฑ ์ปจํ ์คํธ์์ ๊ด๋ฆฌ๋๋ ์ํฐํฐ ์ค์์/๋น์์ ์ํ์ ์ํฐํฐ๋ ๋ํฐ ์ฒดํน์ ๋์์ด ๋์ง ์๋๋ค. Transaction(ํธ๋์ญ์ )์ด ์ปค๋ฐ๋์์ ๋ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๊ธฐ ์ ๊น์ง ์์์ฑ ์ปจํ ์คํธ๋ ๋ณ..
๊ฐ์๋ฅผ ๋ฃ๋ค๊ฐ ํ ์ด๋ธ ์ด๋ฆ์ ์ ํ๋๊ฑฐ์ ์์ด์ ๋จ์ํ์ด ์ข์์ง ๋ณต์ํ์ด ์ข์์ง์ ๋ํด์ ์ฐพ์๋ณด์๋ค. ๐งถ ๋จ์ํ์ผ๋ก ์ง๋ ๊ฒฝ์ฐ ์ฝ๊ฒ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค์ด ๋ฐ๋ฅด๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๋ค. ๋ง์ฝ ๋ณต์๋ก ์ง๋ ๊ฒฝ์ฐ์ child-children, octopus-octopi์ฒ๋ผ ๋ณต์ํ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์๋ ์๋ค. ๊ทธ๋์ ๋จ์๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์๊ฐ ์ ์ฝ์ด ๋๋ค ๊ฐ๋ฐ์๊ฐ ์ ์ ํ ๋ณต์ํ์ ๋ํด์ ๊ณ ๋ฏผํ์ง ์์๋ ๋๋ค. ๋ณต์ํ์ ์ฐ๋ ๊ฒ๋ณด๋ค ์คํ๊ฐ ์ค์ด๋ค์ด์ ์ ์ฒด์ ์ธ ์ค๋ฅ๋ ์ค์ด๋ค ์ ์๋ค. ๐งต ๋ณต์ํ์ผ๋ก ์ง๋ ๊ฒฝ์ฐ ๋ณต์ํ ์ด๋ฆ์ด ์ฝ๋ ์ ์ฅ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํคํ ์ฒ, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ์ํคํ ์ฒ ๊ฐ์ ํต์ผ์ฑ์ ์ ๊ณตํ๋ค. ๋ง์ฝ์ user๋ผ๋ ํ ์ด๋ธ์ด ์์ผ๋ฉด ์ด๊ฑด users์ ๊ทธ๋ฃน์ด ์๋ user์ ๊ทธ๋ฃน์ด๋ผ๊ณ ์ฐฉ๊ฐํ ์๋ ์๊ธฐ ๋..
Git Flow๋? Git์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ ํ๊ฒฝ์์ ๋ธ๋์น๊ฐ์ ๋ฌธ์ ์์ด ๋ฐฐํฌ๊น์ง ์์ ์ ์ผ๋ก ํ ์ ์๋๋ก ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๋ ์ ๋ต์ ๋งํ๋ค. ๐ ์ฃผ์ ๋ธ๋์น Main(=Master) : ์ค์ ์ด์ ํ๊ฒฝ์ ๋๊ฐ์๋ ์ฝ๋๋ง ์กด์ฌ Dev : ๋ฉ์ธ ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ (๋ค์ ๋ฐฐํฌ์ ๋๊ฐ ๋ด์ฉ๋ค์ ๋ฐ๋ก ๋ฉ์ธ์ ๋จธ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ feature์์ ๊ฐ์ ธ์จ ๊ฒ๋ค์ ๋ชจ์๋์ ๊ฒ) Feature : ์๋ก์ด ๊ฐ๋ฐ์ ํ ๋ feature๋ฅผ ๋ฐ์ ๊ฐ๋ฐํ๊ณ Dev์ merge Release : ๋ฐ๋ธ ๋ธ๋์น๋ฅผ ๋ฒ ์ด์ค๋ก ๋ง๋ฆ. Release๊ฐ ์์ฑ๋ ์ดํ๋ถํฐ๋ ๋์ด์ Dev์์ ์์ ์ํ๊ณ Release์์ ์์ ํ๊ฒ ๋จ. Hotfix : ์๋์น ์์ ์ฅ์ ์ํฉ์ด ๋ฐ์ํ์ ๋ ๋ฉ์ธ ๋ธ๋์น์์ ๋ฐ๋ก ์์ฑํ๊ณ ์์ ํ๋ ..
โ๏ธ ICT์ธํด์ญ์ด๋?์ ๋ถ์์ ์ฃผ๊ดํ๋ ๊ฒ ๊ฐ์๋ฐ ! ๊ธฐ์ ๊ณผ ๋งค์นญ๋์ด ์ค๋ฌด ๊ฒฝํ๋ ์ป๊ณ ํ์ ๋ ์ป์ ์ ์๋ ์์ฃผ ์ข์ ๊ธฐํ์ด๋ค!4-1์ ๋ง์น๊ณ ๋งํ๊ธฐ๊ฐ ๋จ์์๋๋ฐ 11ํ์ ์ด ๋จ์์์๋คใ ใ ํ์ ์ ์ต๋ 15ํ์ ์ ๋ฐ์ ์ ์๋๋ฐ ์ฐ๋ฆฌ ํ๊ต ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฅ๊ธฐ์ธํด์ผ ๊ฒฝ์ฐ ์ต๋ 12ํ์ ์ธ ๊ฒ ๊ฐ๋ค! (์ ๊ณต 6ํ์ + ์์ , ๊ต์ 6ํ์ ) ๋ ์ ๊ณต์ฌํ์๋๋ฐ ๋ฑ 6ํ์ ์ด ๋ถ์กฑํด์ ๋คํ์ธ ๊ฒ ๊ฐ๋ค....https://www.ictintern.or.kr/main.do ICT ํ์ ์ฐ๊ณ ํ๋ก์ ํธ ์ธํด์ญICT ํ์ ์ฐ๊ณ ํ๋ก์ ํธ ์ธํด์ญwww.ictintern.or.kr ๐ถ ์ง์์ด 100๊ฐ๊ฐ ๋๋ ๊ธฐ์ ์ค์ ๋ด๊ฐ ์ง์ํ๊ณ ์ ํ๋ ํ์ฌ๋ ๊ธฐ์ค์ด ๋ฑ ํ๋์๋ค!Springboot๋ฅผ ๋ค๋ฃจ๋์ง!!!!!์คํ๋ง์ ๋ณธ๊ฒฉ์ ์ผ๋ก(?) ๊ณต๋ถํ..
๐ซง AWS์ Nginx๋ฅผ ์ค์นํ์ฌ https ์ ์ฉ์ ํด์ค๋ค 1. nginx ์ค์น sudo apt-get install -y nginx nginx-common nginx-full 2. ์ธ์ฆ์ ๋ฐ๊ธ apt-get update -y apt-get install software-properties-common -y 3. certbot ์ค์น apt-get install certbot -y sudo certbot certonly -d [๋๋ฉ์ธ ์ฃผ์] --manual --preferred-challenges dns ๋ง์ฝ์ ๋๋ฉ์ธ ์ฃผ์๊ฐ ๋๊ฐ๋ผ๋ฉด ๋ค์ -d [๋๋ฉ์ธ์ฃผ์] ๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค!! ์ฌ๊ธฐ์ ์ด์ ์ด๋ฉ์ผ์ ์์ฑํ๊ณ ์ฝ๊ด ๋์๊ฐ ๋์ค๋๋ฐ ๋ ๋ค ๋์ํ๋ค!!! 4. nginx.conf ์ค์ sudo vi /etc..
๐๏ธ HTTPS ์ํ์ฝ๋ 5์ข ๋ฅ 1xx (์ ๋ณด, Information) : ์์ฒญ์ ๋ฐ๊ณ , ํ๋ก์ธ์ค๋ฅผ ๊ณ์ํ๋ค. 2xx (์ฑ๊ณต, Successful) : ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ๊ณ , ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. 3xx (๋ฆฌ๋ค์ด๋ ์ , Redirection) : ์์ฒญ์ ์๋ฃํ๊ธฐ ์ํด ์ถ๊ฐ ์์ ์กฐ์น๊ฐ ํ์ํ๋ค. 4xx (ํด๋ผ์ด์ธํธ ์ค๋ฅ, Client Error) : ์์ฒญ์ ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. 5xx (์๋ฒ ์ค๋ฅ, Server Error) : ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค. 401 Error VS 403 Error 401 ์๋ฌ์ 403์๋ฌ๋ ๋ชจ๋ ์ธ์ฆ์ด ์๋์ ๋ ๋ฐ์ํ๋ ๊ฒ ๐ธ 401 Unauthorized Error ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋์ง ์์์ ๋ ๋ฐ์ํ๋ ์๋ฌ ์ฆ, ๋ก๊ทธ์ธ์ ํ์ง ์์์ ๋, ์์ฒญ..