๊ณณ๊ฐ์์ ์ธ์ฌ๋๋ค (31) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [ํ์ ][๊ฒฝํ ๋์๋ณด๊ธฐ] Jira ํ์ ์ ์ง์ฅ์์ Jira ํฐ์ผ ํ์ฉ ๊ด๋ จํด์ ๋ง์ด ๋ฐฐ์ ๋ค. ํฌ๋ช ํ ์ ๋ฌด ๊ณต์ ์ ์ํํ ์ํต์ ์ํด Jira๊ฐ ๊ต์ฅํ ์ข์ ํด์์ ๊ฒฝํํ๋ค. ์ด ํฌ์คํธ๋ฅผ ๋ณด๋ฉด์ ํ์ฌ ํ๋ก์ ํธ์ Jira ํฐ์ผ ์ด์ ๋ฐฉ์๊ณผ ๋ชฉ์ ์ ๋ํด ์ดํดํ๊ธฐ๊ฐ ์ข์๋ค. https://velog.io/@aajaeyoung/ticket-driven-development ํฐ์ผ ์ฃผ๋ ๊ฐ๋ฐ (ticket-driven development)์ ๋์ ํ๊ธฐ ํ์ฌ ๋ด๊ฐ ๋ค๋๊ณ ์๋ ํ์ฌ๋ Unity ๊ธฐ๋ฐ์ ๋ฉํ๋ฒ์ค ํ๋ซํผ์ ๊ฐ๋ฐํ๋ ํ์ฌ๋ก์, ์ฌ๋ฌํ์ด ์ฐ์ฌํด ์๋ค. ๊ทธ ์ค ๋ ๋ํ ํ๋์ ํ์ PM์ผ๋ก์ ํ์ฅ๋๊ณผ ํจ๊ป ์ผ์ ํ๊ณ ์๋๋ฐ, ์ด์ ๋ด๊ฐ ํ๋ก velog.io ๊ณผ๊ฑฐ์ ๊ธฐ์ต์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ์๋ฉด, ํฐ์ผ ์์ฑ์๋ ๋ฃฐ์ด ํ์ํ๋ค. ์ด์ ์ ํ - ๋น์ Tas.. [์ค๋ฌด] ๊ณ ๋ ค์ฌํญ / ๋ฐ์ ํผ๋๋ฐฑ ์๋ / ์์ผ / ํ์ ์ ๋ฌด์ ์ ์ฒด ๊ทธ๋ฆผ ๋ณด๊ธฐ ์ ๋ฌด๊ฐ ์ ์ฒด ๊ทธ๋ฆผ์์ ์ด๋ ๋ถ๋ถ์ ์์นํ๋์ง ํ์ ํ๊ธฐ ์ ๋ฌด์ ์๋ ํ์ ํ๊ธฐ. ๋๋ ์๋๋ฅด๋ค๋ณด๋ฉด ์๋ ํ์ ์ ์คํจํ๋ค. ์๋ฌธ์ฌํญ์ ๋ฐ๋์ ์ง๋ฌธํ๊ธฐ ๋ฌธ์ ๊ฐ๋ฐ ๋ฌธ์๋ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ ํํธ. ์ฝ๋๋ฅผ ์ ์ง ๋ค๋ ๊ฒ์ ๋จ์ด ์ด์ด์ ์์ ํ๊ธฐ ์ฝ๋ค๋ ๊ฒ. ๋ฌธ์๊ฐ ์ด ๊ธฐ๋ฐ์ด ๋๋ค ์ฝ๋์ ๋ฌธ์๋ ๋งคํ๋์ด์ผ ํ๋ค. ์ ๋๋ก ๋ ํ๋ฉด ์ค๊ฒ๋ ํ๋๋ง ์์ด๋ ๋ค๋ฅธ ๋ฌธ์๋ค์ ํ์ ์๋ค. ๊ฐ๋ฐ ๋ ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๊ฒ. ์ด์๊ฐ ๋ ๋์ค๊ฒ ๊ฐ๋ฐํ๊ธฐ ๋ฐ๋ณต ์์ ์ด ์ค์ฌ์ผ์ง ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. ์ด์๋ฅผ ์ค์ผ ์ ์๋ค. ๋ด๊ฐ ๋ง๋ ๊ธฐ๋ฅ์ ํ ์คํธ๋ ๋ด๊ฐ ํด์ผ ํ๋ค. ์ด์ ๋ฐ๊ฒฌ์ QA์ ์์งํ์ง ๋ง ๊ฒ. ์งง๊ฒ ๊ฐ๋ฐํ๊ณ ํ ์คํธ๋ ๋ง์ด ํ๊ธฐ ํ๋ซํผ์ ๋ํ ์ดํด๋๋ฅผ ๋์ฌ์ผ ํ๋ค. ์ฝ๋์ ์ฌ์ฌ์ฉ(๋ชจ๋ํ)์.. [Android] Uri๋ก๋ถํฐ ํ์ฅ์ ์ป๊ธฐ ๋ฌธ์ uri๋ก ์ ๊ทผํ๋ data์ ํ์ฅ์๋ฅผ ์ฝ๊ฒ ํ์ ํ๊ณ ์ถ๋ค. (๋ถ๋ช ๋๊ฐ ์ด๋ฐ ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋์์ ๊ฒ์ด๋ค.๐ค) ์ฐพ์๋ค https://developer.android.com/reference/android/webkit/MimeTypeMap#getFileExtensionFromUrl(java.lang.String) MimeTypeMap | Android Developers developer.android.com ํ์ฉ val extension = MimeTypeMap.getFileExtensionFromUrl(downloadUri.toString())?.let { ".$it" } [Android][Open Source License] ์คํ์์ค ๋ผ์ด์ผ์ค ๋ฆฌ์คํธ ์ ๊ณต ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์ ์คํ์์ค ๋ผ์ด์ผ์ค ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํด์ผ ํ๋ค. ์ฌ์ด ๋ฐฉ๋ฒ ์๋? ์๊ฒ๋ ๊ฒ ๊ตฌ๊ธ ํ๋ ์ด์์ ์คํ์์ค ์๋์ผ๋ก ํ์ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ https://developers.google.com/android/guides/opensource?hl=ko ์คํ์์ค ๊ณ ์ง ํฌํจ | Google Play services | Google for Developers ์ด ํ์ด์ง๋ Cloud Translation API๋ฅผ ํตํด ๋ฒ์ญ๋์์ต๋๋ค. Switch to English ์คํ์์ค ๊ณ ์ง ํฌํจ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. Google Play ์๋น์ค์๋ developers.google.com ์ง์ง ์ฌ์ฉํ๊ธฐ ์ฝ๋ค. ์ ๋ง ํธํ๋ค. [Android][TextView] marquee ์ค์ ๋ฌธ์ TextView์ marquee ์ค์ ๊ฐ์ด ๋จนํ์ง ์์ android:ellipsize="marquee" ์ ์ ๋จนํ๊น... ์ฐธ๊ณ https://stackoverflow.com/questions/3332924/textview-marquee-not-working [Android][Java] ์ด์ฑ ๊ฒ์ ๋ฌธ์ ์ด์ฑ ๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ํ๋ค ์ถ์ฒ https://milkissboy.tistory.com/32 https://jhb.kr/122 ๋ ๋ฒ์งธ ์ถ์ฒ๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐โ๏ธ๐โ๏ธ๐โ๏ธ ์์์๋ถ ํ์ํ์๊ณ ๊ฑด๊ฐํ์๊ธธ ๋ฐ๋๋๋ค. [Android][Compose] Compose Canvas๋ฅผ ์ด์ฉํด์ Dot Indicator ๋ง๋ค๊ธฐ ๋ชฉ์ Compose์ Canvas๋ฅผ ์ด์ฉํด์ View Pager์ ๊ฐ์ด ์ธ Dot Indicator ๋ง๋ค๊ธฐ. ์๊ตฌ์ฌํญ R_1. ์ด ์ธ๋์ผ์ดํฐ๋ modifier.align ์ ํตํด ์ผํฐ ์ ๋ ฌ์ ํ๋ค. R_2. dot์ ๊ธฐ๋ณธ์ผ๋ก ์ํ์ด๋ค. ํ์ฌ ํ์ด์ง๋ฅผ ๋ํ๋ด๋ dot์ ๊ฐ๋ก๋ก ๊ธธ์ญํ๊ฒ ๋์ด์ ธ ์๋ ๋ผ์ด๋์ฒ๋ฆฌ๋ ์ง์ฌ๊ฐํ์ด๋ค. ์ฝ๋ / ๊ตฌํ @Composable fun BoxScope.DotIndicator( modifier: Modifier = Modifier, pagerState: PagerState, dotSpace: Dp = 4.dp, dotSize : Dp = 5.dp, currentDotWidth : Dp = 12.dp, listSize: Int, currentPageDotColor: Color =.. [Android][DataStore] DataStore ๋๊ธฐ์ ์ผ๋ก ์ฐ๊ธฐ ์ฐธ๊ณ https://developer.android.com/topic/libraries/architecture/datastore#synchronous ๋ชฉํ DataStore์ ์ ์ฅ ๊ฐ์ suspend fun ๋ฐ๊นฅ์์ ๋ถ๋ฌ์ค๊ณ ์ถ์๋ค. (์ด๊ฑด ๊ฒฐ๊ตญ์ DataStore๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฐ๊ณ ์ถ๋ค๋ ์๋ฏธ๋ผ์ ์ ๋ชฉ์ ๊ทธ๋ ๊ฒ ๋ฃ์๋ค) ๊ธฐ์กด runBlocking์ ์จ์ DataStore์ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ๋ ํ์๋ค. ๊ทธ๋ฌ๋ runBlocking์ด UI thread๋ฅผ blockํ๋ ๊ฑฐ๋ผ ANR ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ํ๋๊น, ๊ณต์๋ฌธ์๋ฅผ ์ดํด๋ณธ๋ค. ๊ณต์ ๋ฌธ์ ํ์ธ ์ฌ๊ธฐ๋ณด๋ฉด DataStore๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฆฌ๋ก๋ฉํ๋ฉด ANR ์ด์๋ฅผ ์ค์ผ ์๋ ์๋ค๊ณ ํ๋ค. ๊ฒฐ๊ณผ ๊ณต์ ๋ฌธ์์์ ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ 1. runBlocking์ ์จ๋ผ. 2.. ์ด์ 1 2 3 4 ๋ค์