Development/Android
Databinding์ ์ฌ์ฉ ํ๊ณ ์์ด! ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐ๋์ง ์๊ฒ ์ด. ๊ทผ๋ฐ ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ค์ ์ด๋ป๊ฒ ๊ฐ๊ณตํด์ ๋ฐ๋ก ์จ? ์๊ฐ์ด๋ ํ์ ๋ญ ํ๋ฌผ๋ฉฐ ์ฌ์ฉ์ ์ฑ๋ณ์ด๋ผ๋ ๊ฐ๊ณตํด์ ๋ณด์ฌ์ค์ผํ๋๊ฑฐ ์๋๊ฐ? ๊ทธ๋ผ ๋ ๋ค๋ฅธ ๊ณณ์์ ์ฃผ์
ํด์ค์ผํ๋๊ฑฐ ์๋์ผ? ๋ผ๊ณ ์๊ฐํ์ง๋ง… ์~์ฃผ ์ข์ ๊ธฐ๋ฅ์ด ์๋ค.(์ด๋ฌ๋ฉด ๋ท๋ง์ด ๊ถ๊ธํด์ ๋ฒ์ด๋๊ธฐ ํ๋ค๋ค ๐คฆโ๏ธ) 1. ์ผ๋จ ์ฌ์ฉํ Data class๋ฅผ ๋ง๋ ๋ค. data class Memo( // @SerializedName("id") object ์ค ํด๋น ๊ฐ์ด null ๊ฒฝ์ฐ // -> json ์ผ๋ก ๋ง๋ค ํ๋๋ฅผ ์๋ ์๋ต @SerializedName("id") @Expose val id: Int, โ @SerializedName("title") @Expose val me..
Development/Android
์ด๋ฒ์ RecyclerView ViewPager image ๋ค์ ์ด๋ป๊ฒ ํ๋ฉด Databinding์ ์ฌ์ฉํ ์ ์๋์ง ์ ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ณดํต RecyclerView๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Adapter ๋ฐ๋ณต๋ Layout RecyclerView๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์์ ์ ์ธ ๋ค์ด ํ์ํ๋ฐ Databinding์ ์ด์ฉํ๋ฉด ์ฝ๊ฐ์ฉ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. (๊ธฐ๋ณธ์ ์ธ RecyclerView๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ํ์ ์งํํ๊ฒ ์ต๋๋ค ๐โ๏ธ) 1. ๊ฐ์ฅ ๋จผ์ ๋ฐ๋ณตํ์ฌ ์ฌ์ฉํ Layout์ ๋ง๋ค์ด์ค๋๋ค. โ โ โ โ โ โ โ ์์ ๊ฐ์ด ๋ฐ์ธ๋ฉ์ผ๋ก ๋ฌถ์ด์ฃผ๊ณ ์ฌ์ฉํ item(data class) ๋ชจ๋ธ์ variable๋ก ์ ์ธ ํด์ค๋๋ค. ์ ์ธํ item์ผ๋ก ๊ฐ View์ ๋ฃ์ด์ค๋๋ค. (์นด์นด์ค ์ฃผ์์ฐพ๊ธฐ api๋ฅผ ์ฌ์ฉํจ ๐บ๐ผ) 2. A..
Development/Android
Databinding์ด๋!(๋ฐ์ดํฐ ๋ฌถ๊ธฐ?) → ์๋๋ก์ด๋์์์ data binding ์ด๋, Android Archictecture Components ์ ํ ๋ถ๋ถ์ผ๋ก์ Ui ์์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ์ง ์๊ณ , ์ ์ธ์ ํ์์ผ๋ก ๊ฒฐํฉํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํ๋ค. ์ฝ๊ฒ ์ค๋ช
ํ๋ฉด MVVMํจํด์ ์ฌ์ฉํ๋ฉด์ Activity๋ Fragment์์ ๋ทฐ ๊ด๋ จ๋ ์ฝ๋๋ค์ ์ฌ์ฉํ์ง ์๊ณ xml ์ฝ๋์ ์ง์ด ๋ฃ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๊ฒ๋ค์ ViewModel์์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ๋ ๋ ๋ ํผ๋ถ์ ์๋ฟ๊ฒ ๋งํ์๋ฉด Activity๋ Fragment์์ ๋ง์ ์ฝ๋๋ค์ ์ ์ง ์๊ฒ ํจ์ผ๋ก์จ ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณํ์ํค๋ ์ฝ๋๋ ViewModel์์ ๊ด๋ฆฌํด์ Activity & Fragment ๋ค์ ์ฝ๋๋ ๋์ฑ ..
Development/Android
์ด๋ฒ์ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ์์กด์ฑ ์ฃผ์
(DI)๋ฅผ ์ ์ฉ์์ผ๋ณด๋ฉด์ ์ฝ์ง์ ์ฐ์์์ ๋๊ผ๋ ์ ๊ณผ ํ์ํ ๋ถ๋ถ์ ์์ฑํ ์์ ์
๋๋ค. 1. Fragment๋ผ๋ฆฌ ViewModel์ ๊ณต์ ํ๊ณ ์ถ์ ๋! class JoinEntrepreneurFragment: Fragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } โ class JoinMainFragment : SoftKeyboardImplementFragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } ์์ ๊ฐ์ ํ์์ผ๋ก sharedViewModel() ๋ฅผ ์ ์ด์ค๋ค๋ฉด Fragment๊ฐ ..
Development/Android
์์กด์ฑ ์ฃผ์
์ด๋ผ.. ๋๋ฌด๋๋ ์ต์ํ์ง ์์ ๋ฌธ์ฅ์ด๋ค. ๋จ์๊ฒ ์์กดํ์ง๋ง๊ณ ์ฃผ์ฒด์ ์ผ๋ก ์ด์ ๋ผ๋ ๋ง์ ์ฌ์ฉํ ๋๋ง ์ผ๋ ๋จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ์ด์ํ๊ณ ๋จ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค. ์์กด์ฑ ์ฃผ์
(์์กด๊ด๊ณ ์ฃผ์
)! Dependency Injection(DI) ๋ํ๋์ ์ธ์ ์
, ์์กด์ฑ์ฃผ์
์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๊ณ ์ถ์๋ฐ ๋ญ๋ผํด์ผ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. → ํ์ค์ ์ ์ ํ ์ ์๊ณ , ์ ์๋ ํ์ค์ ๋ฐํ์ผ๋ก ๊ฐ์ ์ค๊ณ๋ฅผ ํ๊ฒ ํ์ฌ์ค๋๋ค.(์ญ์๋ ํ ๋ฒ์ ์ดํด๊ฐ ๋์ง ์๋๋ค.) ์ข ๋ ๊ฐ๊น๊ฒ ์ ์ํ๋ค๋ฉด, ”์์กด๋์ B๊ฐ ๋ณํ๋ฉด, ๊ทธ๊ฒ์ด A์ ์ํฅ์ ๋ฏธ์น๋ค .” - ์ด์ผ๋ฏผ, ํ ๋น์ ์คํ๋ง 3.1, ์์ด์ฝ(2012), p113 B๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ํ์์ด ๋ฐ๋๋ฉด A์ ์ํฅ์ด ๊ฐ๋ค. (์ฌ์ง : Jacob) ๐ฅ ํ์๋ฅผ ๊ฐ๋ฅด์น๋ ํ๊ถ๋..
Development/Android
์ด๋ฒ์ FCM์ด ์ค๋ฉด ํน์ ํ์ด์ง๋ฅผ ๋ณด๊ณ ์๋ค๋ฉด ๊ทธ ํ์ด์ง์์ refresh๋ฅผ ํด์ผํ๋ ์ผ์ด ์๊ฒผ๋ค. ๋ฐ๋ก ๊ตฌํํ๋ ค๊ณ ํ๋ค๋ณด๋ Listener๋ฅผ ๋ฌ์์ผํ๋ ํ๋ ์๊ฐ์ ํ๋ฉด ๋ญ๊ฐ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋ง์ด ์๊ธธ ๊ฒ ๊ฐ๊ณ ๊ท์ฐฎ์ ์์
์ด ๋๊ฒ ๋ค ์ถ์ด์ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ Event Bus ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ผ๋ ์ถ์ฒ ๊ธ์ ๋ณด๊ฒ ๋๋ค. Event Bus๊ฐ ๋ญ์ผ? ๐๋ฒ์ค์์ ๐์ด๋ฒคํธ๐ ํ๋? (์ฃ์กํฉ๋๋ค) ๋ผ๋ ์๊ฐ์ ๊ด๋ จ ๊ธ์ ์ฐพ์๋ณด๋ ๋ฒ์ค ๋คํธ์ํฌ์ ๋์ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ํ๋์ ์ด๋ฒคํธ๋ฅผ ๋์ผ ์ฑ๋์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋
ธ๋(Subscriber)๋ค์๊ฒ ๋ณด๋ด๋ ๋ฐฉ์ ์ด๋ผ๋๋ฐ ๊ฐ๋จํ๊ฒ ๋์ ์ฉ์ด๋ก ์ค๋ช
ํ์๋ฉด A ์ฑ๋์ ๊ตฌ๋
ํ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์๋ฆผ(evnet)์ ๋ณด๋ธ๋ค. Github์ ํด๋น ์ด๋ฏธ์ง๋ ๊ฐ์ด ์๋ค. (์ฌ์ค ์ฒ์..
Development/Kotlin
์ฝํ๋ฆฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ํ ๊ธฐ๋ฅ ๊ณผ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ผ๋ก ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค. ๊ทธ์ค์์๋ apply, with, let, also, run์ ๊ฐ์ ๋ฒ์ ์ง์ ํจ์๋ค์ด ์์ต๋๋ค. ๊ฐ ๊ธฐ๋ฅ๋ค์ด ์ผํ ๋ณด๋ฉด ๋น์ทํด์ ํท๊ฐ๋ฆด ์ ์๊ณ ์ฌ์ฉํ๋ฉด ๋ณด๋ค ๊น๋ํ๊ฒ ์ฝ๋๋ฅผ ๊ด๋ฆฌ ํ ์ ์์ต๋๋ค. ๋ฒ์ ์ง์ ํจ์ ๋ ํน์ ๊ฐ์ฒด์ ๋ํ ์์
์ ๋ธ๋ก ์์ ๋ฃ์ด ์คํํ ์ ์๋๋ก ํ๋ ํจ์์
๋๋ค. ๋ธ๋ก์ ํน์ ๊ฐ์ฒด์ ๋ํด ํ ์์
์ ๋ฒ์๊ฐ ๋๋ฉฐ, ๋ฐ๋ผ์ ๋ฒ์ ์ง์ ํจ์๋ผ ๋ถ๋ฅธ๋ค. ๋ค๋ฅธ ๋ง๋ก ์์ ๊ฐ์ฒด ์ง์ ๋๋ค(ํจ์) ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. → ์์ ๊ฐ์ฒด๋ฅผ ๋ช
์ํ์ง ์๊ฑฐ๋ it์ ํธ์ถํ๋ ๊ฒ๋ง์ผ๋ก ๋๋ค ์์์ ์์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ๋ธ๋ก(block) ..
Development/Android
๋ฆฌ์์ค๋ : ์ฑ์์ ์ฌ์ฉํ๋ ๋ค์ํ ๋ฏธ๋์ด ํ์ผ, ๋ฐ์ดํฐ ํ์ผ ๋ฑ์ ๋ฆฌ์์ค ํ์ผ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋๋ก์ด๋๋ ๋ฆฌ์์ค ํ์ผ๋ค์ res ํด๋๋ฅผ ํตํด ๊ด๋ฆฌํ๋ค. ์๋๋ก์ด๋๋ ์ด๋ฏธ์ง์ xmlํ์ผ์ ๋ฆฌ์์ค๋ก ๊ด๋ฆฌํ๋ฉฐ xmlํ์ผ์ ์๋๋ก์ด๋์์ ์ ์ํ ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค. xml ํ์ผ๋ก ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ๋ค์ ์ธ์ด, ํฌ๊ธฐ ๋ฑ์ ๋ฐ๋ผ ๋จ๋ง๊ธฐ์ ๋์ํ ์ ์๋๋ก ์ฒ๋ฆฌํ ์ ์๋ค. ์๋๋ก์ด๋์์ ๋ฆฌ์์ค ํ์ผ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด R.(ํด๋๋ช
).(์ฌ์ฉํ๊ณ ์ถ์ ๋ฆฌ์์คํ์ผ ์ด๋ฆ) ์ผ๋ก ํธ์ถ ํ ์ ์๋ค. R.layout.activity_main R.drawable.icon_next R.string.app_name ๋ฌธ์์ด์ ๊ฒฝ์ฐ ๊ณ ์ ๋ ๋ฌธ์์ด์ด ์๋ ๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด resํ์ผ ์์ %s, %d, %f ๋ฑ์ ์ฌ์ฉํ..
Development/Java
REST API ์ ์ REST API๋ผ๋ ๋จ์ด์์ ์ฌ์ฉ๋๋ REST( REpresentational State Transfer ์ ์ฝ์๋ก ์ํํธ์จ์ด ํ๋ก๊ทธ๋จ ์ํคํ
์ฒ์ ํ ํ์์
๋๋ค.) ํ๊ตญ๋ง๋ก ํ์ด๋ณด์๋ฉด ์์์ ์ด๋ฆ(์์์ ํํ)์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ ๊ฐ๋
์ ํ ์ค๋ก ์ ์ํ์๋ฉด ์๋์ ๊ฐ์ด ์ ์ํ ์ ์์ต๋๋ค. HTTP ํต์ ์์ ์ด๋ค ์์์ ๋ํ CRUD ์์ฒญ์ Resource์ Method๋ก ํํํ์ฌ ํน์ ํ ํํ๋ก ์ ๋ฌํ๋ ๋ฐฉ์ REST API์ ๋ฑ์ฅ์ 2000๋
๋์ HTTP์ ์ฃผ์ ์ ์ ์ค ํ ์ฌ๋์ธ ๋ก์ด ํ๋ฉ์ด ๊ทธ ๋น์ ์น ์ค๊ณ์ ์ฐ์์ฑ์ ๋นํด ์ ๋๋ก ์ฌ์ฉ๋์ง ๋ชปํ๋ ๋ชจ์ต์ ์ํ๊น์ํ๋ฉฐ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ
์ฒ(Architecture : ์..
Development/Java
#1 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object Oriented Programming)์ด๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ค ํ๋๋ก, ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด๋ค ๊ฐ์ ์ ๊ธฐ์ ์ธ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ด๋ค. OOP์์ ๊ฐ์์ ๋ป์ * Object : 1) ๊ฐ์ฒด, 2) ํด๋์ค์์ ์ ์ํ ๊ฒ์ ํ ๋๋ก ๋ฉ๋ชจ๋ฆฌ(์ค์ ์ ์ฅ๊ณต๊ฐ)์ ํ ๋น๋ ๊ฒ * Oriented : ์งํฅ ( ์ด๋ค ๋ชฉํ์ ๋ป์ด ์ ๋ ค ํฅํ๋ ๊ฒ. ) * Programming : ์ถ์ ์๊ณ ๋ฆฌ์ฆ์ ํน์ ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํด ๊ตฌ์ฒด์ ์ธ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌํํ๋ ๊ธฐ์ #2 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ-๋จ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ฅ์ ) 1...