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

๐Ÿ‘ฉ‍๐Ÿ’ป TECH16

[TECH] ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ–ฅํ•ด์„œ ๐Ÿ’จ [ํ‹ฐ๋Œ] ํ‹ฐ๋Œ ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ–ฅํ•ด์„œ ๐Ÿ’จ ์•ˆ๋…•ํ•˜์„ธ์š” ํ‹ฐํ”Œ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์ •์ฑ„ํ˜„์ž…๋‹ˆ๋‹ค๐Ÿ˜†๐Ÿ˜†๐Ÿ˜†๐Ÿ˜†๐Ÿ˜† ์ €๋ฒˆ์— ๋ง์”€๋“œ๋ฆฐ ๋””์ž์ธ ํŒจํ„ด์— ์ด์–ด์„œ Clean Architecture์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ด์–ด๊ฐ€๋ ค ํ•ฉ๋‹ˆ๋‹ค! ์™œ ์ด๋ ‡๊ฒŒ ๋‹ค๋“ค ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜๋ ค ํ•˜๋Š” ๊ฑธ๊นŒ์š”?? ์ด ์ด์œ ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์•„์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘ฉ‍๐Ÿ’ป ๊ธฐ๋Šฅ VS ๊ตฌ์กฐ ? ์•ฑ์„ ๋ณผ ๋•Œ ๊ธฐ๋Šฅ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ์•„๋‹ˆ๋ฉด ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ๊ธฐ๋Šฅ์€ ์•ฑ์˜ ๊ฐ€์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค๋Š” ์ ์—์„œ ๊ธฐ๋Šฅ์ด ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๊ณ  ๊ธฐ๋Šฅ๊ณผ ์ถ”๊ฐ€์™€ ์ˆ˜์ •์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ €๋Š” ์›๋ž˜ ๊ธฐ๋ŠฅํŒŒ์˜€์Šต๋‹ˆ๋‹ค... ์ผ๋‹จ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ์•ฑ์˜ ๊ฐ€์น˜๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์ด ์—‰๋ง์ธ๋ฐ .. 2023. 12. 8.
[TECH] ์„œ๋ฒ„ API ์„ฑ๋Šฅ๊ฐœ์„ ๊ธฐ(2) [ํ‹ฐ๋Œ] ํ‹ฐ๋Œ ์„œ๋ฒ„ API ์„ฑ๋Šฅ๊ฐœ์„ ๊ธฐ(2) ์•ˆ๋…•ํ•˜์„ธ์š” ํ‹ฐํ”Œ์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๊น€์œ ์ •์ž…๋‹ˆ๋‹ค :) ์ €๋ฒˆ ๊ธ€์— ์ด์–ด์„œ ์˜ค๋Š˜์€ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ‹ฐ๋Œ ์•ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” N+1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘ฉ‍๐Ÿ’ป ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ 1. ngrinder์„ ๋จผ์ € ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. java -Djava.io.tmpdir=/Users/kimyujeong/.ngrinder/lib -jar ngrinder-controller-3.5.8.war —port=8300 2. ๋ถ€ํ•˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. import static net.grinder.script.Grinder.grinder import static org.junit.Assert.* import static org.hamcrest.Matchers.*.. 2023. 10. 31.
[TECH] ์•ˆ๋“œ๋กœ์ด๋“œ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ณ ํŒจํ„ด(MVC, MVP, MVVM) [ํ‹ฐ๋Œ] ํ‹ฐ๋Œ Android ์˜ ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด ์•ˆ๋…•ํ•˜์„ธ์š” ํ‹ฐํ”Œ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์ •์ฑ„ํ˜„์ž…๋‹ˆ๋‹ค๐Ÿ˜†๐Ÿ˜†๐Ÿ˜†๐Ÿ˜†๐Ÿ˜† ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ณ ํŒจํ„ด์ธ MVC, MVP, MVVM์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ’จ ๐Ÿ‘ฉ‍๐Ÿ’ป ๋””์ž์ธ ํŒจํ„ด ๋””์ž์ธ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด์€ ์ฝ”๋“œ๋ฅผ ๋” ๊ตฌ์กฐ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ฐœ๋ฐœ์ž ๊ฐ„์— ๊ณตํ†ต ์–ธ์–ด์™€ ๊ฐœ๋…์„ ์ œ๊ณตํ•˜์—ฌ ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋””์ž์ธ ํŒจํ„ด ์ค‘์—์„œ๋„ MVC, MVP, MVVM์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด์€ ์ฃผ๋กœ UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋ฉฐ, ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ.. 2023. 10. 19.
[TECH] ๊ฐœ์ธ์ •๋ณด์™€ ๊ฐ€๋ช…์ •๋ณด ๊ทธ๋ฆฌ๊ณ  ์ต๋ช…์ •๋ณด๋ž€? [ํ‹ฐ๋Œ] ๊ฐœ์ธ์ •๋ณด์™€ ๊ฐ€๋ช…์ •๋ณด ๊ทธ๋ฆฌ๊ณ  ์ต๋ช…์ •๋ณด์˜ ๊ด€๊ณ„ ์•ˆ๋…•ํ•˜์„ธ์š” ํ‹ฐํ”Œ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ๊น€์œ ์ •์ž…๋‹ˆ๋‹ค :D ์ œ๋ชฉ์— ๋‚˜์˜ค๋Š” ์„ธ ๋‹จ์–ด๋ฅผ ๋ชจ๋‘ ํ•œ ๋ฒˆ์”ฉ์€ ๋“ค์–ด๋ณด์…จ์„ํ…๋ฐ์š”, ์˜ค๋Š˜์€ ๋น„์Šทํ•œ๋“ฏ ๋‹ค๋ฅธ ๊ฐœ์ธ์ •๋ณด, ๊ฐ€๋ช…์ •๋ณด, ์ต๋ช…์ •๋ณด์˜ ๊ด€๊ณ„์„ฑ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘ฉ‍๐Ÿ’ป๊ฐœ์ธ์ •๋ณด ๋ฌธ์ œ๋‚˜๊ฐ‘๋‹ˆ๋‹ค - ๋‹ค์Œ์˜ ์˜ˆ์‹œ๋“ค ์ค‘ ๊ฐœ์ธ์ •๋ณด๋Š” ํ•œ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ฐพ์•„๋ณด์„ธ์š” ! 1. ํ˜œ์ •์ด์— ๋Œ€ํ•œ ํƒœ์ง„์ด์˜ ์ฃผ๊ด€์ ์ธ ํ‰๊ฐ€ 2. (์ฃผ)์œค์•„์ปดํผ๋‹ˆ ํšŒ์‚ฌ์— ๋Œ€ํ•œ ์ •๋ณด 3. ์‚ฌ๋งํ•œ ๊ณ ์ธ์— ๋Œ€ํ•œ ์ •๋ณด ์ •๋‹ต์€ ๋ฐ”๋กœ 1๋ฒˆ - 'ํ˜œ์ •์ด์— ๋Œ€ํ•œ ํƒœ์ง„์ด์˜ ์ฃผ๊ด€์ ์ธ ํ‰๊ฐ€'์ž…๋‹ˆ๋‹ค. ํƒ€์ธ์— ๋Œ€ํ•œ ์ฃผ๊ด€์ ์ธ ํ‰๊ฐ€๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฐœ์ธ์ •๋ณด์ผ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ •๋‹ต์€ ๊ฐœ์ธ์ •๋ณด์˜ ์ •์˜์— ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๋ฒ•์€ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. '์‚ด์•„ ์žˆ๋Š” ๊ฐœ์ธ์— ๊ด€ํ•œ ์ •๋ณด๋กœ ์„ฑ๋ช…, ์ฃผ๋ฏผ๋“ฑ.. 2023. 10. 11.