Chanho

[Flutter] Flutter๋ž€ ๋ฌด์—‡์ด๊ณ  ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ํ†ตํ•œ ๊ตฌ์กฐ ์ดํ•ด

Android, ios์— ๋ชจ๋‘ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋ฐ”์ผ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” ํ˜„ ์‹œ์ ์—์„œ๋Š” ํฌ๊ฒŒ โ€˜React-nativeโ€™ ์™€ โ€˜flutterโ€™๋กœ ๋‚˜๋‰˜์—ˆ๋‹ค๊ณ  ๋ณธ๋‹ค. ๊ทธ ์ค‘ ์šฐ๋ฆฌ๋Š” โ€˜Flutterโ€™ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ถœ์ฒ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ด๋ž€? ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด๋ž€ ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ...

[Library] Toast UI Grid์— ๋Œ€ํ•ด์„œ

Toast UI Grid๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๐Ÿšถ ํ™œ์šฉ ์‚ฌ๋ก€ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ๋ฆฌํฌํŠธ: ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ ๋Œ€์‹œ๋ณด๋“œ๋‚˜ ๋ฆฌํฌํŠธ์—์„œ ๋Œ€์šฉํ–ฅ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ๊ทธ๋ฃนํ™” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„...

[Mybatis] ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค๋ž€ ๋ฌด์—‡์ด๊ณ  ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ

MyBatis๋ž€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งตํ•‘ ํˆด(SQL Mapper) ์ด๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€˜MyBatisโ€™๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” SQL ๋ฌธ์„ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, SQL ๋ฌธ์„ ์ข€๋” ์œ ์—ฐํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ , ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๋ณด...

[SpringDB] ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €(Transaction Manager)์— ๋Œ€ํ•ด์„œ

์Šคํ”„๋ง์ด ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €(Transaction Manager)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋ณต์žกํ•œ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋ณต์žก์„ฑ ๊ด€๋ฆฌ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ์‚ฐ์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ €๋Š” ์ด๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„ํŽธํ•˜๊ฒŒ ํŠธ๋žœ์žญ์…˜์„ ...

[Database] ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฝ(DB Lock)์— ๋Œ€ํ•ด์„œ

