-
Notifications
You must be signed in to change notification settings - Fork 1
2024 11 11_daily_scrum
์ผ์: 2024-11-11
์ฐธ์์: ์ ์ ์ง, ์ํ์ค, ๋ ธ์งํ, ๊น๋์ค, ๊น์ ํธ
K005_๊น๋์ค, K020_๋ ธ์งํ, K043_์ํ์ค
- ํด์
K012_๊น์ ํธ
- ํ๋ก์ ํธ ๊ด๋ จ ์งํ
K046_์ ์ ์ง
- ๊ฐ์ธ ๊ณต๋ถ ์งํํ์
- ๋ชจ๋ฅธ๋ค๊ณ ์์งํ ๋งํ๊ธฐ
- ์กฐ์ฌํ๋ ์๊ฐ ๊ฐ๊ณ ๋ง์ ํ ๋ก ํ๊ธฐ
- ๋ธ๋์น ๋ณ ์ค๋ณต ์ฝ๋๊ฐ ์์ด์ ๋จธ์งํ ๋ ๊ฒน์น๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ์ด๊ฑธ ์ด๋ป๊ฒ ํด๊ฒฐํ๋ฉด ์ข์๊น?
-
๊ด๋ จ๋ ๊ฒ์ PR์ ๋ ๋ฆฌ๋ ๋ฐฉ์
โ ํ๋์ ๋ธ๋์น์์๋ง pull์ ๋ฐ์์์ผํจ
โ task ๋ถ๋ฐฐ๊ฐ ์ค์
-
์์ ์ ๋จ์๋ฅผ ๋ถ๋ฆฌ
-
โ ์ํฝ, ์คํ ๋ฆฌ๋ก ์ง์ ํ๊ธฐ
- task ์์ฑ์ ์ถํ ์งํํ ๊ฒฐ๊ณผ ๊ธฐ์กด ์์ฑ task์ ๋ค๋ฅด๊ฑฐ๋ ์์ฑ๋ ๋ฌธ์ ๊ฐ ์์ง ์๋๊ฐ
- task๋ฅผ ๋ค์ ๋ง๋ค์ด๋ด์ผ ํ์ง ์๋๊ฐ
- ๊ฒน์น๋ ๊ธฐ๋ฅ์ ์ฌ๋์ ์ํต ํ์
- ๋๋จธ์ง๋ okay
- Figma์ ์๋ ๊ฒ ์ ๋ถ
- Figma UI ๋์์ธ ๋ง๋ฌด๋ฆฌ
- ๋ค ๋ชปํ๋ ์์
๋ค
- ๋๊ฐ ํด๋ ํ์ธ + ์ฌ์ง ์ ํ ๋ฑ ํ๋ฉด
- Home Screen
- ๋๊ฐ ์ ์ฅ ํ๋ฉด ์ํ ๊ด๋ฆฌ
- Splash << ์ฐ์ ์์ ๋ฎ์ ์์
- ๋ก๊ทธ์ธ
- FireBase
- ์ง๋
- ๋ฐฐํฌ
3 โ mvp 1์ฐจ ๋ฐฐํฌ
4 โ AI, ์น๊ตฌ ๊ธฐ๋ฅ ๋์
5 โ ๋ณด์
6 โ ๋ง๋ฌด๋ฆฌ + ๋ฐํ ์ค๋น
์์์ผ
- Figma์ ์๋ ๊ฒ ์ ๋ถ
- Figma UI ๋์์ธ ๋ง๋ฌด๋ฆฌ โ ๋์ค์ ๋ณ๊ฒฝํ ์์ โ ํ์ค, ์ ์ง
- ๋ฏธ์ ๊ฐ๊ฐ์ ์ด๋ ค Home Screen UI/UX ๋์์ธ
- ๋์์ธ ๋ Home Screen ๊ตฌํ
- ๋ค ๋ชปํ๋ ์์
๋ค
-
๋๊ฐ ํด๋ ํ์ธ + ์ฌ์ง ์ ํ ๋ฑ ํ๋ฉด โ ์ ํธ, ๋์ค
- UI ํ๋ฉด ๊ตฌ์ฑ ๋จผ์
- ๊ธฐ๋ฅ ๊ตฌํ
-
๋๊ฐ ์ ์ฅ ํ๋ฉด ์ํ ๊ด๋ฆฌ โ ์งํ
- Configuration change ๋์
- ์์น์ ๋ณด, ๋ ์ง์ ๋ณด ์ ์ฅ ํ์(๋ฌธ์์ด) : yyyy.
-
Splash + Animation โ ์ ์ง
-
Room DB Table ๋น ๋ฅธ ์์ โ ์ฝ๋ 2์ค๋ง ์ถ๊ฐํ๋ฉด ๋๋๋ ๋ถ๋ถ
-
Location์ ์๋, ๊ฒฝ๋ 2ํ๋๋ก ๋๋ ์ ์ ์ฅํด์ผํจ. โ Double ์๋ฃํ
-
datetime์ convert ์ฌ์ฉ ๊ณ ๋ ค
-
-
detail ํ๋ฉด โ ์ ์ง
-
- Figma UI ๋์์ธ ๋ง๋ฌด๋ฆฌ โ ๋์ค์ ๋ณ๊ฒฝํ ์์ โ ํ์ค, ์ ์ง
ํ์์ผ
- ๋ก๊ทธ์ธ
- FireBase
- ์ง๋
์์์ผ
- ๋ก๊ทธ์ธ
- FireBase
- ์ง๋
- ๋ฐฐํฌ
๋ชฉ์์ผ
- ๋ฐฐํฌ
๊ทธ ์ธ ์์ ํด์ผํ ๋ถ๋ถ
- Compose Navigation ์ฝ๋ ๋ฆฌํํ ๋ง
- viewModel๋ก ์ธํด Preview๊ฐ ์๋ณด์ด๋ Screen์ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด Preview๊ฐ ๋ค์ ๋ณด์ด๋๋ก ์์ ์์
- Room DB ๊ด๋ จ
- ๋คํธ์ํฌ ๊ด๋ จ์์ ์บ์ฑ, ๋๊ธฐํ ๋ฑ ๊ณ ๋ คํ๊ธฐ
- LiveDate๋ฅผ StateFlow/Flow ๋ก ๋ณํ
- ์ ์ง
package com.and04.naturealbum.utils
import androidx.compose.ui.graphics.Color
fun String.toColor(): Color {
val colorInt = android.graphics.Color.parseColor("#$this")
return Color(colorInt)
}
- ์งํ
fun String.toColor() = Color(this.toLong(16))
- ๋์ค
// color์ # ํฌํจ
Color(parseColor(color))
โ ColorUtils์ ์ ์ฅํ๊ธฐ
โ Color RGB 6์๋ฆฌ ์ ์ฅ ๋๋ฌธ์
โ parseColor๋ฅผ ์จ์ผ ํ๋๊ฐ๋ ์งํ๋์ด ์ ๋ฆฌ ํ ๊ฒฐ์ โผ
@ColorInt
public static int parseColor(@Size(min=1) String colorString) {
if (colorString.charAt(0) == '#') {
// Use a long to avoid rollovers on #ffXXXXXX
long color = Long.parseLong(colorString.substring(1), 16);
if (colorString.length() == 7) {
// Set the alpha value
color |= 0x00000000ff000000;
} else if (colorString.length() != 9) {
throw new IllegalArgumentException("Unknown color");
}
return (int)color;
} else {
Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
if (color != null) {
return color;
}
}
throw new IllegalArgumentException("Unknown color");
}
โrgb 6์๋ฆฌ ์ซ์์ด๊ฑฐ๋ argb 8์๋ฆฌ ์ซ์(Alpha๊ฐ ํฌํจ์ ๋ฐ๋์ ๋๊ธ์)
โAlpha๊ฐ์ด ์๋๊ฒฝ์ฐ 0xff000000
(๋ถํฌ๋ช
)์ ์ถ๊ฐ
โint๋ก ์บ์คํ ํด ๋ฆฌํด
โ ๋ฌธ์์ด โ Int์ธ๋ฐ ์ parseColor
?
-
๊ฐ์ธ ์ทจํฅ
-
๊ฐ์ ์ด๋ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํฌํธ ํ๊ณ ์ถ์ง ์์
-
์๋ ํจ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์
-
์ฌ์ฉํ ๋
import android.graphics.Color as AndroidColor import androidx.compose.ui.graphics.Color as ComposeColor fun String.toColor(): ComposeColor { val colorInt = AndroidColor.parseColor("#$this") return ComposeColor(colorInt) }
OR
import android.graphics.Color.parseColor import androidx.compose.ui.graphics.Color fun String.toColor(): Color { val colorInt = parseColor("#$this") return Color(colorInt) }
OR
import androidx.compose.ui.graphics.Color fun String.toColor(): Color { val colorInt = android.graphics.Color.parseColor("#$this") return Color(colorInt) }
-
์ฌ์ฉํ์ง ์์ ๋
const val OPAQUE = 0xff000000 fun String.toColor(): Color { return Color( when { length <= 6 -> toLong(16) or OPAQUE length <= 8 -> toLong(16) else -> throw IllegalArgumentException("Unknown color") } ) }
- ์๋์ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ
import android.graphics.Color.parseColor
import androidx.compose.ui.graphics.Color
fun String.toColor(): Color {
val colorInt = parseColor("#$this")
return Color(colorInt)
}
[๋ฐํ 2์ฐจ ์ง๋ฌธ ไธญ] Q. ๋ฃธ๋๋น๋ฅผ ์ฌ์ฉํ์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค. A. ํ์ฌ ๋นํ์ ๋ฐ ๋ก์ปฌ ์ํ์์์ ๋์์ ์ฐ์ ์ ์ผ๋ก ๋ชฉํ๋ก ์ก์์ต๋๋ค. ๊ทธ ๊ณผ์ ์์ ํ ์ด๋ธ์ ๊ตฌ์ฑํ ์ ์๊ณ ์ฟผ๋ฆฌ๋ก ์ ํฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ Room DB๋ก ๋ด์ฅ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ๋ก ํ์ต๋๋ค. ์ดํ Firebase ํ์ต ํ ๋์ ์์ ์ด๋ฉฐ remote ๊ด๋ จ ๋ ผ์ ํ Friebase๋ ํจ๊ป ์ฌ์ฉํ ๊ฒ ๊ฐ์ต๋๋ค.
- ๋นํ์๋ FireBase๋ก ์ ๋ก๋/๋ค์ด๋ก๋๋ฅผ ํ ์ ์๋๋ฐ Room์ ์ธ ํ์๊ฐ ์์๊น?
- ๋นํ์๋ณด๋ค๋ ๋คํธ์ํฌ๊ฐ ๋๊ฒผ์ ๋ ๋์ํ๊ธฐ ์ํจ์ด ์ด์ ์ ๋ง์ ๊ฒ ๊ฐ๋ค.
- ๋๊ธฐํ, ์บ์ฑ ๋ฑ์ ์์ ์ด ์ถ๊ฐ๋ก ๊ณ ๋ ค ๊ฐ๋ฅ
๊ฒฝ์ฐ์ ์
- ๋นํ์
- ๋ฐ์ดํฐ ์ ์ฅ
- ๋คํธ์ํฌ ์์ด ์ฌ์ฉ ๊ฐ๋ฅ
- ๋คํธ์ํฌ ์์ด ์ฌ์ฉ ๊ฐ๋ฅ
- ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ ์๋ฒ์ ๋๊ธฐํ ์์ ํ์
- 1, 2์ฃผ์ฐจ ํ ํ๊ณ ์ ๋ก๋ ํด์ผ ํจ
โ ViewModel์ ์ ์ฅํ ์ํ์ Composable์ ์ ์ฅํ ์ํ์ ๊ธฐ์ค์ด ์ด๋ป๊ฒ ๋์๋์?
- Repository : ViewModel
- Composable ๋ด์์ ํํํด์ฃผ๊ณ ๋๋ผ ์ ์๋ ๊ฒ์ Composable ๋ด์์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํจ. ๋ค๋ฅธ ๊ณณ์์ ๋ณ๊ฒฝ์ด ๋๊ฑฐ๋ ๋ฐ์์์ผ ํ๋ ๊ฒ๋ค์ ViewModel์์ ์ ์ฅํด์ ๊ด๋ฆฌํ์ฌ ์ง์ .
(Stateful Stateless ์ฐจ์ด ์ผ ์ ๋ + state ํธ์ด์คํ ์ฐพ์๋ณด๊ธฐ)
๋น์ฆ๋์ค ๋ก์ง์ด๊ธฐ์ ViewModel์ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ?
- ๋์ค
- ์ปดํฌ์ฆ ๊ณ ์
- Recomposition ๊ด๋ฆฌ ์ํ๊ธฐ
- StateFul & StateLess
- ํ๋ก์ ํธ ์ดํด
- ์ด๋ค ๊ธฐ์ ์ ์ ์ฌ์ฉํ๋์ง?
- ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง
- ์ด๋ป๊ฒ ์ฌ์ฉ ๋๋์ง
- ์ปดํฌ์ฆ ๊ณ ์
- ์ ์ง: ์๋๋ก์ด๋ ๊ณ ์ ๋๊ธฐ
- XML๋ถํฐ Compose๊น์ง ๋ชจ๋ ๊ณผ์ ์ดํด
- ๊ทผ๊ฑฐ ๋งํ ์ ์๊ฒ ํ๊ธฐ
- ํ์ค : ๋ด๊ฐ ์ฌ์ฉํด ๋ณธ ๊ฒ์ด๋ผ๋ฉด ๊ฒ์ํ์ง ์๊ณ ๋ ์ ์ค๋ช
ํ ์ ์๊ธฐ
- ์ ํํ ์ดํด์ ๊ทธ๊ฒ์ ์ ์ค๋ช ํ ์ ์๋ ๋ฅ๋ ฅ
- ๋ฌธ์ํ์ ๊ณ ์๊ฐ ๋๊ธฐ
- ์งํ : ์ด์ ์๋ ๊ฐ๋ฐ์ ์ต์ํด์ง๊ธฐ
- ์ด๋ค ์๊ฐ์ผ๋ก ๊ธฐ์ ์คํ์ ์ ํ๋์ง, ๋ฌธ์ ํด๊ฒฐ๊ณผ์ ๊ธฐ๋กํ๊ธฐ
- ์ ํธ
- ๊ทธ๋ฅ ๋ชฉํ : ์์ฑ๋์๋ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ โ ์ง์ธ๋คํํ ์๊ฐํ๊ณ ์ถ๋ค
- ๊ฐ์ธ ๋ชฉํ : compose, xml ์ฐจ์ด ๋ช ํํ๊ฒ ์ดํดํ๊ธฐ
๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
1์ฃผ์ฐจ
2์ฃผ์ฐจ
3์ฃผ์ฐจ
4์ฃผ์ฐจ
5์ฃผ์ฐจ
ํ์๋ก
1์ฃผ์ฐจ
2์ฃผ์ฐจ
3์ฃผ์ฐจ
4์ฃผ์ฐจ
5์ฃผ์ฐจ