์ ์ฒด ๊ธ(53)
-
[Android] Android Architecture Pattern ์ ๋ํ์ฌ - (1)
#์ค๋์ ๊ฐ๋ : Android Architectrue Pattern ์ด ๊ธ์ ์๋๋ก์ด๋ ๊ณต์ ํํ์ด์ง์์ ์๊ฐํ App Architecture Guide๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค. Architecture Pattern - ์ฝ๋์ ์ค๊ณ. ์ฆ, ๊ฐ๋ฐ ์ ์ฝ๋๋ฅผ ์ด๋ค ๊ตฌ์กฐ๋ก ์งค ๊ฒ์ด๋. - ๊ผญ ์จ์ผ๋ง ํ๋ ๊ฒ์ ์๋. - ํ์ฌ๋ ๊ตฌ๊ธ์์๋ ์ํคํ ์ณ ์ฌ์ฉ์ ๊ถ์ฅ Architecture Pattern ์ฌ์ฉ ์ด์ (์ฐ์ง ์๋๋ค๋ฉด?) - ํ๋์ ์กํฐ๋นํฐ/ํ๋๊ทธ๋จผํธ ํ์ผ ๋ด์ ์ ๋ง์ UI logic & ๋น์ฆ๋์ค logic ๋ฑ์ด ๋ค ์์ฌ์์ - ๊ทธ๋ผ ํด๋น ์กํฐ๋นํฐ๊ฐ ์ฌ์์๋ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ก์ง ์ญ์ ์๋ก ์์ํด์ผ ํจ. - ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ๊ธธ์ด์ง๊ฒ ๋จ ==> ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง. - ํ์ผ ๋ด ๊ตฌ์กฐ ํ์ ์ด ํ๋ค์ด์ง. - ์ ๋..
2019.09.28 -
[Android] ์ฑ ์ฑ๋ฅ ๋ฐ ์๋ ๊ฐ์ ๋ฐฉ๋ฒ
๊ตฌ๊ธ์์ ๊ถ์ฅํ๋ ์ฑ๋ฅ ๊ฐ์ ๋ฐฉ๋ฒ #2๊ฐ์ง ๊ธฐ๋ณธ ๊ท์น ๋ถํ์ํ ๊ฒ์ ํ์ง ์๊ธฐ ๊ฐ๋ฅํ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ์ง ์๊ธฐ 1. ๋ถํ์ํ Object ์์ฑ ํผํ๊ธฐ ๊ฐ๋ฅํ ํ ๋จ๊ธฐ ์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๋ ๊ฒ์ด ์ข๋ค. ์์ฑ๋๋ ๊ฐ์ฒด๊ฐ ์ ์์๋ก ์ฌ์ฉ์ ํ๊ฒฝ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋น๋๊ฐ ๋ฎ์์ง๋ค. 2. ์ ์ ํ Static ์ฌ์ฉํ๊ธฐ ๊ฐ์ฒด์ ํ๋์ ์ ๊ทผํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ, ๋งค์๋๋ฅผ static์ผ๋ก ๋ง๋๋ ๊ฒ์ ๊ถ์ฅํ๋ค. ๊ทธ๋ฌ๋ฉด ํธ์ถ์ด ์ฝ 15~20% ๋นจ๋ผ์ง๋ค๊ณ ํ๋ค. 3. ์์์๋ static final ์ฌ์ฉํ๊ธฐ 4. ํฅ์๋ for ๋ฃจํ(for-each) ์ฌ์ฉํ๊ธฐ ์๋์ ์์์ ๊ธฐ๋ณธ for ๋ฌธ๊ณผ for-each ๋ฌธ์ ์ฐจ์ด๋ฅผ ๋ณด์. ์๋๋ zero() < one()
2019.09.21 -
[Android] Paging Library ์ ๋ํ์ฌ
# ์ค๋์ ๊ฐ๋ : Paging Library of Android Jetpack 1. ๊ฐ๋ ๋ฐ ํน์ง ์๋๋ developer.android.com ์์ ์ค๋ช ํ ๊ฐ๋ ์ด๋ค. ํ์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ์์ ๋ฐ์ดํฐ ์ฒญํฌ๋ฅผ ๋ก๋ํ๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์์ฒญ์ ๋ถ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ฉด ๋คํธ์ํฌ ๋์ญํญ ๋ฐ ์์คํ ๋ฆฌ์์ค ์ฌ์ฉ์ด ์ค์ด ๋ญ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Google I/O 2018 ์ ์๋ก ์๊ฐ๋ Jetpack์ ๊ตฌ์ฑ์์ ์ค ํ๋์ด๋ค. ์ฌ๊ธฐ์ Jetpack ์ด๋, Jetpack์ ๊ฐ๋ฐ์๊ฐ ๊ณ ํ์ง ์ฑ์ ์์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๊ฒ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋๊ตฌ, ๊ฐ์ด๋ ๋ชจ์์ ๋๋ค. ์ด ๊ตฌ์ฑ์์๋ฅผ ํตํด ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด๊ณ , ์์ฉ๊ตฌ ์ฝ๋ ์์ฑ์์ ๋ฒ์ด๋๋ฉฐ, ๋ณต์กํ ์์ ์ ๊ฐ์ํํจ์ผ๋ก์จ ์ค์ํ ์ฝ๋์๋ง ์ง์คํ ์ ์์ต๋..
2019.09.14 -
ํด์ ํ ์ด๋ธ, ํด์ ๋งต์ ๋ํ์ฌ (Hash table, Hash map)
# ์ค๋์ ๊ฐ๋ : Hash table / Hash map ์ฐ์ , ํด์(hash)๊ฐ ๋ญ๊น ? ๋ง์ด ๋ค์ด๋ณด๊ธด ํ์ง๋ง, ์ ํํ ๊ฐ๋ ์ ์์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ญ๋ ์ง ์ ์ด ์ด๋ฆ์ด ๋ถ์ฌ์ก๋์ง๋ฅผ ํ์ ํ๋ฉด ์ดํด๊ฐ ์ฝ๋ค. ํด์(Hash) ์ด๋ค ๋ฌธ์์ด์ ๋ ์งง์ ๊ธธ์ด์ ๊ฐ์ด๋ ํค๋ก ๋ณํํ๋ ๊ฒ. (๋ฌธ์์ด์ด ๊ฐ์ผ๋ฉด ํด์๊ฐ๋ ๋์ผ.) ๋ฐ์ดํฐ ๊ฒ์์ ์์ด ๋งค์ฐ ํจ์จ์ ๋ฐ์ดํฐ๋ฅผ key-value ๋ก ์ ์ฅ , ์ด๋ key๊ฐ์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ ํ๊ท ์๊ฐ๋ณต์ก๋๊ฐ O(1). ํด์ ํจ์ (Hash function) ์์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ก ๋งคํํ๋ ํจ์. ์ ๋ ฅ๊ฐ์ด ์กฐ๊ธ์ด๋ผ๋ ๋ณ๊ฒฝ ์ ๋ค๋ฅธ ํด์๊ฐ์ ์ถ๋ ฅ. ์ถ๋ ฅ๋ ๊ฒฐ๊ณผ๊ฐ์ ํ ๋๋ก ์ ๋ ฅ๊ฐ ์ ์ถ ๋ถ๊ฐ. ํด์ฌ ์ถฉ๋์ ์ด์๊ฐ ์์. Seperate Chainin..
2019.09.08 -
Compiler vs Interpreter (์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ์ ์ฐจ์ด)
#์ค๋์ ๊ฐ๋ : Compiler vs Interpreter ์ ์ฐจ์ด 1. Compiler ๋? - ์ ์ ์ธ๊ฐ์ ์ธ์ด์ ๊ฐ๊น์ด ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์์ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๊ธฐ๊ณ์ด(ๆฉๆขฐ่ช)๋ก ๋ ๋ชฉ์ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด ๋ฒ์ญ ํ๋ก๊ทธ๋จ (์ ์๊ฐ ๋๋ฌด ์ด๋ ต๋น ..) ==> ์ฆ, ๊ณ ๊ธ์ธ์ด(ํ๋ก๊ทธ๋๋ฐ ์ธ์ด) -> ๊ธฐ๊ณ์ด(0,1๋ก ์ด๋ฃจ์ด์ง ์ด์ง ์ซ์ : ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด)๋ก ๋ณํํด์ฃผ๋ ๊ฒ. - ์ญ์ฌ ์ด๊ธฐ ์ปดํจํฐ ํ๋ก๊ทธ๋จ๋ค์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑ๋์๋ค. ๊ทธ๋ฌ๋ ์๋ก ๋ค๋ฅธ CPU ์ํคํ ์ฒ๊ฐ ๋ฑ์ฅํ ๋๋ง๋ค ๋งค๋ฒ ๋๊ฐ์ ํ๋ก๊ทธ๋จ์ ์๋ก ๋ค๋ฅธ ์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑํ๋ ๋น์ฉ์ด ์ปค์ง๋ฉด์, ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์์ฑ์ด ๋๋๋์๋ค. ๊ทธ๋ฌ๋ ์ด๊ธฐ ์ปดํจํฐ ํ๋์จ์ด์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์์, ์ปดํ์ผ๋ฌ์..
2019.09.06