์ ์ฒด ๊ธ(53)
-
๊ฐ๋ฐ์๋ก ์ผํ ์ง 3์ฃผ๋ , ์ค์ค๋ก ์ถํ๋ฅผ!
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
2021.09.12 -
[RxJava] debounce vs throttle ํจ์ ์ฐจ์ด์ ๋น๊ต
์ธ ๋๋ง๋ค ํท๊ฐ๋ฆฌ๋ debounce, throttle... ์ด๋ฒ ๊ธฐํ์ ํ์คํ ์ ๋ฆฌํด ๋๊ณ , ์ ์ ๊ฐ์ด ํท๊ฐ๋ฆฌ์๋ ๋ถ๋ค์ ์ํด ๊ณต์ ํฉ๋๋ค. ์ง์ ํ ์คํธ๋ ํด๋ณด๋ ์ดํด ์์ ๋ชฉ์ฐจ debounce ํจ์ public final Observable debounce(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) { Objects.requireNonNull(unit, "unit is null"); Objects.requireNonNull(scheduler, "scheduler is null"); return RxJavaPlugins.onAssembly(new ObservableDebounceTimed(this, timeout, unit, s..
2021.09.08 -
[CS] 3. ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ์ ํต์ฌ: ์์ฐจ ๋ ผ๋ฆฌ (์ปดํจํฐ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ)
๐ ์ด ๊ธ์ "ํ ๊ถ์ผ๋ก ์ฝ๋ ์ปดํจํฐ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ"์ด๋ผ๋ ์ฑ ์ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ด๋ค. ์ด๋ฒ ์ฃผ์ ๊ณต๋ถํ ๋ด์ฉ์ 3์ฅ ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ์ ํต์ฌ, ์์ฐจ ๋ ผ๋ฆฌ์ด๋ค. ๊ฒ๋ ์ด๋ ค์,,, ๋๋ฌด ์ด๋ ต์ง๋ง ์ดํดํ ๋ด์ฉ๋ค์ ์ ๋ฆฌํด ๋จ๊ฒจ๋ณธ๋ค. ์ปดํจํฐ๋ ๋นํธ๋ฅผ ์ด๋ป๊ฒ ๊ธฐ์ตํ๋๊ฐ! 1-2์ฅ์์ ์ปดํจํฐ๋ ๋นํธ๋ฅผ ์ด์ฉํด์ ์ํตํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค. ๊ทธ๋ผ ์ด๋ฒ ์ฅ์์๋ ์ปดํจํฐ๋ ๋นํธ๋ฅผ ์ด๋ป๊ฒ ๊ธฐ์ตํ๋์ง์ ๋ํด ๋ฐฐ์ด๋ค. ์ฌ๊ธฐ์๋ ์์ฐจ ๋ ผ๋ฆฌ(sequential logic)๋ฅผ ๋ฐฐ์ด๋ค. ์์ฐจ ๋ ผ๋ฆฌ๋, ๋์งํธ ํ๋ก ์ด๋ก ์์ ์์ฐจ ๋ ผ๋ฆฌ(Sequential logic)๋ ์ถ๋ ฅ์ด ์ ๋ ฅ์ ์ํด์๋ง ๊ฒฐ์ ๋์ง ์๊ณ ๊ธฐ์กด์ ๋ค์ด์๋ ์ ๋ ฅ๋ค์ ์ํฅ ๋ํ ๋ฐ๋ ๋ ผ๋ฆฌ ํ๋ก๋ฅผ ๋งํ๋ค. ์กฐํฉ ๋ ผ๋ฆฌ์ ์์ฐจ ๋ ผ๋ฆฌ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์กฐํฉ ๋ ผ๋ฆฌ๋ ํ์ฌ ์ ๋ ฅ๋ง์ ํตํด..
2021.08.28 -
[Android] Recyclerview ํด๋ฆญํ ์์ดํ ์ ๊ฐ์ด๋ฐ๋ก scroll ๋๊ฒ ํ๊ธฐ
Horizontal Recyclerview ์์ ํด๋ฆญํ ์์ดํ (selected item)์ ๊ฐ์ด๋ฐ๋ก scroll ๋๊ฒ ํ๊ธฐ. ์ฌ์ค ๋ฆฌ์คํธ๊ฐ ๋ง์ง ์์ผ๋ฉด smoothScrollToPosition ๋ฑ์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง, ๋์ ๊ฒฝ์ฐ ๋ฟ๋ ค์ฃผ๋ ๋ฆฌ์คํธ๊ฐ 100๊ฐ๊ฐ ๋์๊ธฐ ๋๋ฌธ์ smoothScrollToPosition ๊ฐ ์ํ๋๋๋ก ๋์ํ์ง ์์๋ค. ์ด์ ๊ด๋ จํด ๊ตฌ๊ธ๋ง์ ํด๋ณด์์ง๋ง, ์ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋์ scrollToPositionWithOffset() ์ ์ด์ฉํด ํด๊ฒฐ!! // selectedPosition: Recyclerview adapter ๋ฅผ ํตํด ๋ฐ์์จ ํด๋ฆญ๋(์ ํ๋) ์์ดํ ์ position private fun scrollSelectedItemToCenter(selectedPositi..
2021.08.16 -
[Android] Progress ๋ฅผ ๋ํ๋ด๋ Custom ProgressBar ๊ตฌํํ๊ธฐ
์ต๊ทผ์ ํ์ฌ์์ custom progress bar ๋ฅผ ๊ฐ๋ฐํด์ผ ํ์๋ค. ์ฌ๊ธฐ์ custom progress bar ๋, spinning ํ์ง ์๋ ๊ณ ์ ๋ progress ๊ฐ์ ํํํ๋ progress bar ์ด๋ค. ์ฆ, ํ์์ ๋คํธ์ํฌ ๋ก๋ฉ ๋ฑ์ ์ฌ์ฉ๋๋ ๋ฌดํ ๋ก๋ฉ์ด ๋๋ progress bar ์ ๋ฌ๋ฆฌ, spinning ํ์ง ์๋ ์์ด๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ๊ฒฐ๊ณผ๋ฌผ ์๋๋ ๊ฒฐ๊ณผ๋ฌผ์ด๋ค. ์ด๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค. progress max ๊ฐ : 100 progressBar width : 76dp. ์ฆ ๋ฐ๊นฅ ์(outer circle)์ ์ง๋ฆ์ด 76dp progressBar ๋๊ป : 10dp ๋ด๋ถ ์(inner circle) ์ง๋ฆ : 56dp ์ค์ ๊ตฌํ - ProgressBar ์์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค๊ธฐ ์ํด์ ๋๋..
2021.08.08 -
[CS] Base64 ์ธ์ฝ๋ฉ์ ๋ํด - ์ปดํจํฐ ๋ด๋ถ์ ์ธ์ด ์ฒด๊ณ
์ธ์ฝ๋ฉ(Encoding) ์ด๋ ๋ฌธ์ ์ธ์ฝ๋ฉ(์์ด: character encoding), ์ค์ฌ์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฌธ์๋ ๊ธฐํธ๋ค์ ์ปดํจํฐ๊ฐ ์ด์ฉํ ์ ์๋ ์ ํธ๋ก ๋ง๋๋ ๊ฒ์ ๋งํ๋ค. ๋์ ์๋ฏธ์ ์ปดํจํฐ๋ ์ด๋ฌํ ์ ํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ์ฒ๋ฆฌํ๋ ๊ธฐ๊ณ๋ฅผ ๋ปํ๋ฉฐ, ์ ํธ ์ฒ๋ฆฌ ์์คํ ์ ํตํด ์ด๋ ๊ฒ ์ฒ๋ฆฌ๋ ์ ๋ณด๋ฅผ ์ฌ์ฉ์๊ฐ ์ดํดํ ์ ์๊ฒ ๋๋ค. Base64 ์ธ์ฝ๋ฉ ์ปดํจํฐ ๋ถ์ผ์์ ์ฐ์ด๋ Base 64๋ 8๋นํธ ์ด์ง ๋ฐ์ดํฐ(์๋ฅผ ๋ค์ด ์คํ ํ์ผ์ด๋, ZIP ํ์ผ ๋ฑ)๋ฅผ ๋ฌธ์ ์ฝ๋์ ์ํฅ์ ๋ฐ์ง ์๋ ๊ณตํตASCII ์์ญ์ ๋ฌธ์๋ค๋ก๋ง ์ด๋ฃจ์ด์ง ์ผ๋ จ์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๊ฐ๋ฆฌํค๋ ๊ฐ๋ ์ด๋ค. ์๋ Base 64๋ฅผ ๊ธ์ ๊ทธ๋๋ก ๋ฒ์ญํ์ฌ ๋ณด๋ฉด 64์ง๋ฒ์ด๋ ๋ป์ด๋ค. ํน๋ณํ 64์ง๋ฒ์ด ์ปดํจํฐ์์ ํฅ๋ฏธ๋ก์ด ๊ฒ์, 64๊ฐ..
2021.07.31