Loading...
2022. 6. 22. 21:33

[Programming] SOLID - ๊ฐ์ฒด ์ง€ํ–ฅ 5๋Œ€ ์„ค๊ณ„ ์›์น™

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํŠน์ • ์–ธ์–ด์— ๋Œ€ํ•œ ํ•™์Šต์ด ์•„๋‹Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํ‚ฌ์— ๋Œ€ํ•ด ์ ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋…์ž ์—ฌ๋Ÿฌ๋ถ„๋“ค ์ค‘ Java, C#, Python๊ณผ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ณ  ๊ณ„์‹ ๋‹ค๋ฉด OOP(๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‰ฝ๊ฒŒ ์ ‘ํ•ด๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. OOP (Object Oriented Programming) OOP๋Š” ์šฐ๋ฆฌ ๋ง๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ‚ค์—์„œ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ ko.wikipedia.org ์‰ฝ๊ฒŒ ์–˜๊ธฐํ•˜์ž๋ฉด ์šฐ๋ฆฌ๊ฐ€ C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ๋˜ ๋ช…๋ น ํ˜•์‹์˜ ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ๋Š” ๋‹ฌ๋ฆฌ OOP๋Š” ๊ฐ์ฒด๋ผ๋Š” ๋…๋ฆฝ๋œ ๋‹จ์œ„๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜•์„ฑ์‹œํ‚ค๋Š” ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ '์ ˆ..

2022. 1. 8. 22:55

[Spring Data] Spring Data JDBC๋ฅผ ์ด์šฉํ•œ ๋‹ค์–‘ํ•œ ID ์ „๋žต๊ณผ ์ˆ˜๋™ ID ์ „๋žต ๊ตฌํ˜„์‹œ ์ฃผ์˜์ 

์ตœ๊ทผ Kotlin + Spring Boot + Spring Data JDBC ์กฐํ•ฉ์œผ๋กœ ํ•ด๋‹น ๊ธฐ์ˆ  ์Šคํƒ์„ ์ด์šฉํ•ด DDD ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•ด ๋ณต์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์—…์—์„œ Python์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ Spring์— ๋Œ€ํ•œ ์ง€์‹์ด ๋งŽ์ด ๋–จ์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋Š”๋ฐ์š”. ํ‰์†Œ Spring Data JPA๋ผ๋Š” ORM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ, DDD๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋ฉด์„œ Command์™€ Query ๋ถ„๋ฆฌ์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ซ๊ณ  ORM์ด ์•„๋‹Œ ๊ฐ€๊ธ‰์  JDBC์™€ ๊ฐ™์€ DB API๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žฆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ JPA๊ฐ€ ์•„๋‹Œ Spring Data JDBC๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ Row์— ํ•ด๋‹นํ•˜๋Š” ๊ณ ์œ ๊ฐ’์ธ ID๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ..

2019. 12. 29. 13:47

[Spring Cloud] - 3. API ์„œ๋ฒ„๋กœ ์„ค์ • ๊ฐ’ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” Configuration Server๋ฅผ ์„ค์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋กœ์ปฌ์˜ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์„ค์ • ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๊ณ , ๋‘ ๋ฒˆ์จฐ ๋ฐฉ๋ฒ•์€ Github ๋“ฑ์˜ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋ฒ„๊ฐ€ ์ œ๋Œ€๋กœ ๊ตฌ์ถ•๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ REST API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , ์–ด๋–ป๊ฒŒ API ์„œ๋ฒ„๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฐ’์„ ๋ฐ›๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋งˆ ๊ถ๊ธˆํ•ด ํ•˜์…จ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ง์ ‘ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ์„œ๋ฒ„์— ๋งž๋Š” ์„ค์ •๊ฐ’์„ ๋งŒ๋“ค์–ด, ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € API ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜์ฃ . ์ƒˆ๋กœ์šด Spring Boot..

[GP] Anko๋ฅผ ์ด์šฉํ•œ Android App Layout ์ž‘์„ฑ

์ด ๊ธ€์€ N.K Dev Lab์—์„œ ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ Kotlin ์–ธ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ์ด๋ฅผ ์จ๋ณด๋ฉด์„œ ๋Š๋ผ๋Š” ๋ฐ”๋Š” ํ™•์‹คํžˆ Java๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ •์„ฑ ์žˆ๋Š” ์–ธ์–ด๋ผ๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋Š๋‚๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ œ๊ฐ€ ์ •๋ง๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋ถˆํŽธํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์€ ๋ฐ”๋กœ findViewbyId ์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ฒƒ์€ XML์— ๋ ˆ์ด์•„์›ƒ์„ ์ž‘์„ฑํ•˜์—ฌ ๋ ˆ๋ฆฌ์•„์›ƒ์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ id ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ, ์‹ค์ œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ Resource ๋ถ€๋ถ„์— ๊ณจ ๋•Œ๋ฆฌ๋Š” ๋ฉด์ด ์—†์ง€ ์•Š์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ์ปดํŒŒ์ผ์ด ์•ˆ๋˜๊ฑฐ๋‚˜ ๊ฐ‘์ž๊ธฐ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž˜ ๋˜๋Š” ๋นŒ๋“œ๊ฐ€ ์˜ฎ๊ฒจ ํƒ€๋ฉด ์•ˆ๋˜๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ด๊ดดํ•œ ํ˜„์ƒ์„ ๋งŽ์ด ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ €๋Š” findViewById๊ฐ€ onCr..

[GP] Android์—์„œ MQTT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด ๊ธ€์€ ์ €์˜ Github Page์˜ ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ด์•„์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”. ์š”์ฆ˜ ์ทจ์—… ์‹œ์ฆŒ์ด ํ•œ์ฐฝ์ด๋‹ค๋ณด๋‹ˆ, ๋ธ”๋กœ๊ทธ์— ๊ธ€์“ฐ๋Š”๊ฒŒ ๋˜ ๊ฒŒ์„๋Ÿฌ์ง€๊ฒŒ ๋˜์—ˆ๋„ค์š”. ใ…œใ…œ ์˜ค๋Š˜์€ ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•œ MQTT ๋ฉ”์‹œ์ง€ ๊ตํ™˜ - ์•ˆ๋“œ๋กœ์ด๋“œ ํŽธ์„ ํฌ์ŠคํŠธํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํ˜น์‹œ ์•„์ง MQTT์— ๋Œ€ํ•œ ๊ฐœ๋…์ด๋‚˜, Broker๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ์‹  ๋ถ„๋“ค์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด, ์ด์ „ ๊ธ€์„ ๋ฐ˜๋“œ์‹œ ๊ตฌ๋…ํ•ด์ฃผ์‹  ํ›„, ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์•„์ง MQTT์— ์ž˜ ๋ชจ๋ฅด์‹ ๋‹ค๊ตฌ์š”? ์•„๋ž˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์…”์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. MQTT์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ Eclipse Paho MQTT ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MQTT ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ์ €ํฌ๋Š” Java์™€..