| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Compose
- ์๋๋ก์ด๋ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- structured concurrency
- binding
- ์๋๋ก์ด๋
- previewparameterprovider
- ์ฃผ์ฐจ๋ณ ๊ณต๋ถ ๋ด์ฉ
- ์ญํด
- ๊ฐ๋ฐ์
- android
- ์ฝ์ธ
- Kotlin
- ์ฝ๋ฃจํด
- android Koin
- Coroutine
- databinding
- textstyle
- ๊ฐ๋ฐ์ฐจ๊ธฐ
- ์ญํ์ ๋๊ฐ์ฐจ๊ธฐ
- ๋ฐ์ธ๋ฉ
- ์์กด์ฑ
- 2์ฝ
- DI
- ๊ตฌ์กฐ์ ๋์์ฑ
- koin
- ์์กด์ฑ ์ฃผ์
- BaseObservable
- ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- 1์ฝ
- data
- Today
- Total
๋ชฉ๋กDevelopment/Kotlin (5)
๐ป ๊ฐ๋ฐ์ฐจ๊ธฐ ๐ฅ feat.Android
"๊ฐ์ด๋ ์ฐธ์กฐ๋, ๊ทธ๊ฒ์ด ๋ฌธ์ ๋ก๋ค." 1. ๋ค์ด๊ฐ๋ฉฐkotlin์ ์ฐ๋ค๋ณด๋ฉด class๋ ๊ธฐ๋ณธ์ด๊ณ data class๋ ๋ชจ๋ธ, Compose์ MVI ํจํด์ ์ํ ๋ฑ์ ๋ด๋ ๋จ๊ณจ ๋ฉ๋ด์ ๋๋ค.์ด์ฉ์ง ์ ๋ data class๋ ํธํ๊ณ , class๋ ๋ญ๊ฐ ์ ๋๋ก ํด์ผํ ๊ฒ๋ง ๊ฐ์ด ๋๊ปด์ง๊ธฐ๋ ํฉ๋๋ค.ํ์ง๋ง ๋์ ์ฐจ์ด๋ฅผ ๋จ์ํ "toString๊ณผ ๊ฐ์ ํจ์๋ค์ด ์๋ ์์ฑ๋๋ค~" ๊ฐ์ ์์ค์์๋ง ์ดํดํ๋ฉด ์ถ๊ฐ์ ์ธ ์ง๋ฌธ๊ณผ๊น๊ฒ ๋ชจ๋ฅด๋ ๊ฑฐ ์๋? ๋ผ๊ณ ์๊ฐํ ์ ์์ด ๋ธ๋ก๊น ํ๋ฉฐ ์ ๋๋ก ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.2. ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋น๊ตํญ๋ชฉclassdata class๊ธฐ๋ณธ ๋ชฉ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ฒด(Value Object)์๋ ์์ฑ์์equals(), hashCode(), toString(), copy(), componentN() ๋ฑ์์O (..
์ฐ๊ฒ ๋ ์ด์ ์ฝ๋ฃจํด์ ์ฐ๋ค ๋ณด๋ฉด scope, Job, cancel, launch, async ๊ฐ์ ๊ฐ๋ ๋ค์ ์์ฐ์ค๋ฝ๊ฒ ๋ง๋๊ฒ ๋ฉ๋๋ค.์ฒ์์ "์ ๊ทธ๋ฅ ์ฐ๋ ๋๋๊ตฐ" ํ๋ฉด์ ๋์ด๊ฐ๋๋ฐ, ์ ์ ๋ณต์กํ ๊ตฌ์กฐ์์ ์์ ์ฝ๋ฃจํด์ด ์ ๋๋ก ์ ๋ฆฌ๋์ง ์๊ฑฐ๋ ๋ถ๋ชจ๊ฐ ์ทจ์๋๋ฉด ๋ชจ๋ ์์ ์ด ๋ฉ์ถ๋ ๊ฑธ ๊ฒฝํํ๋ฉด์ ๊ตฌ์กฐ์ ๋์์ฑ(Structured Concurrency)์ด ์ ์ค์ํ์ง, ์ด๋ฐ ํน์ฑ์ ์ ๊ฐ๊ณ ์๋์ง ๊ถ๊ธํด์ ธ์ ์ฐ๊ฒ๋์ต๋๋ค.๊ตฌ์กฐ์ ๋์์ฑ์ด๋?๊ตฌ์กฐ์ ๋์์ฑ์ ๊ฐ๋จํ ๋งํด์์ (์ฝ๋ฃจํด)์ด ํธ๋ฆฌ ๊ตฌ์กฐ(๋๋ฌด ๋ฟ๋ฆฌ๋ฅผ ์๊ฐ)๋ก ์กฐ์ง๋์ด ์๊ณ , ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ํตํด ์๋ช ์ฃผ๊ธฐ๋ฅผ ํจ๊ป ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.์ฆ, ๋ถ๋ชจ ์ฝ๋ฃจํด์ด ์ทจ์๋๋ฉด ์์ ์ฝ๋ฃจํด๋ ํจ๊ป ์ทจ์๋๊ณ ,๋ฐ๋๋ก ์์ ์ค ํ๋์์ ์์ธ๊ฐ ๋ฐ์ํด ๋ถ๋ชจ๊ฐ ์ทจ์๋๋ฉด ๋ค๋ฅธ ์์๋ ..
์์ํ๋ฉด์์ ์ ๋ ๋๊ตฐ๊ฐ ์ง๋์ ์ฝ๋๋ฅผ ์์ ํ๋ ์ผ์ด ์์๋๋ฐ ๊ทธ๋ Mutex๋ฅผ ๋ดค์๋ค.์ฒ์ ๋ดค์ ๋ ์ด๊ฒ ๋ญ๊ฐ... ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ๋์ด๊ฐ๋ค.๊ทธ๋์ Mutex(๋ฎคํ ์ค)๋ฅผ ๊ฒ์ํด๋ณด๋ ๋ฐ๋ผ์ค๋ Semaphore(์ธ๋งํฌ์ด).๊ฐ๋ณ๊ฒ ๊ณต๋ถํด๋ณด๋ ์๊ฐ์ ๊ฐ์ง๋ ค๊ณ ํ๋ค.์ค๋ช ๋จผ์ Mutex์ Semaphore๋ ์๋ ์ค๋ช ์ ๋ํ ๊ฒ ๋๋ฌธ์ ์กด์ฌํฉ๋๋ค"๋์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ณต์ ์์์ ๋ํ ์ ๊ทผ์ ์ ํํ์ฌ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ" ๋ด๊ฐ ์ดํดํ๋๋ก ์ค๋ช ์ ์ถ๊ฐํ์๋ฉด, ์ปดํจํฐ๋ ํ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ์ค๋ ๋(๊ณต์ ์์)๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ๋๋ ์ ์งํํ ์ ์์ต๋๋ค.๊ทผ๋ฐ ์ด๋ A(๊ณต์ ์์)์์ ์์ ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ B(๊ณต์ ์์)์ด ์ด๋ ํ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ ์ํฉ์์ ์์ง A๊ฐ ์์ ์ด ๋๋์ง ์..
์์ฆ ์ฑ๋ค์ Listํ์์ผ๋ก ๋ฐ์ดํฐ๋ค์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ์ธ์คํ, ์ ํ๋ธ, ํ์ด์ค๋ถ, ๋ฐฐ๋ฌ์ ๋ฏผ์กฑ ๋ฑ๋ฑ ์ ๊ทธ๋ฐ ์ฑ์ ์ฐพ๊ธฐ๊ฐ ํ๋ค๋ค. ๊ทธ๋ฌ๋ฉด Listํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ ๊ทธ๋ฅ ๋ฟ๋ ค์ฃผ๋ฉด ์๊ด ์์ง๋ง ์น์ ํ์ง ์์ data๋ค์ด ๊ฐํน ์๋๋ฐ ์ด ๋ฐ์ดํฐ๋ค์ sortingํ๊ฑฐ๋ ์ ๊ฑฐ ํน์ ๋ณํฉํด์ผํ๋ ์ํฉ์ด ์๊ธด๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ํ์๋ค์ด ์ฌ๋ ธ๋ ๊ฒ์๋ฌผ๋ค์ ํ์๋ณ๋ก ๋ฌถ์ด์ ๋ณด์ฌ์ค์ผํ๋ ์ํฉ์ด ์๋๋ฐ ์๋ฒ์์ ๊ทธ๋ฅ ๊ฒ์๊ธ๋ง ์ซ~ ๋ด๋ ค์ฃผ๊ณ ์ฑ์์ ํด์ฃผ์ธ์~ ํ๋ฉด ๋ณดํต for ๋ฌธ์ ๋๋ ค์ ํ์ ์์ด๋๋ ์ผ์นํ๋ฉด ๋ฆฌ์คํธ์ ๋ค์ ๋ด๊ณ ์ฐ๋ผ์ฐ๋ผ~ ์๋ฌดํผ! ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌ, ๊ด๋ฆฌํ๋๋ฐ ๊ต์ฅํ ๊ท์ฐฎ๋ค. ๊ทธ๋ฌ๋ฉด ๋์์ด ๋ญ๊ฐ ์๋? → Kotlin์ Collections ํจ์๋ฅผ ์ธ ๊ฒ์ด๋ค. ๊ทธ๊ฒ ๋ญ๋ฐ? → Collections์..
์ฝํ๋ฆฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ํ ๊ธฐ๋ฅ ๊ณผ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ผ๋ก ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค. ๊ทธ์ค์์๋ apply, with, let, also, run์ ๊ฐ์ ๋ฒ์ ์ง์ ํจ์๋ค์ด ์์ต๋๋ค. ๊ฐ ๊ธฐ๋ฅ๋ค์ด ์ผํ ๋ณด๋ฉด ๋น์ทํด์ ํท๊ฐ๋ฆด ์ ์๊ณ ์ฌ์ฉํ๋ฉด ๋ณด๋ค ๊น๋ํ๊ฒ ์ฝ๋๋ฅผ ๊ด๋ฆฌ ํ ์ ์์ต๋๋ค. ๋ฒ์ ์ง์ ํจ์ ๋ ํน์ ๊ฐ์ฒด์ ๋ํ ์์ ์ ๋ธ๋ก ์์ ๋ฃ์ด ์คํํ ์ ์๋๋ก ํ๋ ํจ์์ ๋๋ค. ๋ธ๋ก์ ํน์ ๊ฐ์ฒด์ ๋ํด ํ ์์ ์ ๋ฒ์๊ฐ ๋๋ฉฐ, ๋ฐ๋ผ์ ๋ฒ์ ์ง์ ํจ์๋ผ ๋ถ๋ฅธ๋ค. ๋ค๋ฅธ ๋ง๋ก ์์ ๊ฐ์ฒด ์ง์ ๋๋ค(ํจ์) ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. → ์์ ๊ฐ์ฒด๋ฅผ ๋ช ์ํ์ง ์๊ฑฐ๋ it์ ํธ์ถํ๋ ๊ฒ๋ง์ผ๋ก ๋๋ค ์์์ ์์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ๋ธ๋ก(block) ..