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

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

(125)
Spring boot - ํ”„๋ฆฌ๋งˆ์ปค(freemaker) ์„ค์ • 1.build.gradle์— ์˜์กด์„ฑ ์ถ”๊ฐ€ 2.freemaker์—์„œ ์‚ฌ์šฉํ•  ์„ค์ • ๋‚ด์šฉ์„ application.properties์— ์ถ”๊ฐ€ 3. index.ftl ํŒŒ์ผ ์ƒ์„ฑ (์ผ๋ฐ˜ file๋กœ ์ƒ์„ฑ) ์ฒ˜์Œ์—๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ธ์‹๋จ jsp์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Eclipse Marketplace์—์„œ jsp๋กœ ๊ฒ€์ƒ‰ํ›„ Eclipse Enterprise Java and Web Developer Tools ๋‹ค์šด๋กœ๋“œ sts ์žฌ์‹œ์ž‘ ํ›„ window > Preferences > file associations ๊ฒ€์ƒ‰ file types ์—์„œ add > .ftl ์ถ”๊ฐ€ associated editors ์—์„œ add > jsp Editor > apply and close window > Preferences > content types..
Spring Boot ๊ธฐ๋ณธ ๊ตฌ์กฐ - ์ฒ˜์Œ ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ ๊ตฌ์กฐ 1. src/main/java 2. src/main/resources 3. build.gradle 1. DemoApplication.java - ๊ธฐ๋ณธ main() ๋ฉ”์„œ๋“œ - @SpringBootApplication ์–ด๋…ธํ…Œ์ด์…˜ ์ด ์–ด๋…ธํ…Œ์ด์…˜์€ ์„ธ๊ฐ€์ง€ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ @EnableAutoConfiguration : Bean์„ ๋“ฑ๋กํ•˜๋Š” ์ž๋ฐ”์„ค์ •ํŒŒ์ผ @ComponentScan : @Component์„ ๊ฐ€์ง„ Bean์„ ์Šค์บ”, ๋“ฑ๋ก @Configuration : java๊ธฐ๋ฐ˜์˜ ์„ค์ •ํŒŒ์ผ๋กœ ์ธ์‹๋จ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. 2. src/main/resources 2-1. templates : ์Šคํ”„๋ง ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ jsp๋Œ€์‹  thymeleaf๋กœ view์—”์ง„์ด ๋ณ€๊ฒฝ๋˜์—ˆ..
์Šฌ๋ž™ ๊ถŒํ•œ ์ •๋ฆฌ https://slack.com/intl/ko-kr/help/articles/201314026-Slack%EC%9D%98-%EC%97%AD%ED%95%A0%EB%B3%84-%EA%B6%8C%ED%95%9C Slack์˜ ์—ญํ• ๋ณ„ ๊ถŒํ•œ Slack์—์„œ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์—ญํ• ์ด ์žˆ์œผ๋ฉฐ, ๊ฐ์ž ์ž์‹ ๋งŒ์˜ ๊ถŒํ•œ๊ณผ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์—ญํ•  ์œ ํ˜•์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๊ถŒํ•œ์„ ์•„๋ž˜์˜ ํ‘œ์—์„œ ํ™•... slack.com 1. ์—ญํ• ๋ณ„ ๊ถŒํ•œ ์ฑ„๋„ ๊ด€๋ฆฌ ์†Œ์œ ์ž ๊ด€๋ฆฌ์ž ๋ฉค๋ฒ„ ์ฑ„๋„์—์„œ ์‚ฌ์šฉ์ž ์ œ๊ฑฐ (๊ณต๊ฐœ์ฑ„๋„) o o x (์†Œ์œ ์ž๊ฐ€ ๊ถŒํ•œ ๋ถ€์—ฌ ์‹œ ๊ฐ€๋Šฅ) ์ฑ„๋„์—์„œ ์‚ฌ์šฉ์ž ์ œ๊ฑฐ (๋น„๊ณต๊ฐœ์ฑ„๋„) o o o ๊ธฐ๋ณธ ์ฑ„๋„ ์„ค์ • o o x ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„/url๋ณ€๊ฒฝ o x x ๋ชจ๋“  ๋ฉค๋ฒ„์˜ PW ์žฌ์„ค์ • o x x ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ์ƒ์„ฑ ๋ฐ ํŽธ์ง‘ o x ..
SNS ์†Œ์…œ ๋กœ๊ทธ์ธ(์นด์นด์˜ค๋กœ๊ทธ์ธ) * SNS ์†Œ์…œ ๋กœ๊ทธ์ธ(์นด์นด์˜ค๋กœ๊ทธ์ธ) ์นด์นด์˜ค๋กœ๊ทธ์ธ์€ OAuth 2.0 ๊ธฐ๋ฐ˜์˜ ์†Œ์…œ ๋กœ๊ทธ์ธ ์„œ๋น„์Šค * OAuth 2.0 : ์ธ์ฆ์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ Third-Party ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์œ„์ž„ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณต ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ์นด์นด์˜ค, ๋„ค์ด๋ฒ„ ๋“ฑ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ„ํŽธ๋กœ๊ทธ์ธ๋„ OAuth 2.0 ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ๊ธฐ๋Šฅ์„ ์ œ๊ณต *์นด์นด์˜ค ๋กœ๊ทธ์ธ ์ค€๋น„ 1. ์นด์นด์˜ค ๋””๋ฒจ๋กœํผ์˜ ๋‚ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”Œ๋žซํผ ์ถ”๊ฐ€, RedirectURI๋“ฑ๋ก ์„œ๋น„์Šค์—์„œ ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ณ  ์นด์นด์˜ค ์ชฝ์œผ๋กœ ๋„˜๊ฒจ์„œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ›„ ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋น„์Šค ์ธก์— ์ „๋‹ฌ ์ œ๊ณต๋ฐ›์€ ์ •๋ณด๋กœ ์„œ๋น„์Šค ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ(์‹ ๊ทœ์ผ ๊ฒฝ์šฐ) ์ œ๊ณต๋ฐ›์€ ์ •๋ณด๋กœ ์„œ๋น„์Šค..
๋””์ง€ํ„ธ์›ํŒจ์Šค ๋””์ง€ํ„ธ์›ํŒจ์Šค : ํ•˜๋‚˜์˜ ์•„์ด๋””๋กœ ๋ณธ์ธ์ด ์„ ํƒํ•œ ์ธ์ฆ ์ˆ˜๋‹จ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ์ „์ž ์ •๋ถ€ ์„œ๋น„์Šค(์ •๋ถ€24, ๊ณ ์šฉ๋…ธ๋™๋ถ€, ๊ต์œก๋ถ€ ๋“ฑ)๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ์„œ๋น„์Šค ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๋””์ง€ํ„ธ์›ํŒจ์Šค์— ๊ฐ€์ž… ํ›„ ์ „์ž ์ •๋ถ€ ์„œ๋น„์Šค์—์„œ ๋””์ง€ํ„ธ์›ํŒจ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋””์ง€ํ„ธ์›ํŒจ์Šค์— ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด : ์ด๋ฆ„, ์ด๋ฉ”์ผ, ํœด๋Œ€ํฐ๋ฒˆํ˜ธ, ์ƒ๋…„์›”์ผ ์ธ์ฆ๋ฐฉ๋ฒ• ๋ชจ๋ฐ”์ผ ์ธ์ฆ(์ง€๋ฌธ, ์•ˆ๋ฉด, ํŒจํ„ด, PIN, ๊ณต๋™์ธ์ฆ์„œ) ๊ณต๋™์ธ์ฆ์„œ(PC) SMS ๋“ฑ ํ–‰์ •์•ˆ์ „๋ถ€ ๋””์ง€ํ„ธ์›ํŒจ์Šค๋ฅผ ๊ฐ€์ž…ํ•ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฐ๊ณ„๋ฐฉ๋ฒ• : https://www.onepass.go.kr/cnguide (์‹ ์ฒญ-์ ์šฉ-๊ฒ€ํ† ํ›„ ์˜คํ”ˆ) ์—ฐ๊ณ„์ ์šฉ ๊ฐ€์ด๋“œ ๊ธฐ์กด ํšŒ์›๊ณผ ๋””์ง€ํ„ธ์›ํŒจ์Šค ํšŒ์› ๋งคํ•‘ ์‚ฌ์šฉ์ž ์‹๋ณ„๊ฐ’์„ CI๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ : User Key ์œ ๋ฌด๋ฅผ ํ†ตํ•ด ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ๋กœ๊ทธ์ธ ์ฒ˜..
์‹œ๊ฐ„๋ณต์žก๋„(Time Complexity) ๋ฐฑ์ค€์‚ฌ์ดํŠธ์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋งˆ์ฃผ์ณ์„œ ๋ฌธ์ œ ํ’€๊ธฐ์ „์— ์ •๋ฆฌ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ๋ฅผ ์ค€๋น„ํ•  ๋•Œ O(n) ์ด๋‚˜ O(log n), O(n2) ๋“ฑ์„ ๋ณด๊ธดํ–ˆ๋Š”๋ฐ ์™ธ์šฐ๊ธฐ์— ๊ธ‰๊ธ‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—... ์‹œ๊ฐ„๋ณต์žก๋„๋ž€? ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‰๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์—ฐ์‚ฐ ํšŸ์ˆ˜์— ๋น„ํ•ด ์‹œ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ์†Œ๋ชจํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ํ‰๊ฐ€๋ฅผ ๋งํ•จ. ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” Big-O(์ƒํ•œ์„  ๊ธฐ์ค€), Big-โ„ฆ(ํ•˜ํ•œ์„  ๊ธฐ์ค€), Big-Θ(์ด ๋‘˜์˜ ํ‰๊ท  ๊ธฐ์ค€)์ด ์žˆ๋‹ค. ๋ณดํ†ต ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•(Big-O)์„ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•œ๋‹ค. ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•(Big-O) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ’์ด ํด์ˆ˜๋ก(=๊ทธ๋ž˜ํ”„๊ฐ€ ์œ„๋กœ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก) ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋น…์˜คํ‘œ๊ธฐ๋ฒ•์€ ์ƒํ•œ์„ ์„ ๊ธฐ์ค€ = ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ ค = ์ด ์‹œ๊ฐ„๊นŒ์ง€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜ : ((ํšจ์œจ ์ข‹์Œ)) O(1) > O(log n) > ..
์ถ”์ƒํด๋ž˜์Šค(Abastract) ๊ฐœ๋… ๋ฐ ์˜ˆ์ œ ์ถ”์ƒ์ด๋ž€? ์‹ค์ฒด ๊ฐ„์˜ ๊ณตํ†ต๋œ ํŠน์„ฑ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ถ”์ƒํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค๋“ค๊ฐ„์˜ ๊ณตํ†ต๋œ ํŠน์„ฑ์„ ์ถ”์ถœํ•ด์„œ ์„ ์–ธํ•œ ํด๋ž˜์Šค๋ฅผ ๋งํ•˜๋ฉฐ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์›๋ž˜์˜ ํด๋ž˜์Šค(์‹ค์ฒด ํด๋ž˜์Šค)๋“ค ๊ฐ„์—๋Š” ์ƒ์†์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ถ”์ƒํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ๋˜๊ณ  ์‹ค์ฒดํด๋ž˜์Šค๋“ค์ด ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋˜์–ด ๋ถ€๋ชจ์˜ ๋ชจ๋“  ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์ถ”๊ฐ€์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด iphone.class, galaxy.class, balckberry.class๊ฐ€ ์žˆ์„ ๋•Œ ์ด๋“ค์˜ ๊ณตํ†ต๋˜๋Š” ํŠน์„ฑ์„ ์ถ”์ถœํ•ด phone.class ๋ผ๋Š” ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ์ถ”์ƒํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. = new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? 1. ์‹ค์ฒด ํด๋ž˜์Šค๋“ค์˜ ๊ณตํ†ต๋œ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ..
์˜์กด์„ฑ ์ฃผ์ž…(DI) ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) : ์Šคํ”„๋ง์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋กœ ์ œ์–ด์˜ ์—ญํ–‰์ด ๋ฐœ์ƒํ•  ๋•Œ ์Šคํ”„๋ง ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฐ์ฒด(Bean)์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ• * ์ œ์–ด์˜ ์—ญํ–‰ : (IoC : Inversion Of Control) : ๋ฉ”์„œ๋“œ๋‚˜ ๊ฐ์ฒด์˜ ํ˜ธ์ถœ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์—์„œ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ. ์ฆ‰ ์ œ์–ด๊ถŒ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ œ 3์ž๊ฐ€ ๊ฐ€์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. >> ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์  * ์˜์กด์„ฑ : ํด๋ž˜์Šค๋‚˜ ๊ฐœ์ฒด๊ฐ„ ๊ด€๊ณ„๋ฅผ ๋งํ•˜๋ฉฐ ์˜์กด์„ฑ์ด ๋†’์„ ์ˆ˜๋ก ๊ฐ์ฒด๊ฐ€ ํ˜ผ์ž์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋„์›€์„ ๋ฐ›์•„์•ผ๋งŒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. >> ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋ฐ”๋€” ๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›๋Š”๋‹ค. => ๊ฒฐ๊ตญ DI๋Š” ์˜์กด ๊ด€๊ณ„์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ œ์–ด์˜ ์—ญ..

๋ฐ˜์‘ํ˜•