ํŠธ๋žœ์žญ์…˜(Transaction)์— ๋Œ€ํ•ด์„œ? โ€˜ํŠธ๋žœ์žญ์…˜โ€™์ด๋ž€ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ์—ฐ์‚ฐ๋“ค์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์€ํ–‰ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ž A๊ฐ€ ์‚ฌ์šฉ์ž B์—๊ฒŒ ๋ˆ์„ ์ด์ฒดํ•˜๋Š” ๊ณผ์ •์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ ํฌํ•จ๋œ ์ „์ฒด ๊ณผ์ •์„ โ€˜ํŠธ๋žœ์žญ์…˜โ€™์ด๋ผ ํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜ ACID ์ด๋ž€? ์›์ž์„ฑ(Atom...

[SpringDB] ์ปค๋„ฅ์…˜ ํ’€(Connection Pool)๊ณผ DataSource์— ๋Œ€ํ•ด์„œ

์ปค๋„ฅ์…˜ ํ’€(Connection Pool)๊ณผ ๋ฐ์ดํ„ฐ ์†Œ์Šค(DataSource)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ์ด๋‹ค. ์ด ๊ธฐ์ˆ ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ปค๋„ฅ์…˜ ํ’€(Connection Pool)์— ๋Œ€ํ•ด์„œ ์ปค๋„ฅ์…˜ ํ’€(Connection Pool)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ์ž์›์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ...

[JavaScript] ๋น„๋™๊ธฐ ํ†ต์‹  ์›น ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด์„œ _ AJAX & XHR

AJAX (Asynchronous JavaScript and XML)์— ๋Œ€ํ•ด์„œ โ€˜AJAXโ€™๋Š” ์›น ํŽ˜์ด์ง€๊ฐ€ ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์ด๋‹ค. โ€˜AJAXโ€™๋Š” ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์˜ ์กฐํ•ฉ์„ ํฌํ•จํ•˜๋Š”๋ฐ, ์ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ โ€˜XMLHttpRequestโ€™ ๊ฐ์ฒด์ด๋‹ค. โ€˜AJAXโ€™๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ์„œ๋ฒ„...

[Library] RequireJS ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๋ฐ AMD์— ๋Œ€ํ•ด์„œ

RequireJS๋Š” โ€˜JavaScriptโ€™ ํŒŒ์ผ๊ณผ ๋ชจ๋“ˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” โ€˜JavaScript Libraryโ€™์ด๋‹ค. ์ฃผ์š” ๋ชฉ์ ์œผ๋กœ ํŽ˜์ด์ง€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์ฝ”๋“œ์˜ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. โ€˜RequireJSโ€™๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋ชจ๋“ˆํ™”๋œ ๊ฐœ๋ฐœ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ โ€˜JavaScriptโ€™ ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜...

[Spring] ์ปค์Šคํ…€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ธฐ _ Custom Exception

Spring Boot์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์€ ์š”์ฒญ์ด ์ „์†ก๋˜๊ฑฐ๋‚˜ ์„œ๋ฒ„ ๋‚ด๋ถ€์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ„๋„์˜ ์˜ค๋ฅ˜ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ค๋ฅ˜ํŽ˜์ด์ง€์ธ Whitelabel Error Page๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ErrorCode ์ž‘์„ฑํ•˜๊ธฐ ์ปค์Šคํ…€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ์—์„œ ํ‘œ์‹œํ•  ๋‚ด์šฉ ๋ฐ ๋ถ€๊ฐ€์ ์ธ ๋ถ€๋ถ„์— ๊ด€ํ•œ ์ •์˜๋ฅผ ํ•œ๋‹ค. publ...

[Spring] URI๋ฅผ Location ํ—ค๋”์— ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ _ ResponseEntity, Locationgi

RESTfull ์›น ์„œ๋น„์Šค์—์„œ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ๊ทธ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” URI๋ฅผ โ€˜Locationโ€™ํ—ค๋”์— ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š”, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค. URI location = ServletUriComponentsBuilder.fromCurrentRequest().pat...

[Spring] ๋ฐฑ์—”๋“œ์—์„œ ์–ด๋–ค์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋Š”๊ฐ€? _ REST API & Springboot starter์™€ ์ž๋™์„ค์ •

Spring์—์„œ REST API ๊ตฌํ˜„์˜ ๋ฐฑ์—”๋“œ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ์ปจํŠธ๋กค๋Ÿฌ(Controller): REST API๋Š” @RestController์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด ์ปจํŠธ๋กค๋Ÿฌ๋Š” HTTP ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์„œ๋น„์Šค(Service) ๊ณ„์ธต: ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ธต...

[Spring] ๋กœ๊ทธ ๊ด€๋ฆฌํ•˜๊ธฐ _ Logger

๋กœ๊ฑฐ(Logger)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ๋กœ๊น…(Logging)์€ ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ์‹œ์Šคํ…œ ์ฝ˜์†”, ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ๋“ฑ์— ๊ธฐ๋กํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค. ๋กœ๊ฑฐ(Logger)๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ๋””๋ฒ„๊น…: ๊ฐœ๋ฐœ ์ค‘์ด๋‚˜ ์šด์˜ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ์˜ ์›์ธ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ...

[Spring] ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ _ @PostConstruct & @PreDestroy

์ž์›์˜ ํ™œ๋‹น๊ณผ ํ•ด์ œ, ์ดˆ๊ธฐํ™”์™€ ์†Œ๋ฉธ์„ ์ž๋™ํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€๋ฆฌ์™€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด @PostConstruct ์™€ @PreDestroy ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง ๋นˆ์˜ ์ด๋ฒคํŠธ ์‚ฌ์ดํด (Event Cycle) ๋นˆ ์ •์˜ ๋ฐ ๋“ฑ๋ก ...

[Database] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดํ•ดํ•˜๊ธฐ _ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์Šคํ‚ค๋งˆ ๋ฐ SQL

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜ ๋ฐ ํ•„์ˆ˜๊ธฐ๋Šฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์— ์˜ํ•ด ๊ณต์œ ๋˜์–ด ์‚ฌ์šฉ๋  ๋ชฉ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌ๋˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š”๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ, ์ฒด๊ณ„์ ์œผ๋กœ ์กฐ์ง๋˜๊ณ  ์ €์žฅ๋œ ์ •๋ณด์˜ ๋ชจ์Œ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ์‰ฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ์„ค๋ช… ...

[MySQL] ๊ธฐ๋ณธ ์กฐ์ž‘ํ•˜๊ธฐ _ DB, TABLE, ๋ฐ์ดํ„ฐ, ์ž๋ฃŒํ˜•

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ $ CREATE DATABASE 'database_name'; -- ๋˜๋Š” $ CREATE SCHEMA 'database_name;' โ€˜CREATE SCHEMAโ€™ ๋ช…๋ น์–ด์™€ โ€˜CREATE DATABASEโ€™๋ช…๋ น์–ด๋Š” โ€˜MySQLโ€™์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ โ€˜CREA...

[MySQL] ๋งฅ์—์„œ MySQL ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์…‹ํŒ… ํ•˜๊ธฐ

Homebrew๋ฅผ ํ†ตํ•œ MySQL ์„ค์น˜ Homebrew๊ฐ€ ์—†๋‹ค๋ฉด ์„ค์น˜ brew๋ฅผ ํ†ตํ•ด ์„ค์น˜ $ brew update # ์„ค์น˜์ „ ์—…๋ฐ์ดํŠธ $ brew install mysql # ์„ค์น˜ ์„ค์น˜ ํ™•์ธ $ mysql --version MySQL ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ # ์„œ๋ฒ„ ์‹œ์ž‘ $ mysql.s...

[SQL] Join๊ณผ Union์— ๋Œ€ํ•ด์„œ

JOIN SQL์—์„œ โ€˜JOINโ€™์€ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค. ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด๋ถ€ ์กฐ์ธ (Inner Join) ๋‘ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ํ–‰๋งŒ ๋ฐ˜ํ™˜(NOT NULL)ํ•œ๋‹ค. ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์— ์ผ์น˜ํ•˜๋Š” ๋ฐ...

[SpringDB] JDBC, Hibernate, JPA ๊ธฐ์ดˆ

JDBC (Java Database Connectivity) โ€˜JDBCโ€™๋Š” ์ž๋ฐ” ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๊ธฐ์ˆ ์ด๋‹ค. ์ด๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ‘œ์ค€ SQL ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. โ€˜JDBCโ€™๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜๋ฉฐ ๊ฐ โ€˜๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒค๋”โ€™(์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ด€๋ จ๋œ ...

[Solution] Spring - web server failed to start. port 8080 was already in use ํ•ด๊ฒฐ

Spring์—์„œ ์›น ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œ ์‹œ์ž‘ ์‹คํŒจ์™€ ํ•ด๋‹น ํฌํŠธ๊ฐ€ ์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ด๋ผ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋งˆ์ฃผ์น˜๋ฉฐ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์„ ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค. ํ•ด๋‹น ์˜ค๋ฅ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 8080 ํฌํŠธ๊ฐ€ ์ด๋ฏธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ ํฌํŠธ ํ™•์ธ ๋ฐ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ํฌํŠธ ํ™•์ธ # Window $ netstat -ano | find "...

[Spring] ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ์ „๋žต์  ๊ธฐ๋Šฅ๋“ค

์Šคํ”„๋ง ๋ถ€ํŠธ(Spring Boot)๋Š” ํ˜„๋Œ€์ ์ธ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ์ „๋žต์  ํŠน์ง•์„ ์ œ๊ณตํ•œ๋‹ค. Auto-Configuration Spring Boot๋Š” โ€˜Classpathโ€™์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค....

[Spring] CDI(Contexts and Dependency Injection)

โ€˜Jakarta Contexts and Dependency Injectionโ€™์€ โ€˜Java EE(Enterprise Edition)โ€™ ํ™˜๊ฒฝ์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ๊ด€๋ จ๋œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์ด๋‹ค. CDI๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ์œ ์—ฐ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ๐Ÿ’ก CDI๋ฅผ ์™œ...

[Spring] ์‹ฑ๊ธ€ํ†ค & ํ”„๋กœํ† ํƒ€์ž… Bean Scope

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋นˆ(Bean)์˜ ์Šค์ฝ”ํ”„(Scope)๋Š” ๋นˆ์ด ์ƒ์„ฑ๋˜๊ณ , ์กด์žฌํ•˜๋ฉฐ, ๊ด€๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ๋‹ค. ๊ฐ ์Šค์ฝ”ํ”„๋Š” ๋นˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ฐ€์šฉ์„ฑ์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์ฃผ์š” ๋นˆ ์Šค์ฝ”ํ”„ (Bean Scope) ์‹ฑ๊ธ€ํ†ค(Singleton) ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋ณธ ์Šค์ฝ”ํ”„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋‹น ๋นˆ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋œ๋‹ค. ...

[Spring] Bean์˜ ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ

์Šคํ”„๋ง(Spring) ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ โ€˜์ฆ‰์‹œ ๋กœ๋”ฉ(Eager Loading)โ€™๊ณผ โ€˜์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)โ€™์œผ๋กœ ๋นˆ(Bean)์„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading) ์ง€์—ฐ ๋กœ๋”ฉ์€ ๋นˆ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ƒ์„ฑ์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋นˆ์— ๋Œ€ํ•œ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ํ•ด๋‹น ๋นˆ์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™” ํ•œ๋‹ค. ์ด ...

