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

์ „์ฒด ๊ธ€

(402)
[์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง] Compose ๋ฉ”์†Œ๋“œ ํŒจํ„ด ์ž๋ฐ”์ง€๊ธฐ ๋ฐ•์žฌ์„ฑ๋‹˜ TDD ๊ฐ•์˜๋ฅผ ๋ณด๋˜ ๋„์ค‘ .. `compose ๋ฉ”์†Œ๋“œ ํŒจํ„ด`์ด๋ž€ ๊ฒƒ์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค.TDD๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ, ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ -> ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ -> ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, `์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง` ๋ถ€๋ถ„์—์„œ compose method ํŒจํ„ด์„ ์ ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์„ค๋ช…ํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚˜์˜จ compose method ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•˜์—ฌ ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ, ๋ฐ•์žฌ์„ฑ๋‹˜์€ ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋งํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ง€ํ‚ค๋ฉด ์ข‹๋‹ค๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค.ํ•œ ๋ฉ”์„œ๋“œ์— ์˜ค์ง ํ•œ ๋‹จ๊ณ„์˜ ๋“ค์—ฌ์“ฐ๊ธฐ(indent)๋งŒ ํ•œ๋‹ค. -> 2 ์ด์ƒ์˜ indent๋Š” ๋ฉ”์†Œ๋“œ๋กœ ์ž‘์„ฑelse ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. -> else์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  if~ retrun์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ..
[Spring boot] Spring Security์— ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ์—ฐ๋™ํ•˜๊ธฐ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์— ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ์—ฐ๋™ํ•ด๋ด…์‹œ๋‹ค. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.https://e-you.tistory.com/454 [Spring Security] Session ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹ VS Token ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹๋จผ์ €, `์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ`๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ณด์•ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ Ree-you.tistory.com1. ๊ตฌ๊ธ€ ์„œ๋น„์Šค ๋“ฑ๋ก ํ•˜๋‹จ์˜ ๊ตฌ๊ธ€ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ด์„œ ๋‚ด๊ฐ€ ๋งŒ๋“ค ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.https://console.cloud.google.com Google ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ๋กœ๊ทธ์ธ Google ํด๋ผ์šฐ..
[Spring Security] Session ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹ VS Token ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹ ๋จผ์ €, `์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ`๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ณด์•ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ Rest Api ์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.  ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์ธ์ฆ(Authentication) : ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค. ex) ๋กœ๊ทธ์ธ ํผ์—์„œ ์‚ฌ์šฉ์ž ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.์ธ๊ฐ€(Authorization) : ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์ด๋‚˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์œ ์ €์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ—ˆ๋ฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ex) ๊ด€๋ฆฌ์ž๋งŒ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ์„ค์ • ๋“ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์„ธ์…˜ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ : ์„ธ์…˜ ๊ธฐ..
[WEB] HttpServletRequest / ServletRequest HttpServletRequest์™€ ServletRequest๋Š” ๋‘˜ ๋‹ค ์„œ๋ธ”๋ฆฟ์ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ ์ด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. 1. ServletRequest์ธํ„ฐํŽ˜์ด์Šค: ServletRequest๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.ํ”„๋กœํ† ์ฝœ์— ๋…๋ฆฝ์ : HTTP๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ(Gopher, FTP ๋“ฑ)๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ฐ˜์ ์ธ ์š”์ฒญ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ: ์š”์ฒญ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜(ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ), ์š”์ฒญ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.์ฃผ ์‚ฌ์šฉ์ฒ˜: ์›น ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์„œ๋ธ”๋ฆฟ์„ ์œ„ํ•œ ์š”์ฒญ์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. HTTP์— ํŠนํ™”๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค์ธ HttpServl..
[Spring boot] h2 ์—ฐ๊ฒฐํ•˜๊ธฐ spring boot ํ”„๋กœ์ ํŠธ์— h2 ์—ฐ๊ฒฐ ํ•ด๋ด…์‹œ๋‹ค. 1. https://www.h2database.com/html/main.html ํ•ด๋‹น ์‚ฌ์ดํŠธ์—์„œ h2 ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์••์ถ•์„ ํ’€์–ด์ค๋‹ˆ๋‹ค. 2. ์••์ถ•์„ ํ‘ผ ํด๋”์—์„œ h2/bin์— ์ ‘๊ทผcd study/h2/bin 3. ๋งŒ์•ฝ ์‹คํ–‰์ด ๋˜์ง€ ์•Š์„ ์‹œ chmod 755 h2.sh ๋กœ ๊ถŒํ•œ ๋ถ€์—ฌ 4. h2๋ฅผ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค../h2.sh  5. ์‹คํ–‰์ด ๋˜์—ˆ์œผ๋ฉด http://172.18.41.167:8082/ ์— ๋“ค์–ด๊ฐ€ h2์— ์ ‘๊ทผํ•ด์ค๋‹ˆ๋‹ค. 6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด JDBC URL์— jdbc:h2:~/jpa ์„ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค. 7. ์—ฐ๊ฒฐ์„ ๋Š๊ณ  jdbc:h2:tcp://localhost/~/jpa ๋กœ URL ๋ณ€๊ฒฝ ํ›„ ์žฌ์ ‘์† ํ•ด์ค๋‹ˆ๋‹ค. 8. spring boot..
[Kotlin] ์ฝ”ํ‹€๋ฆฐ ๊ธฐ์ดˆ ์ฝ”ํ‹€๋ฆฐ์€ ํƒ€์ž… ์„ ์–ธ์„ ์ƒ๋žตํ•ด๋„ ๋˜๊ณ , ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์€ ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์„ ์žฅ๋ คํ•œ๋‹ค. ๊ฐ„๋‹จํ•œ ์ฝ”ํ‹€๋ฆฐ์˜ ํŠน์ง•์„ ์•Œ์•„๋ณด์ž. fun main(args: Array){ println("Hello world!") } ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ fun ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ๋’ค์— ๊ทธ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ ์“ด๋‹ค. ํ•จ์ˆ˜๋ฅผ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์— ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ ๊ผญ ํด๋ž˜์Šค ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฐฐ์—ด๋„ ์ผ๋ฐ˜์ ์ธ ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—๋Š” ์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฌธ๋ฒ•์ด ๋”ฐ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. cf) ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๋ฐฐ์—ด๋„ ์ผ๋ฐ˜์ ์ธ ํด๋ž˜์Šค์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃจ์–ด์ง„๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ ๋ฐฐ์—ด์€ Array ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ํŠน๋ณ„ํ•œ ํ‚ค์›Œ๋“œ ์—†์ด๋„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ..
[Docker] ๋„์ปค์˜ ์ •์˜์™€ ๊ธฐ๋ณธ ๋ช…๋ น์–ด ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์ด๋‹ค. ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๊ณ  ๊ทธ ๋ฐฉ๋ฒ•์ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ธ๊ธฐ๋ฅผ ๋Œ๋ฉด์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ๋„์ปค๊ฐ€ ๋“ฑ์žฅํ•˜๊ณ  ์„œ๋ฒ„๊ด€๋ฆฌ/๊ฐœ๋ฐœ ๋ฐฉ์‹์ด ์ปจํ…Œ์ด๋„ˆ ๋ฐฉ์‹œ์œผ๋กœ ์™„์ „ํžˆ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ๋„์ปค๊ฐ€ ๋“ฑ์žฅํ•˜๊ณ  ๋‚˜์„œ ์–ด๋– ํ•œ ํ”„๋กœ๊ทธ๋žจ๋„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ์–ด๋””์„œ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๋„์ปค๋Š” ๊ฐ€์ƒ๋จธ์‹  ๊ฐ™์€๊ฑฐ์ผ๊นŒ? ๋„์ปค๋Š” ๊ฐ€์ƒ๋จธ์‹ ์ฒ˜๋Ÿผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ๊ฐ€์ƒ๋จธ์‹ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์‰ฝ๊ณ  ํšจ์œจ์ ์ด๋‹ค. ๋„์ปค์˜ ํŠน์ง• ํ™•์žฅ์„ฑ/์ด์‹์„ฑ - ๋„์ปค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์–ด๋””์„œ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ - ํŠน์ • ํšŒ์‚ฌ๋‚˜ ์„œ๋น„์Šค์— ์ข…์†์ ์ด์ง€ ์•Š์Œ - ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ํ…Œ์ŠคํŠธ์„œ๋ฒ„ ์ƒ์„ฑ๋„ ๊ฐ„ํŽธํ•จ ํ‘œ์ค€์„ฑ - ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ruby, nodejs..
[JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ธฐ์ดˆ๋ฌธ์ œ Day11 https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=java ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์ต์ˆ™ํ•ด์ง€๊ณ  ์‹ถ๋‹ค๋ฉด? ์ฝ”๋”ฉ ์—ญ๋Ÿ‰์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ๊ธธ๋Ÿฌ์ฃผ๋Š” ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹์œผ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ”๋”ฉ์— ๋Œ€ํ•œ ๊ธฐ์ดˆ ๊ฐ๊ฐ์„ ๊ธธ๋Ÿฌ ๋ณด์„ธ์š”. school.programmers.co.kr Day 11 - ๋ฆฌ์ŠคํŠธ(๋ฐฐ์—ด) ๋ฌธ์ž ๊ฐœ์ˆ˜ ์„ธ๊ธฐ class Solution { public int[] solution(String my_string) { int[] answer = new int[52]; for(int i=0;i