๋ชฉ๋ก์ „์ฒด ๊ธ€ (32)

๐Ÿ’ป ๊ฐœ๋ฐœ์ฐจ๊ธฐ ๐Ÿฅ‹ feat.Android

ํƒœ๊ถŒ๋„์žฅ์—์„œ IDE๋กœ: ๋น„์ „๊ณต์ž์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์‹ค ๊ฒฝ๋ ฅ 4๋…„์ด ๋˜์„œ ์จ๋ณด๋Š” ๋น„์ „๊ณต์ž์˜ ๊ฐœ๋ฐœ๊ธฐ"๋น„์ „๊ณต์ž ๊ฐœ๋ฐœ์ž" ์‚ฌ์‹ค ์ด ๋ง์ด ์ข‹๊ฒŒ ๋“ค๋ ธ๋˜ ์ ์€ ์—†๋˜ ๊ฑฐ ๊ฐ™๋‹ค. ๋‚˜๋Š” ๋Œ€ํ•œ๋ฏผ๊ตญ ๋‚จ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ๋‹ค๋Š” ํƒœ๊ถŒ๋„๋ฅผ ์ดˆ๋“ฑํ•™๊ต 4ํ•™๋…„, ๋‚จ๋“ค๋ณด๋‹ค๋Š” ์ข€ ๋Šฆ๊ฒŒ ์‹œ์ž‘ํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋Šฆ๊ฒŒ ์‹œ์ž‘ํ•œ ๋•๋ถ„์ธ์ง€(์‚ฌ์‹ค ์žฌ๋ฐŒ์–ด์„œ) ์ง€๊ธˆ๊นŒ์ง€๋„ ๊ณ„์†ํ•˜๊ณ  ์žˆ๋‹ค. ๋‚˜๋Š” ๋ˆ„๊ตฐ๊ฐ€์™€ ๋งˆ์ฐฐ ํ˜น์€ ์‹ธ์›€์„ ๊ทน๋„๋กœ ์‹ซ์–ดํ•ด ์ž˜ ํ”ผํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ž˜ ๋งž์ถฐ์ฃผ๋Š” ์„ฑ๊ฒฉ์ด๋‹ค.๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ํƒœ๊ถŒ๋„๋Š” ๊ฒฉํˆฌ ์ข…๋ชฉ์ด๋ผ ์ง€์†ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ํƒœ๊ถŒ๋„ ์‹œ๋ฒ” ์ข…๋ชฉ์œผ๋กœ ํ•˜๋ฉด ๊ฒฝ์Ÿ, ๊ฒฉํˆฌ ๋ถ€๋ถ„์ด ๊ฑฐ์˜ ์—†์–ด ์ข‹์€ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ฒŒ๋˜ ์ง€์†ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํƒœ๊ถŒ๋„์žฅ์ด ํƒœ๊ถŒ๋„ ์‹œ๋ฒ”์„ ์ข€ ๋” ์ง‘์ค‘์ ์œผ๋กœ ๊ต์œกํ•˜๋Š” ๊ณณ์ด๋ผ ์†กํŒŒ๊ตฌ ํƒœ๊ถŒ๋„ ์‹œ๋ฒ”๋‹จ์—๋„ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ž…๋‹จํ•˜๊ณ  5๋…„๊ฐ„ ํ™œ๋™ํ•˜๋‹ค ์ฃผ์žฅ๊นŒ์ง€ ํ•˜๊ณ  ๊ณ ๋“ฑํ•™๊ต์™€ ๊ฐ™์ด ์กธ์—…ํ•˜๊ฒŒ ๋๋‹ค...

Stream of thought 2025. 8. 8. 17:25
[Kotlin] Data class vs class ์ฐจ์ด