[Spring] ์Šคํ”„๋ง ๋นˆ(Bean), ์˜์กด์„ฑ ์ฃผ์ž…(DI)์— ๊ด€ํ•ด์„œ

Bean ์Šคํ”„๋ง ๋นˆ(Spring Beans)์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค. ์ด๋“ค์€ ์Šคํ”„๋ง์˜ IoC(์ œ์–ด์˜ ์—ญ์ „)์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šคํ™” ๋˜๊ณ , ์กฐ๋ฆฝ๋˜๋ฉฐ, ๊ด€๋ฆฌ๋œ๋‹ค. ๋นˆ์€ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์š”์†Œ์ด๋ฉฐ, ์ฃผ๋กœ ์„œ๋น„์Šค, ๋ ˆํฌ์ง€ํ† ๋ฆฌ, ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ด€๋ จ Annotation @Bean ...

[SQL] ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด _ SUBQUERY

์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)๋ž€? SQL๋ฌธ์—์„œ ๋ฉ”์ธ์ฟผ๋ฆฌ ๋‚ด๋ถ€์— ํฌํ•จ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ํ•„ํ„ฐ๋ง, ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๊ด„ํ˜ธ( )๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์œผ๋ฉฐ, SELECT๋ฌธ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. โœ๏ธ ์˜ˆ์ œ ํ…Œ์ด๋ธ” (Grade) Id ...

