์ ์ฒด ๊ธ (374) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Programming] ๋ฉฑ๋ฑ(ๅช็ญ, idempotent) ko.wikipedia.org/wiki/%EB%A9%B1%EB%93%B1%EB%B2%95%EC%B9%99 ๋ฉฑ๋ฑ๋ฒ์น - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . ๋ฉฑ๋ฑ๋ฒ์น(ๅช็ญๆณๅ) ๋๋ ๋ฉฑ๋ฑ์ฑ(ๅช็ญๆง, ์์ด: idempotent)์ ์ํ์ด๋ ์ ์ฐํ์์ ์ฐ์ฐ์ ํ ์ฑ์ง์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก, ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ ko.wikipedia.org ๋ฉฑ๋ฑ๋ฒ์น, ๋ฉฑ๋ฑ์ฑ ์ฐ์ฐ์ ์ฌ๋ฌ๋ฒ ์ ์ฉํด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ ์ฑ์ง ๋ฉฑ๋ฑ์ฑ์ด ์๋ ํจ์๋ ๋ฉฑ๋ฑ ํจ์(idempotent function)๋ผ๊ณ ๋ถ๋ฆ ๋จํญ์ฐ์ฐ ๋จํญ์ฐ์ฐ f, ์ด๋ค ์งํฉ S์ ๋ชจ๋ ์์๋ x f(f(x)) = f(x) ์ดํญ์ฐ์ฐ ์ดํญ์ฐ์ฐ โ , ์ด๋ค ์งํฉ S์ ๋ชจ๋ ์์ x xโ x = x ํ๋ก๊ทธ๋๋ฐ์์ ๋ฉฑ๋ฑ์ฑ ํจ์๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํด.. [Library] Moshi Converter github.com/square/retrofit/tree/master/retrofit-converters/moshi square/retrofit A type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub. github.com ์์ private fun getRetrofit() = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(MoshiConverterFactory.create()) .build() Gson ๋ณด๋ค Moshi๊ฐ ๋์ ์ : www.reddit.com/r/androiddev/.. [Java] Class.java public boolean isAssignableFrom(Class<?> cls) java.lang.Class public boolean isAssignableFrom(Class cls) ํด๋น ํด๋์ค(๋๋ ์ธํฐํ์ด์ค)์ Class object ๊ฐ ํ๋ผ๋ฏธํฐ cls(ํด๋์ค ๋๋ ์ธํฐํ์ด์ค) Class์ ๋์ผํ๊ฑฐ๋ cls์ superclass ๋๋ superinterface์ผ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๋ค. ์๋ ๊ฒฝ์ฐ false ๋ฐํ. ์ฆ, ํด๋น ํด๋์ค/์ธํฐํ์ด์ค๊ฐ ๋งค๊ฐ๋ณ์์ ํด๋์ค/์ธํฐํ์ค์ ๊ฐ๊ฑฐ๋, ๋งค๊ฐ๋ณ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค/์ธํฐํ์ด์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํ. {์์ ํด๋์ค}.isAssignableFrom({์์ ํด๋์ค}) -> true {์์ ํด๋์ค}.isAssignableFrom({๋ถ๋ชจ ํด๋์ค}) -> false {๋ถ๋ชจ ํด๋์ค}.isAssignableFrom({์์ ํด๋์ค}) -> fals.. [Kotlin] ::class.java ์ฝํ๋ฆฐ์์ ์๋ฐ ๋ฆฌํ๋ ์ ์ฌ์ฉํ๋๋ก ํจ. kotlinlang.org/docs/java-interop.html#java-reflection [Android ์ฝ์ง ๊ตํ] ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ๊ธฐ ์ํด ์ปค์คํ InputFilter๋ฅผ ๋ง๋ค์์ด์. ์์ฝ ์๋๋ก์ด๋ ์ ๋ ฅ์ฐฝ์์ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์. ๊ทธ๋์ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ฌ๊ธฐ๊ณ ๊ธ์ ์๋ฅผ ์ธ๊ธฐ ์ํด์๋ ์์ ์ด ํ์ํฉ๋๋ค. ์ ๋ ์ปค์คํ InputFilter๋ฅผ ๋ง๋ค์์ด์. ๊ธฐํ์ ์ ๋ ฅ์ฐฝ์ ๊ธ์์ ์ ํ์ด ์์์ต๋๋ค. ์ผ๋ฐ ๊ธ์, ์ซ์, ๊ธฐํธ, ์ด๋ชจ์ง๋ฅผ ํฌํจํด์ ๊ธ์์ ์ ํ์ด ์์๊ณ , ๋น์ฐํ ์ง๊ด์ ์ผ๋ก ์ด๋ชจ์ง ํ๋๋ ํ ๊ธ์ ์๋๊ฒ ์ต๋๊น. ๋๋ฌด๋ ์ฝ๊ฒ ์๊ฐํ๊ณ ๊ธฐํ๋๋ก ์์ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ, ํ ์คํธ๋ฅผ ํด๋ณด๋ ์ด๋ชจ์ง๋ฅผ ๊ธ์ ํ๋ ์ด์์ผ๋ก ์ธ๋๊ตฐ์.๐ณ ๋๊ฐ ์ ๊ฐ ํ ์คํธํ๋ ์ด๋ชจ์ง๋ค์ ํ ์ด๋ชจ์ง๋น 2๊ธ์ ์ ๋๋ก ์ธ์ํ์ต๋๋ค. iOS์์๋ ์ด๋ชจ์ง ํ๋๋ฅผ ํ ๊ธ์๋ก ์ธ์ํด์ ์ด๊ฒ๊ณผ ๊ด๋ จํด ๋ฌธ์ ๊ฐ ์์ด ์ฝ๊ฒ ๊ฐ๋๋ฐ, ์๋๋ก์ด๋๋ ๊ทธ๋ ์ง ๋ชปํด์ ์์ผ๋ก ํดํด๊ฑฐ๋ฆฌ๊ณ ๐คจ๐คจ์ ๊ทธ๋ฐ์ง,.. [Android ์ฝ์ง ๊ตํ] RecyclerView์ RxJava๋ ์ฐ์ง ๋ง์์ผ ํฉ๋๋ค. ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ์ ๋ฆฌ์คํธ ์์ดํ ์ ์ฐ์๋๋ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ง๊ณ ์ RxJava์ throttleFirst๋ฅผ ํ์ฉํ์ต๋๋ค. (์ ๋ ์ด ์์ ์ด RxJava์ ์์ฉ์ ์ ๊ฐ ํ ๋ฐ์ง ๋ ๋์๊ฐ๋ค๋ ์๊ฐ์ ์ฌ๋ฌด์ค์์ ๋ด์ ๊ธฐ์จ์ ๋๋ ธ์ด์.) ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์์ง ๋ง๊ณ ๋ง์์ผ์ง๐ ์ด๋ฌ๊ณ RecyclerView์์ RxJava์ dispose๋ฅผ ์งํํ ์ ๋นํ ์ฝ๋ฐฑ ํจ์๊ฐ ์๋ ๊ตฌ๊ธ์๊ฒ ๋ฌผ์ด๋ดค์ต๋๋ค. StackOverFlow์์ ์ด๋ํฐ ์์ onViewDetachedFromWindow๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค๋ ๊ธ์ ํ์ธํ๊ตฌ์. ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์งฐ์ด์. override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) { if (holder is ViewHolder) {.. ์ด์ 1 ยทยทยท 44 45 46 47 ๋ค์