"๊ฐ’์ด๋ƒ ์ฐธ์กฐ๋ƒ, ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๋กœ๋‹ค." 1. ๋“ค์–ด๊ฐ€๋ฉฐkotlin์„ ์“ฐ๋‹ค๋ณด๋ฉด class๋Š” ๊ธฐ๋ณธ์ด๊ณ  data class๋Š” ๋ชจ๋ธ, Compose์˜ MVI ํŒจํ„ด์˜ ์ƒํƒœ ๋“ฑ์„ ๋‹ด๋Š” ๋‹จ๊ณจ ๋ฉ”๋‰ด์ž…๋‹ˆ๋‹ค.์–ด์ฉ์ง€ ์ €๋Š” data class๋Š” ํŽธํ•˜๊ณ , class๋Š” ๋ญ”๊ฐ€ ์ œ๋Œ€๋กœ ํ•ด์•ผํ•  ๊ฒƒ๋งŒ ๊ฐ™์ด ๋А๊ปด์ง€๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋‹จ์ˆœํžˆ "toString๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋“ค์ด ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค~" ๊ฐ™์€ ์ˆ˜์ค€์—์„œ๋งŒ ์ดํ•ดํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ์งˆ๋ฌธ๊ณผ๊นŠ๊ฒŒ ๋ชจ๋ฅด๋Š” ๊ฑฐ ์•„๋ƒ? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์–ด ๋ธ”๋กœ๊น… ํ•˜๋ฉฐ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.2. ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๋น„๊ตํ•ญ๋ชฉclassdata class๊ธฐ๋ณธ ๋ชฉ์ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ’ ๊ฐ์ฒด(Value Object)์ž๋™ ์ƒ์„ฑ์—†์Œequals(), hashCode(), toString(), copy(), componentN() ๋“ฑ์ƒ์†O (..

Development/Kotlin 2025. 7. 25. 16:25
Coroutine์˜ ํŠน์ง• - ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ(Structured Concurrency)

์“ฐ๊ฒŒ ๋œ ์ด์œ ์ฝ”๋ฃจํ‹ด์„ ์“ฐ๋‹ค ๋ณด๋ฉด scope, Job, cancel, launch, async ๊ฐ™์€ ๊ฐœ๋…๋“ค์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.์ฒ˜์Œ์—” "์Œ ๊ทธ๋ƒฅ ์“ฐ๋‹ˆ ๋˜๋Š”๊ตฐ" ํ•˜๋ฉด์„œ ๋„˜์–ด๊ฐ”๋Š”๋ฐ, ์ ์  ๋ณต์žกํ•œ ๊ตฌ์กฐ์—์„œ ์ž์‹ ์ฝ”๋ฃจํ‹ด์ด ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ถ€๋ชจ๊ฐ€ ์ทจ์†Œ๋˜๋ฉด ๋ชจ๋“  ์ž‘์—…์ด ๋ฉˆ์ถ”๋Š” ๊ฑธ ๊ฒฝํ—˜ํ•˜๋ฉด์„œ ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ(Structured Concurrency)์ด ์™œ ์ค‘์š”ํ•œ์ง€, ์ด๋Ÿฐ ํŠน์„ฑ์„ ์™œ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์ ธ์„œ ์“ฐ๊ฒŒ๋์Šต๋‹ˆ๋‹ค.๊ตฌ์กฐ์  ๋™์‹œ์„ฑ์ด๋ž€?๊ตฌ์กฐ์  ๋™์‹œ์„ฑ์€ ๊ฐ„๋‹จํžˆ ๋งํ•ด์ž‘์—…(์ฝ”๋ฃจํ‹ด)์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ(๋‚˜๋ฌด ๋ฟŒ๋ฆฌ๋ฅผ ์ƒ๊ฐ)๋กœ ์กฐ์ง๋˜์–ด ์žˆ๊ณ , ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.์ฆ‰, ๋ถ€๋ชจ ์ฝ”๋ฃจํ‹ด์ด ์ทจ์†Œ๋˜๋ฉด ์ž์‹ ์ฝ”๋ฃจํ‹ด๋„ ํ•จ๊ป˜ ์ทจ์†Œ๋˜๊ณ ,๋ฐ˜๋Œ€๋กœ ์ž์‹ ์ค‘ ํ•˜๋‚˜์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด ๋ถ€๋ชจ๊ฐ€ ์ทจ์†Œ๋˜๋ฉด ๋‹ค๋ฅธ ์ž์‹๋„ ..

Development/Kotlin 2025. 5. 21. 11:04
Mutex์™€ Semaphore์— ๋Œ€ํ•ด์„œ

์‹œ์ž‘ํ•˜๋ฉด์„œ์‹ ์ž… ๋•Œ ๋ˆ„๊ตฐ๊ฐ€ ์งœ๋†“์€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ผ์ด ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๋•Œ Mutex๋ฅผ ๋ดค์—ˆ๋‹ค.์ฒ˜์Œ ๋ดค์„ ๋• ์ด๊ฒŒ ๋ญ”๊ฐ€... ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ”๋‹ค.๊ทธ๋ž˜์„œ Mutex(๋ฎคํ…์Šค)๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ๋”ฐ๋ผ์˜ค๋Š” Semaphore(์„ธ๋งˆํฌ์–ด).๊ฐ€๋ณ๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ ค๊ณ  ํ•œ๋‹ค.์„ค๋ช…๋จผ์ € Mutex์™€ Semaphore๋Š” ์•„๋ž˜ ์„ค๋ช…์— ๋Œ€ํ•œ ๊ฒƒ ๋•Œ๋ฌธ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค"๋™์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ" ๋‚ด๊ฐ€ ์ดํ•ดํ•œ๋Œ€๋กœ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜์ž๋ฉด, ์ปดํ“จํ„ฐ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ(๊ณต์œ ์ž์›)๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‘์—…์„ ๋‚˜๋ˆ ์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ทผ๋ฐ ์ด๋•Œ A(๊ณต์œ  ์ž์›)์—์„œ ์ž‘์—…ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  B(๊ณต์œ  ์ž์›)์ด ์–ด๋– ํ•œ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์•„์ง A๊ฐ€ ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š..

Development/Kotlin 2025. 5. 20. 16:13
Compose Recomposition - ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ

๊ธ€ ์“ฐ๋Š” ์ด์œ Compose๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฃผ๋กœ UI๋ฅผ ๊ทธ๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ Recomposition์— ๋Œ€ํ•ด์„œ ๋ธ”๋กœ๊น…์„ ํ•˜์ง€ ์•Š์€ ๊ฒŒ์ œ์ผ ์˜ค๋ฅ˜๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ์ž‘์„ฑํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ฐ•์˜๋˜ ๋ฉด์ ‘์ด๋˜ Recomposition์ด ๋ญ๋ƒ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ทธ๋Ÿผ ์ตœ์ ํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์–ด๋–ป๊ฒŒ ํ™•์ธ ํ•ด๋ดค๋ƒ ๋“ฑ๋“ฑ ๋งŽ์€ ์งˆ๋ฌธ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑธ ํ•œ ๋ฒˆ ์ œ๋Œ€๋กœ ์•Œ์•„๋‘๊ณ  ๊ณต๋ถ€๋„ ํ•  ๊ฒธ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.์ฝ”๋ฉ˜ํŠธ ๋ฌดํ•œ ํ™˜์˜์ž…๋‹ˆ๋‹ค. Recomposition ์„ค๋ช…Recomposition์ด๋ž€!์•ฑ์˜ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋œ composable์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ Composition์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์ฒ˜์Œ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๊ณ  ๋‚˜์„œ ์ƒํƒœ(State)๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” UI๊ฐ€ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋‹ค์‹œ ๊ทธ๋ ค์ง„๋‹ค! ๋Š” ๋ง..

Development/Compose 2025. 4. 24. 18:31