item 45. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ
์์is-a ๊ด๊ณ์ ๊ฐ์ฒด ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ค๊ณis-a(is a relationship, inheritance)๋ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ๊ณผ ๊ตฌ์ฒด์ ์ธ ๊ฐ๋ ์ ๊ด๊ณex. ์ฌ๋์ ๋๋ฌผ์ด๋ค. ์๋ ๋๋ฌผ์ด๋ค.์ผ๋ฐ ํด๋์ค๋ฅผ ๊ตฌ์ฒดํ ํ๋ ์ํฉ์์ ์์์ ์ฌ์ฉhas-a(has a re
์ฝํ๋ฆฐ์ ์ฝ๋๋ ์์ ํจ์ํ ์คํ์ผ๋ก ์์ฑํ ์๋ ์์ง๋ง, ์๋ฐ์ฒ๋ผ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์คํ์ผ๋ก๋ ์์ฑํ ์ ์๋ค.OOP๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๋ฏ๋ก, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ์ํด์ผ ํ๋ค.๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ง ๋ค๋ฅธ ํน์ง์ด ์๊ธด๋ค. ๋ฐ๋ผ์
https://developer.android.com/topic/modularization
์ถ์ํ(Abstraction) : ๋ณตํฉํ ์๋ฃ, ๋ชจ๋ ์์คํ ๋ฑ์ผ๋ก๋ถํฐ ํต์ฌ์ ์ธ ๊ฐ๋ ๋๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๋ ค ๋ด๋ ๊ฒ
์ฝํ๋ฆฐ์ ๊ฐ๊ฒฐ์ฑ์ ๋ชฉํ๋ก ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋๋ผ, ๊ฐ๋ ์ฑ(readability)์ ์ข๊ฒ ํ๋ ๋ฐ ๋ชฉํ๋ฅผ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ๋ 1๋ถ์ด ๊ฑธ๋ฆฌ์ง๋ง, ์ด๋ฅผ ์ฝ๋ ๋ฐ๋ 10๋ถ์ด ๊ฑธ๋ฆฐ๋ค.ํ๋ก๊ทธ๋๋ฐ์ ์ฐ๊ธฐ๋ณด๋ค ์ฝ๊ธฐ๊ฐ ์ค์ํ๋ค.์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ์ค
์ฝํ๋ฆฐ์ ์ฌ์ฉํ๋ ์ด์ ? : ์์ ์ฑ(safety)kotlin์ ๋ค์ํ ์ค๊ณ ์ง์์ ํตํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์ค์ฌ์ค๋ค.kotlin์ด ์์ ์ฑ์ ์ํด ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ์ดํด๋ณผ ์ ์๋ค.๊ฐ๋ณ์ฑ ์ ํ์ ํ์์ฑstatus ๋ณ๊ฒฝ์ด ๋ง์์ง๋ฉด ํ๋ก๊ทธ๋จ ์ดํด์ ๋๋ฒ๊น ํ๋ค๋ค
Channel๋ก ๊ฐ์ ์ ์ก/์์ ํ๋ ค๋ฉด ๊ฐ์ CoroutineScope๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.ํ์ง๋ง, Channel์ Flow๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ๋ค๋ฉด ๋ค๋ฅธ CoroutineScope๋ฅผ ์ฌ์ฉํด๋ ์ ๋์ํ๋ค.Flow๋ก ๋ณํํ์ง ์๊ณ Channel๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ?
sharedflow๋ ๋ฐ๋์ง ์๋ฐ๋์ง ์๊ด์์ด ํ๋ ค๋ณด๋ด๋ฉด ๋์channel์ blocking queue์ฒ๋ผ ๋์ํ์ฌ ๋ฐฉ์ถ๋์ง ์๊ณ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๊ฐ ์ค๋น๋๋ฉด ๋ฐฉ์ถํ๊ธฐ์ ์ ๋์ด๋ฒ์ธ)stateflow๋ ์ด๋ฏธ ๋ฐฉ์ถ๋์์ง๋ง ๋ค์ ๊ฐ์ ์๊ตฌํ์ฌ ์ต์ ๊ฐ์ ๋ณด์ฌ์ฃผ๊ธฐ์ ๋ทฐ์์ ๋ณด์์ฝ
Fragment LiveData์ viewLifecycleOwner Fragment์์ LiveData observe ์ ๋๊ธฐ๋ ์ธ์์ ๋ฐ๋ผ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ํฉ 2๊ฐ์ง LifecycleOwner ์ธ์์ requireActivity()๋ฅผ ๋๊ธฐ๋ ์ํฉ โ Exc
๊นํ๋ธ์ ์๋๋ฅผ ์ฌ์ ์ ์๋ ๊ธฐ์ค GitHub ๊ณ์ ๊ณผ commit ์ด๋ฉ์ผ ๊ณ์ ์ด ๋์ผํด์ผ ํ๋ค. Forkํ repository๊ฐ ์๋ ๋ด repository์์ commitํด์ผ ํ๋ค. ์ด๋ฌํ ๊ธฐ์ค ๋๋ฌธ์ ์๋์ ๊ฐ์ ์ผ์ด์ค์์๋ ์๋๊ฐ ์ฌ๊ธฐ์ง ์๋๋ค. Organiz
Received status code 502 from server: Bad Gateway Disable Gradle 'offline
imports and exports๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ, ๋ด๋ณด๋ด๊ธฐnode_modules ๋ด์์ ๋ชจ๋์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค.block-scoped declarationslet, constconstants with mutable values -> reassigning(x),
react-native run-android jdk ๊ฒฝ๋ก ์ง์
๊น ํ์๋ผ์ธ์ ์๋ ์ปค๋ฐ ๊ธฐ๋ก์ด ์ฌ๋ผ์ก์ ๋
์๋ผ์คํฑ์์น ์ค๋ฌด ๊ฐ์ด๋ ์ฑ ๋ด์ฉ ์ ๋ฆฌ
์๋๋ก์ด๋ ๋ฒ์ 4.1๊น์ง๋ gradle ํญ์์ task๊ฐ ๋ฐ๋ก ์กํ์ง๋ง4.2 ๋ถํฐ๋ task๋ฅผ ์ก์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๊ฒฌํ๋ค.run/debug configuration์์ ์ง์ task๋ฅผ ์์ฑํด์ ์ก์์ฃผ์ด SHA1์ ์ฐพ์๋ค.
์๋๋ก์ด๋ ์คํ๋์ค์์ JDK1_8 ์ ์กํ์๋ ์ํฉJDK8 ์ฌ์ค์น์๋๋ก์ด๋ ์คํ๋์ค์์ JDK๊ฒฝ๋ก ์ค์นํ ๊ฒฝ๋ก๋ก ๋ค์ ์ฌ์ค์ ํ์ฌ ํด๊ฒฐ (mac os ๊ธฐ์ค /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Hom