Custom Validation Exception ์ฒ๋ฆฌ
Jenkins์ GitHub ์ฐ๋ํ๊ธฐ
springboot ํ๋ก์ ํธ๋ฅผ Git์ผ๋ก ์์ ํ ๋ฐฐํฌ๋ฅผ ์งํํด์ผ ํ๋ค.์ด ๊ณผ์ ์์ DB์ ์ค์ ์ ๋ณด์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ Git์ ์ฌ๋ผ๊ฐ๋ฉด ์ ๋๊ณ ๋ณด์์ฒ๋ฆฌ๋ฅผ ํด์ ๋ฐฐํฌํด์ผ ํ๋ค.์์ ํ ๋ฐฐํฌ๋ฅผ ์ํด Jenkins credentials์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์(์ฐธ๊ณ
S3์ CloudFront ์ฐ๋ํ๊ธฐ
์ธํธ๋ก (์ฉ์ด ์ ๋ฆฌ) > 1. ์คํ ๋จ์ - cpu core์์ ์คํํ๋ ํ๋์ ๋จ์๋ก ํ๋ก์ธ์ค์ ์ค๋ ๋๋ฅผ ํฌ๊ดํ๋ ๊ฐ๋ (๋ถ์ฐ ์ค๋ช ์ด ์๋) ํ๋ก์ธ์ค - ํ๋์ ์ค๋ ๋๋ง ๊ฐ์ง๊ณ ์๋ ๋จ์ผ ์ค๋ ๋ ํ๋ก์ธ์ค ๋์์ฑ - ํ ์๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ด ์๋๋ผ, ์งง์ ์ ํ์ผ๋ก
๋ฐฑ์ค - ์ฒญ์๋ ์์ด๋ฐฑํธ๋ํน, ๊ตฌํ ๋ฌธ์ ์์ผ๋ฉฐ ๊น์ ๋ณต์ฌ๋ฅผ ํตํ ํ์์ ํตํด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค.๋ค๋ง, Java์ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ด ๋ฏธ์ํ์ฌ ๊น์ ๋ณต์ฌ๊ฐ ์๋ ์ฐธ์กฐ๊ฐ ๋ณต์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๊ฝค๋ ๊ณ ์ํ์๋ค..๐๐๐์์ด๋ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ์นธ์ ์ด๋ํ
๋ณต์ฌํ๊ณ ์ ํ๋ ์ ์ฅ์(gitlab)์ bare clone์ ์์ฑํฉ๋๋ค.์๋ก์ด ์ ์ฅ์(github)๋ก mirror-push๋ฅผ ์งํํฉ๋๋ค.git lfs์ BFG Repo Cleaner๋ฅผ ์ค์นํฉ๋๋ค.๋ณต์ฌํ๊ณ ์ ํ๋ ์ ์ฅ์(gitlab)์ bare clone์ ์์ฑํฉ๋๋ค.
์ ๋ชฉ : ์์์ ์ ๋ชฉ์ค๋ช : ์ค๋ช ์ฑ๋ : ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ์ฑ๋ ์ ํ์ด URL์ด Endpoint URL์ด๋ฉฐ ์๋ 2.2 ์ค์ ์ ์ ๋ ฅํ๋ค.Jenkins ๊ด๋ฆฌ - ํ๋ฌ๊ทธ์ธ ๊ด๋ฆฌ - Available plugins์์Mattermost Notification Plugin์ ์ค์น
๊ณต์ ์์: ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ ์ ์๋ ์์์๊ณ ์์ญ: ๊ณต์ ์์๋ค ์ค ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ์ ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ ๋ถ๋ถ์ด ๋, ์๊ธธ ์ ์๋ ๋ฌธ์ ๊ฐ ๊ฒฝ์์ํ๊ฒฝ์์ํ: ๋ ์ด์์ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋ณํ์ ์ผ๋ก ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์์ ํ ๋ ํ์ด๋ฐ์ด๋
MySQL๊ณผ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง์ธ 8.0 InnoDB์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์ฟผ๋ฆฌ ์ต์ ํTable: ๋์คํฌ I/O๋ฅผ ์ค์ด๋ ๊ฒ์ด ํต์ฌORDER BY: ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ์ ๋ ฌ์ด ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐGROUP BY: ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด GROUP BY๋ฅผ ํ๋ ๊ฒฝ์ฐํ์ํ ๋ฐ์ดํฐ๋ง ์ฝ๊ฒ ๋๋ค.al
๋ฐ์ดํฐ ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ํ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ฉฐ WHERE ์ ๋ฑ์ ํตํด ํ์ฉ๋๋ค.๋ฐ์ดํฐ๊ฐ ํน์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋์ด ์๋ค๋ฉด ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค.์ธ๋ฑ์ค๋ ํญ์ ์ต์ ์ ์ ๋ ฌ ์ํ๋ฅผ ์ ์ง์ธ๋ฑ์ค๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ์ ์ฝ 10% ์
์ฝ๋ํธ๋ฆฌ - ํฌํ ๋ถ์๊ธฐํฌํ ์ ๋ณด arr (N \* M)๊ณต๊ฒฉ ์์ ์ฒดํฌ ๋ฐฐ์ด lastAttack (N \* M)๊ณต๊ฒฉ ๊ด๋ จ ์ฌ๋ถ ์ฒดํฌ ๋ฐฐ์ด isAttacked (N \* M)์ข ๋ฃ ์กฐ๊ฑด ํ์ธ(ํฌํ์ด 1๊ฐ๋ง ์๋ ๊ฒฝ์ฐ)๊ณต๊ฒฉ์ ์ ์ ๊ณต๊ฒฉ์์ ๊ณต๊ฒฉ๋ ์ด์ ๊ณต๊ฒฉ or ํฌํ ๊ณต๊ฒฉํฌํ
๐ ๋ฌธ์ ์ฝ๋ํธ๋ฆฌ - ํฌํ ๋ถ์๊ธฐ ํ์ด ์ฌ์ฉํ ๋ฐฐ์ด > - ํ์์ ์์น ์ ๋ณด arr (N * N) > - ํ์๋ค์ ๋์ move_arr (N * N) > - ๋ชจ๋ ํ์ ํ์๋ค ์์นซ๊ฐ์ ๋ด์ ๋ฐฐ์ด total_team (ํ์ ์ * M) ์์ ๊ฐ ํ์
application.yml ํ๋๋ก ๊ณตํต ์ค์ ์ ๋ณด๋ค์ ๊ด๋ฆฌ\---์ yml ํ์ผ ๋ด์์ ํ๋กํ์ผ ์์ญ๋ณ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ๋ ๊ธฐ๋ฅ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ์ ๋ณด๋ด/์ธ๋ถ API ํธ์ถ ์ ๋ณดapplication-db.yml, application-site.yml ๋ฑ์ผ๋ก ๋ถ๋ฆฌํด์ ๊ฐ ์ค์
- FIFO(First In First Out) : ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ ๋์จ๋ค.
FILO(First In Last Out) : ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋์ค์ ๋์จ๋ค.
๋ถ๋ณ(immutable)๋ฌธ์์ด ์์ ์ ์๋ก์ด String ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค.๋ฉํฐ์ฐ๋ ๋ ํ๊ฒฝ์์ ์์ (thread-safe)๋ฌธ์์ด ์ถ๊ฐ, ์์ , ์ญ์ ๋ฑ์ ์ฐ์ฐ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ฉด ํ ๋ฉ๋ชจ๋ฆฌ(Heap)์ ๋ง์ ์์ ๊ฐ๋น์ง(Garbage)๊ฐ ์์ฑ๋์ด ํ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก