~ Today I Learned ~
โ๏ธ ๋ฏธ๋ํ๋ก์ ํธ ๋ฐํํ ํบ์๋ณด๊ธฐ
โ๏ธ ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (์์ ๋ํ๊ธฐ)
โ๏ธ ๊ณ์ฐ๊ธฐ ๊ณผ์ ๋ค์ ์์ฑ ๋ฐ git ์
๋ก๋
โ๏ธ Git ์ปค๋ฐ ์ปจ๋ฒค์
(์งํ์ค) ์ง๊ธ๊น์ง ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํ ๋ด์ฉ ๋ณต์ต
(์งํ์ค) ํค์ค์คํฌ ๊ณผ์ ๊ตฌํ ๋ฐ ์ ์ถ
1. ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (์์ ๋ํ๊ธฐ)
- fold()์ foldIndexed()์ ๋ํ์ฌ ์ฒ์ ์ ํ๊ฒ ๋ ๋ ์ด๋ค.
๐ก fold() ํจ์
val absolutes = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val sumNumber = absolutes.fold(100) { sum, element ->
sum + element
}
println(sumNumber) // ์ถ๋ ฅ๊ฐ: 155
// ์ด๊ธฐ๊ฐ 100์ absolutes ๋ฐฐ์ด์ element ๋ค์ ํฉ 55๊ฐ ๋ํด์ง ๊ฐ 155๊ฐ ์ถ๋ ฅ
- ์ฃผ์ด์ง Int๋ก๋ง ๊ตฌ์ฑ๋ Array ํน์ Collection ์ ๋ชจ๋ element๋ค์ ์ฐ์์ ์ผ๋ก ๋ถ๋ฌ์ ๊ณ์ฐ
- fold ํจ์๋ ํ๋ผ๋ฏธํฐ๋ก initial๊ฐ(์ด๊ธฐ๊ฐ)์ ๋ฐ์
๐ก foldIndexed() ํจ์
val absolutes = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val signs = booleanArrayOf(false, false, true, true, false, false, true, true, true, true)
val sumWithIndex = absolutes.foldIndexed(0) {
idx, sum, element ->
println("index::: $idx \nsum::: $sum \nelement::: $element")
sum + if (signs[idx]) element else -element
}
- ๋ค๋ฅธ ๊ฑด fold()ํจ์์ ๋๊ฐ๊ณ , index๋ฅผ ๊ฐ์ด ๊ฐ์ ธ์จ๋ค๋ ๊ฒ์ด fold ํจ์์ ๋ค๋ฅธ ์
๐ก fold()์ reduce()์ ์ฐจ์ด?
// fold() ์ด์ฉ
val absolutes = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val sumNumber = absolutes.fold(100) { sum, element ->
sum + element
}
println(sumNumber) // ์ถ๋ ฅ๊ฐ: 155 (์ด๊ธฐ๊ฐ 100์ absolutes ๋ฐฐ์ด์ element ๋ค์ ํฉ 55๊ฐ ๋ํด์ง ๊ฐ)
// reduce() ์ด์ฉ
val absolutes = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val sumNumber = absolutes.reduce { acc, element ->
acc + element
}
println(sumNumber) // ์ถ๋ ฅ๊ฐ: 55
fold()์ reduce()๋ ๋ ๋ค ์ปฌ๋ ์ ์ ์์์ ๋ํ ๋์ฐ ์ฐ์ฐ์ ์ํํ๋ ํจ์์ง๋ง, ๋ช ๊ฐ์ ์ฐจ์ด์ ์ด ์์.
- ์ด๊ธฐ๊ฐ:
- fold(initial: T, operation: (acc: T, T) -> T): T: fold() ํจ์๋ ์ด๊ธฐ๊ฐ์ ๋ช ์์ ์ผ๋ก ์ง์ ํด์ผ ํจ
- reduce(operation: (acc: T, T) -> T): T: reduce() ํจ์๋ ์ด๊ธฐ๊ฐ์ ์ง์ ํ์ง ์์. ์ฒซ ๋ฒ์งธ ์์๊ฐ ๋์ฐ๊ธฐ์ ์ด๊ธฐ๊ฐ - ๋ฐํ ๊ฐ ํ์
:
- fold() ํจ์์ ๋ฐํ ๊ฐ์ ๋์ฐ ์ฐ์ฐ์ ๋ชจ๋ ์์์ ์ ์ฉํ ํ์ ์ด๊ธฐ๊ฐ๊ณผ ๊ฐ์ ํ์
- reduce() ํจ์์ ๋ฐํ ๊ฐ์ ๋์ฐ ์ฐ์ฐ์ ๋ชจ๋ ์์์ ์ ์ฉํ ํ์ ์์ฑ๋ ์ต์ข ๊ฒฐ๊ณผ์ ํ์ - ์์ธ ์ฒ๋ฆฌ:
- fold() ํจ์๋ ๋น ์ปฌ๋ ์ ์ ๋ํด ์๋ํ ์ ์๋๋ก ์ด๊ธฐ๊ฐ์ ์ ๊ณตํ๋ฏ๋ก, ๋น ์ปฌ๋ ์ ์ ๋ํด ์์ ํ๊ฒ ์๋
- reduce() ํจ์๋ ๋น ์ปฌ๋ ์ ์ ๋ํด ํธ์ถํ๋ฉด UnsupportedOperationException ์์ธ๊ฐ ๋ฐ์ - ๋ณ๋ ฌ ์ฒ๋ฆฌ:
- fold() ํจ์๋ ์ปฌ๋ ์ ์ด ํฌ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์์ (์ด๊ธฐ๊ฐ์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ)
- reduce() ํจ์๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ์ง ์์
์์ฝํ๋ฉด, fold() ํจ์๋ ์ด๊ธฐ๊ฐ์ ์๊ตฌํ๊ณ ๋น ์ปฌ๋ ์
์ ๋ํด์๋ ์์ ํ๊ฒ ์๋ํ๋ฉฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ํฉํ๋ค.
๋ฐ๋ฉด์ reduce() ํจ์๋ ์ด๊ธฐ๊ฐ์ ์๊ตฌํ์ง ์๊ณ ๋น ์ปฌ๋ ์
์ ๋ํด์๋ ์์ธ๋ฅผ ๋ฐ์์ํค๋ฉฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ์ง ์๋๋ค.
2. ๋ฏธ๋ํ๋ก์ ํธ ๋ฐํํ ํบ์๋ณด๊ธฐ
์ ์ฒด ๋ฐํ ํผ๋๋ฐฑ ๋ด์ฉ ์ ๋ฆฌ
- ๋ช๋ช ์กฐ๋ ๋ฐํ ์๊ฐ์ด ๋๋ฌด ๊ธธ๊ณ ๊ฐ๊ฒฐํ์ง ๋ชปํจ (์ด๋ ๊ฒ ๋ง๋ค์์ด์ ์ผ์ผํ ์๋ด X)
ํ์ ์๊ฐ๋ ๋ง์ง๋ง์ ํ๋ ๊ฒ ์ข์ผ๋ฉฐ,
๊ฐ๊ฐ์ธ์ ํ๊ธฐ๋ ๊ฐ๋ตํ๊ฒ ์์ฑํ๋ ๊ฒ ์ข์
์ค๋ณต๋๋ ๋ด์ฉ์ ์์ ๊ธธ ๋ฐ๋ - (2์กฐ ์ข์) ํธ๋ฌ๋ธ์ํ
๊ฒฝํ(๋ฌธ์ ๋ฐ ํด๊ฒฐ ๊ฒฝํ) ์ ์์ธํ ์์ฑํ๊ธฐ
๊ด๋ จ ์ฝ๋, ์ค๋ฅ ๋ด์ฉ๋ค์ ๋ณด์ฌ์ฃผ๋ฉฐ ์ค๋ช ํ๊ธฐ (๋ฌธ์ , ์๋, ๊ฒฐ๊ณผ 3๊ฐ์ง ๊ฐ๊ฒฐํ๊ฒ) - ํ์ํ ์ด๋ธ ๋ฑ์ ๋ณด์ฌ์ฃผ๋ฉด์, ๋จ์ํ '์ด๋ ๊ฒ ํ์ต๋๋ค' ๋ผ๊ณ ๋งํ๋ฉฐ ์ฝ์ด๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ๋ณด๋ค๋, '์~ํ'์๋ ๋ญํ๊ณ , '์~๋ชฉ'์๋ ๋ญํ๋์ง ๋ง๋ก ์ค๋ช ํด์ฃผ๋ ๊ฒ์ด ์ข์
- ๋ค๋ค ๋ฐฐ์ฐ๋ฌ ์จ ์๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ฐํ ๋ง๋ฌด๋ฆฌํ ๋ '์ ๊ฐ ~ํด์ ๋ถํธํ์๋ค' ๋ฑ์ ํํ์ ์์ ํ๊ธฐ
- ์ฑ ๋์์ AVD๋ฅผ ์๋ํด์ ์ง์ ๋ณด์ฌ์ฃผ๊ธฐ ๋ณด๋ค๋, ๋ นํํ ํ PPT์ ์ฒจ๋ถํด์ ์งํ ํ๋ ๊ฒ์ด ์ข์
- ๋ฐํ์ ์ด์ธ๋ฆฌ๋ ๋งํฌ, ํํ ๋ฑ์ ์๊ฐํ๊ธฐ (์ด๋ฒ ๋ฐํ์ ํด๋น ์ฌํญ ์์)
๋๋ถ์ด ํ์์ ์ํ๋ ์ฌ๋์ด ๋ฐํ๋ฅผ ๋งก๋ ๊ฒ์ด ๋ง์ผ๋, ๋ค๋ค ํ ๋ฒ์ฉ ๋ฐํ๋ฅผ ๊ฒฝํํ๋ฉด ์ข๊ฒ ์ - ๋ชฐ๋๋ ๊ฐ๋ : API์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ Splash ํ๋ฉด, LinearLayout ๋์ ConstraintLayout, ๊น ํฌ๋ผ์ผ์ ์ฌ์ฉํ๋ ๊ฑด ๋น์ถ ๋์ค์ ์ธ ๊ฒ ์ฌ์ฉ, ์์กด์ฑ ์ฃผ์ ์ ์ํ DSL ์ฌ์ฉ
์์ง๊น์ง ๋ฐํ๋ฅผ ํด๋ณด์ง ๋ชปํ์ง๋ง, ๋ค์์ ์ด๋ป๊ฒ ํด์ผํ ์ง๋ฅผ ์๊ธฐ ์ํด ๋ค๋ฅธ ๋ถ๋ค์ ๋ฐํ์ ํผ๋๋ฐฑ๋ค์ ๋์๋ดค๋ค.
3. ๊ณ์ฐ๊ธฐ ๊ณผ์ ๋ค์ ๊ตฌํ
- ์ปดํจํฐ์ ์ฌ๊ณ ๊ฐ ํ์
- ๋ฌธ์ ์ ์กฐ๊ฑด์ ์ง์คํ๋ฉฐ, ์ด๋ค ์์๋ก ์คํํ ๊ฒ์ธ๊ฐ๋ฅผ ์๊ฐ
- ๋ ๋ฒจ 5๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ํ์ ์ฐ์ฐ๊ณผ ์คํ์ ๋ํ ๊ฐ๋
์ด ๋ช
ํํ ์กํ์์ด์ผ ํ๋๋ฐ,
์คํ ๋ถ๋ถ์ ๋ช ํํ ๊ณต๋ถํ๊ณ ๋ ๋ค์ ๋ค์ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค.
+ ๋ ๋ฒจ5 ๊ด๋ จ ์๋ ค์ฃผ์ ๋งํฌ (๋งํฌ)
4. Git ์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์
- ๊น ํ๋ก์ฐ๋ฅผ ์ ๋ฆฌํ๊ธฐ ์ ์, ๋จผ์ ์ปค๋ฐ ๋ฉ์์ง๋ถํฐ ๋๋ฌด ์ด์ํ๊ฒ ์์ฑํ๊ณ ์๋ ๊ฒ ๊ฐ์ ์ปค๋ฐ ์ปจ๋ฒค์ ์ ์ฐพ์๋ณด์๋ค.
5. ํค์ค์คํฌ ๊ณผ์ ๊ตฌํ (Lv 0 ~ 3)
- ๊ตฌํ ์ค
~ Trouble Shooting ~
1. Git push์ Merge ์ค๋ฅ
- Git์์ ๋ ํฌ์งํ ๋ฆฌ ๋ด์ ํด๋๋ฅผ ์ง์ฐ๊ณ ๋ค์ ์ ๋ก๋ํ๋ ๊ฒ ๊ฐ๋จํ ๊ฑฐ๋ผ ์๊ฐํด์, ์ถฉ๋์ ๋ฌด์ํ๊ณ ํด๋ ์ญ์ ํ push, ๋ค์ ๋์ผํ ์ด๋ฆ์ ํด๋๋ฅผ ๋ง๋ค์ด Merge, pushํ๋๋ ๋๋ฆฌ๊ฐ ๋ฌ๋ค.
- ์์ง ๊น ์ฌ์ฉ์ด ์ต์์น ์์ผ๋ ๋ ํฌ์งํ ๋ฆฌ ํ๋ ์์ ํด๋๋ก ๊ด๋ฆฌํ๊ธฐ๋ณด๋จ, ํ๋ก์ ํธ ๋ณ๋ก ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ ์ข๋ค๋ ๋ง์์ ๋ค์๋ค.
- ๋ค์์๋ ์ถฉ๋์ด ๋๋ฉด ๊ทธ ๋ ๋ค์ ์ง๋ฌธํ๊ธฐ๋ก. ์์ง๋ ๋ฌธ์ ์ ์์ธ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ด๊ฐ ๋ญ ์๋ชปํ๋์ง์ ๋ํ ์๊ฐ์ ์ ๋ ๊น์ง ํด๋ณผ ์๊ฐ์ด๋ค.
~ Retrospect ~
์ด๋ฒ ํ์ ์ค์ ์ค๋ ฅ์ด ๋ฐ์ด๋ ๋ถ๋ค์ด ๋ง์์, ์์ผ๋ก ๊ณ์ ๋๋ ํ๋ก์ ํธ๋ค์ ๋ฌธ์ ์์ด ๋ฐ๋ผ๊ฐ๋ ค๋ฉด ๋๋ ์ด์ฌํ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค. 9-21์ ์ง์ค๋ ์ข์ง๋ง, ๋๋๊ณ ๋์๋ ๊ณผ์ ๊ตฌํ๊ณผ ์ถ๊ฐ ํ์ต์ ํ์จ์ผ ๊ฒ ๋ค.