[SQL] ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๊ธฐ _ GROUP BY

GROUP BY SQL์—์„œ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๊ธฐ ์œ„ํ•ด์„œ๋Š” GROUP BY์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ํŠน์ • ์—ด์˜ ๊ฐ’์— ๋”ฐ๋ผ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„ํ•  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€˜SUM(), AVG(), COUNT()โ€™๋“ฑ์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” ๊ฐ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ง‘๊ณ„ ํ•จ์ˆ˜ ์ง‘๊ณ„ ํ•จ์ˆ˜(Aggregate Function...

[SQL] SELECT๋ฌธ ๊ธฐ์ดˆ

SELECT ๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด์ด๋‹ค. โ€˜SELECTโ€™๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ์—ด(Colum)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SELECT column1, column2, ... FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด; SELECT: ์ด ํ‚ค์›Œ๋“œ ๋‹ค์Œ์—๋Š” ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ์—ด...

[Spring] ์Šคํ”„๋ง ํŠน์ง•_ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ ๊ณผ Bean ๊ทธ๋ฆฌ๊ณ  IoC ์ปจํ…Œ์ด๋„ˆ

Spring Framework์˜ ์ฃผ์š” ํŠน์ง• ์ค‘ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(Loose Coupling)๊ณผ ์Šคํ”„๋ง ๋นˆ(Spring Bean) IoC Container์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. ์Šคํ”„๋ง์—์„œ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(Loose Coupling) ์ด๋ž€? ์Šคํ”„๋ง์€ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์„ ์ด‰์ง„ํ•œ๋‹ค. ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์€ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค....

[HTML] ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ ์ •๋ฆฌ

์˜ค๋Š˜์€ HTML(HyperText Markup Language)์˜ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ ๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์žํ•œ๋‹ค. Semantic Tag 1. <header> ํŽ˜์ด์ง€์˜ ๋จธ๋ฆฌ๊ธ€ ๋ถ€๋ถ„, ๋กœ๊ณ , ๋„ค์ด๊ฒŒ์ด์…˜ ๋งํฌ, ์ œ๋ชฉ ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค. 2. <footer> ํŽ˜์ด์ง€ ๋ฐ”๋‹ฅ๊ธ€ ๋ถ€๋ถ„์œผ๋กœ ์ €์ž ์ •๋ณด, ์ €์ž‘๊ถŒ ์ •๋ณด, ์—ฐ๋ฝ...

[HTML] HTML ์ด๋ž€?

HTML ๊ธฐ์ดˆ HTML์˜ ์—ญ์‚ฌ์™€ ๋ฐœ์ „ HTML(Hypertext Markup Language) ์ด๋ž€ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค. ์ด ์–ธ์–ด๋Š” โ€œTim Berners-Leeโ€๋Š” CERN์—์„œ ์ •๋ณด ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด HTML์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ดˆ๊ธฐ ๋ฒ„์ „์€ ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ๋กœ ํ•˜์ดํผ๋งํฌ์™€ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์„œ ๊ตฌ์กฐ๋งŒ์„ ์ •์˜ํ•˜๋Š”๋ฐ ์ค‘...

ยฉ chanho. Some rights reserved.