๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ61

02/20(ํ™”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 40์ผ์ฐจ TIL - ํ†ตํ•ฉํ…Œ์ŠคํŠธ ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ๐Ÿฅ” ๋‹จ์œ„ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉํ…Œ์ŠคํŠธ 1. ๋‹จ์œ„ํ…Œ์ŠคํŠธ (Unit Test) - ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์ด๋‚˜ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์„ธ๋ฐ€ํ•œ ๋ถ€๋ถ„๊นŒ์ง€ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. - ํ•˜์ง€๋งŒ ๋ชจ๋“ˆ ๊ฐ„์— ์ƒํ˜ธ ์ž‘์šฉ์€ ๊ฒ€์ฆํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 2. ํ†ตํ•ฉํ…Œ์ŠคํŠธ (Integration Test) - ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ชจ๋“ˆ์ด ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ชจ๋“ˆ ๊ฐ„์˜ ์—ฐ๊ฒฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ—๏ธ ํ†ตํ•ฉํ…Œ์ŠคํŠธ์˜ ํŠน์ง• 1. ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ ํ™•์ธ : ์‹œ์Šคํ…œ ๋‚ด๋ถ€์˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ํ†ตํ•ฉ์„ ํ™•์ธํ•˜์—ฌ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. 2. ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ฒ€์ฆ : ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 3. ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ ๋™์ž‘ ํ™•์ธ : ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ .. 2024. 2. 20.
02/19(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 39์ผ์ฐจ TIL - ๋‹จ์œ„ํ…Œ์ŠคํŠธ ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ ๐Ÿฅ” ๋‹จ์œ„ํ…Œ์ŠคํŠธ(Unit Test) ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๊ฐœ๋ณ„ ์ฝ”๋“œ ๋‹จ์œ„๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•ด๋‹น ๋ถ€๋ถ„์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. โ—๏ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… 1. ๋…๋ฆฝ์„ฑ(Independence) : ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๋‚˜ ์™ธ๋ถ€ ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜์–ด์•ผ ํ•จ. 2. ๋ฐ˜๋ณต ๊ฐ€๋Šฅ์„ฑ(Repeatable) : ๋™์ผํ•œ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง„ ๊ฒฝ์šฐ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ…Œ์ŠคํŠธ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•จ. 3. ์ž๋™ํ™”(Automated) : ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋Š” ์ž๋™ํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์ˆ˜๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ.. 2024. 2. 19.
02/16(๊ธˆ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 38์ผ์ฐจ TIL - OAuth ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ ์†Œ์…œ๋กœ๊ทธ์ธ OAuth ๐Ÿฅ” ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ชจ๋“  ์›น ์‚ฌ์ดํŠธ์—์„œ ํšŒ์›๊ฐ€์ž… ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋‹ด์ด ๋ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ๋ฒˆ๊ฑฐ๋กœ์šด ํšŒ์›๊ฐ€์ž… ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ๋ฟ ์•„๋‹ˆ๋ผ, ์›น ์‚ฌ์ดํŠธ๋งˆ๋‹ค ๋‹ค๋ฅธ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์šด์˜ํ•˜๋Š” ์ธก์—์„œ๋„ ํšŒ์›๋“ค์˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ง€์ผœ์•ผ ํ•˜๋Š” ์—ญํ• ์ด ๋ถ€๋‹ด์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋Ÿฌ์Šค์™€ ๋ฐฑ์‹ ์˜ ๊ด€๊ณ„ ์ฒ˜๋Ÿผ, ๋ฐœ์ „ํ•˜๋Š” ํ•ดํ‚น ๊ธฐ์ˆ ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋…ธ๋ ฅ์ด ์ง€์†์ ์œผ๋กœ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด OAuth ๋ฅผ ์‚ฌ์šฉํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๐Ÿฅ” OAuth OAuth๋Š” ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ ์ƒ์˜ ์ž์‹ ๋“ค์˜ ์ •๋ณด์— ๋Œ€ํ•ด ์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ์จ ์‚ฌ.. 2024. 2. 16.
02/15(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 37์ผ์ฐจ TIL - .gitignore ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ gitignore ๐Ÿฅ” .gitignore ๋ž€? .gitignore ํŒŒ์ผ์€ Git ์˜ root ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜์–ด, Git Repository ๋‚˜ Staging Area ์— ์ถ”๊ฐ€๋˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ํด๋”๋‚˜, ํŒŒ์ผ์„ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. .gitignore ์— ์ •์˜๋œ ํŒŒ์ผ์€ Staging Area ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— tracking ๋˜์ง€ ์•Š์•„์„œ git status ๋ฅผ ํ–ˆ์„ ๋•Œ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ—๏ธ gitignore ๋กœ git ์— ์ถ”๊ฐ€๋˜์ง€ ๋ง์•„์•ผ ํ•  ํŒŒ์ผ ์ •์˜ **/application.properties ์ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๊นƒํ—ˆ๋ธŒ์— ์ค‘์š”์ •๋ณด๊ฐ€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. application.properties ์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ํŒŒ์ผ๋“ค์„ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ“š ์˜ค๋Š˜.. 2024. 2. 15.
02/15(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ NEWSFEED KPT ํšŒ๊ณ  ๐Ÿ“– NEWSFEED KPT ํšŒ๊ณ  ์ €ํฌ ์กฐ๋Š” ์ด๋ฒˆ์— ์˜ค๋Š˜์˜ ์šด๋™๊ณผ ์‹๋‹จ์€ ๋ญ์˜€์–ด? ๋ฅผ ์ค„์ธ ์˜ค์šด์‹๋ญ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. โ—๏ธ GitHub ๋งํฌ https://github.com/potatobboi/newsfeed Keep - ํ˜„์žฌ ๋งŒ์กฑํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„ ๋งŒ๋“ค๊ณ ์‹ถ์€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ๊ณ„ํšํ–ˆ๋˜๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์Šฌ๋ž™ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์˜์‚ฌ์†Œํ†ต์„ ํ•œ ๊ฒƒ ํŒ€์›๋“ค๊ณผ์˜ ๋ถ„์œ„๊ธฐ๊ฐ€ ์ข‹์•˜๋‹ค. ๊ฐ์ž ๋งก์€ ํŒŒํŠธ๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‹ค. Problem - ๋ถˆํŽธํ•˜๊ฒŒ ๋Š๋ผ๋Š” ๋ถ€๋ถ„ ์•„์ง ์Šคํ”„๋ง์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋‚ฎ์•„ ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค. ์„ค๊ณ„๋‹จ๊ฒŒ์™€ spring๊ณผ spring security์— ๋Œ€ํ•œ ์ดํ•ด ๋ถ€์กฑ ResponseEntity๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. Exceptionhandler๋กœ ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ปค๋ฐ‹์ด๋‚˜ pu.. 2024. 2. 15.
02/14(์ˆ˜) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 36์ผ์ฐจ TIL - Validation ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ Validation ๐Ÿฅ” Validation ์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํŠนํžˆ, Java ๋Š” null ๊ฐ’์— ๋Œ€ํ•œ ์ ‘๊ทผ์— ๋Œ€ํ•ด NullPointrException ์˜ค๋ฅ˜๊ฐ€ ๋ฐœํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด Validation (๊ฒ€์ฆ ๊ณผ์ •) ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Spring ์—์„œ๋Š” null ํ™•์ธ๋ฟ ์•„๋‹ˆ๋ผ ๋ฌธ์ž์˜ ๊ธธ์ด ์ธก์ •๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฒ€์ฆ ๊ณผ์ •๋„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก Bean Validation ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿฅ” Bean Validation ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์—๋„ˆํ…Œ์ด์…˜์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค. - @NotNull : null ๋ถˆ๊ฐ€ - @NotEmpty : null, "" ๋ถˆ๊ฐ€ - @NotBlank : null, "", " " ๋ถˆ๊ฐ€ - @.. 2024. 2. 14.