Skip to content

๐Ÿ“† Daily Scrum

๋ฐ•๋ช…๋ฒ” edited this page Dec 7, 2022 · 62 revisions

๊ธฐ๋กํ•˜๋Š” ์‚ฌ๋žŒ

image

โœ… Daily 01

Wiki

  • Ground Rule
    • ๋ช‡์‹œ๋ถ€ํ„ฐ ๋ช‡์‹œ๋ฅผ ์ฝ”์–ด ํƒ€์ž„์œผ๋กœ ํ• ์ง€
    • ๋ฐฅ์‹œ๊ฐ„ ๋“ฑ๋“ฑ
  • Convention
    • Git, Resource, Kotlin ์ปจ๋ฒค์…˜
  • Setting
    • ktlint ์ ๊ทน ํ™œ์šฉ

ํ”„๋กœ์ ํŠธ

  • ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ํ™œ์šฉ
  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜
  • gradle -> kts ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ์šฉ
    • ์—ฌ๋Ÿฌ import ๊ตฌ๋ฌธ๋“ค List๋กœ ํ•ฉ์ณ์„œ Boilerplate Code ์ œ๊ฑฐ

๋ฆฌ๋ทฐ์–ด๋‹˜๊ณผ์˜ ๋งŒ๋‚จ

  • ์ฒซ์ฃผ๋Š” ์ˆ˜์š”์ผ 20์‹œ์— ๋งŒ๋‚จ์„ ๊ฐ–๊ธฐ๋กœ ๊ฒฐ์ •
  • ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ ์˜ˆ์ •์ธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…

โœ… Daily 02

์œ„์น˜ ๊ถŒํ•œ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ถŒํ•œ์„ ์š”์ฒญ
  • ๊ถŒํ•œ์„ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ
    • ํ™ˆ ํ™”๋ฉด ์ƒ๋‹จ์— ์œ„์น˜ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” UI
  • ์œ„์น˜ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
    • ํ™ˆ ํ™”๋ฉด ์ƒ๋‹จ์— ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ฅธ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ชฉ๋ก UI
    • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ถ”๊ฐ€์™€ ๋™์‹œ์— ํ•ด๋‹น ๋ธŒ๋žœ๋“œ๋ฅผ DB์— ์ €์žฅ

๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ถ”๊ฐ€

  • ์นด์นด์˜คํ†ก, ๋ฉ”์„ธ์ง€ ๋“ฑ์—์„œ ์ด๋ฏธ์ง€ ์ „๋‹ฌ์„ ํ†ตํ•ด ์ถ”๊ฐ€
  • ์•ฑ ๋‚ด์—์„œ + ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ถ”๊ฐ€
    • ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ์ด๋™
  • ๋ฐ”์ฝ”๋“œ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ํ™•์ธ
  • ์ž๋™์™„์„ฑ
    • ์นด์นด์˜คํ†ก, ํ‚คํ”„ํ‹ฐ์‡ผ, ์‹œ๋Ÿฝ, ์‚ก์˜ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ด๋ฏธ์ง€์—์„œ ์ž๋™ ์ถ”์ถœ
    • ์„ฑ๊ณต์‹œ, ์ด๋ฏธ์ง€๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉด ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅ
    • ์‹คํŒจ์‹œ, ์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ๋“œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ์ถ”๊ฐ€
    • ๋ชจ๋“  ํ…์ŠคํŠธ ๊ธ์–ด ์™€์„œ AutoCompleteTextView

๊ธฐ๋Šฅ ๋ช…์„ธ์„œ ์ž‘์„ฑ

  • ํ™”๋ฉด > Epic > Story > Task - ๊ฐœ๋ฐœ ์šฐ์„ ์ˆœ์œ„ - ์˜ˆ์ƒ ์†Œ์š”์‹œ๊ฐ„ - ์Šคํ”„๋ฆฐํŠธ

โœ… Daily 03

๋ชจ๋ธ ์ •์˜

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ(๊ณตํ†ต)
  • ๊ฐ์ž ์‚ฌ์šฉํ•  ๋ชจ๋ธ
  • ์กฐ์œจ

์•Œ๋žŒ

  • ์•Œ๋žŒ๋งค๋‹ˆ์ €
  • ์›Œํฌ๋งค๋‹ˆ์ €

โœ… Daily 04

  • Android Studio ์ด์Šˆ ์—ฐ๋™
  • Projects ์‚ฌ์šฉ๋ฒ• ๊ณต์œ 
  • Milestone ์‚ฌ์šฉ๋ฒ• ๊ณต์œ 
  • Projects, Milestone ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •
  • PR approve ํ…Œ์ŠคํŠธ
  • PR Template ์ถ”๊ฐ€
  • ๋ชจ๋“ˆ์— ๋”ฐ๋ฅธ Model ์ด๋ฆ„ ์ปจ๋ฒค์…˜ ์ •์˜
  • Domain ๋ชจ๋“ˆ์˜ Model๊ณผ Usecase ์ •์˜

์ด์Šˆ ๋ผ๋ฒจ ์ถ”๊ฐ€

- feat : ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
- refactor : ๋ฆฌํŒฉํ† ๋ง
- fix : ๋ฒ„๊ทธ / ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์ˆ˜์ •
- bug : ๋ฒ„๊ทธ ์กด์žฌ
- style : ๋ ˆ์ด์•„์›ƒ, ์ปจ๋ฒค์…˜ ์ž‘์—…
- chore : ์žก์ผ ex) gradle dependency
- test : ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ
- docs : ๋ฌธ์„œ ์ž‘์—…

PR Template

resolved #number

## ์ž‘์—… ๋‚ด์šฉ

> ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ์ ์–ด์ฃผ์„ธ์š”!

## ์ฒดํฌ๋ฆฌ์ŠคํŠธ
- [ ] Assignees ์„ค์ •
- [ ] Labels ์„ค์ •
- [ ] Projects ์„ค์ •
- [ ] Milestone ์„ค์ •

## ๋™์ž‘ ํ™”๋ฉด

> ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŒจ์Šคํ•ด์ฃผ์„ธ์š”!

## ๋ฒ„๊ทธ

> ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŒจ์Šคํ•ด์ฃผ์„ธ์š”!

๋ชจ๋ธ ์ด๋ฆ„ ์ปจ๋ฒค์…˜ ์ •์˜

Data
Model (Room) / Data (Retrofit, Firebase)

Domain
PostFix ๊ฐ€ ์—†์Œ

Presentation 
UIModel
sealed class ์˜ ์ž์‹์€ UIModel ์„ ์•ˆ๋ถ™์ž„ 

โœ… Daily 06

๊ฐ์ž ์ด๋ฒˆ์ฃผ ์–ด๋–ค ๊ฒƒ์„ ํ• ์ง€ ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš์„ ๋Œ€๋žต์ ์œผ๋กœ๋งŒ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค!

์ด์ง€ํ›ˆ

  • ์›” : ์นด์นด์˜ค ์„œ์น˜๋กœ ์ฐพ์€ ๋ธŒ๋žœ๋“œ ์œ„์น˜๋“ค ๋„ค์ด๋ฒ„ ๋งต์— ๋งˆํฌ ํ•ด์ฃผ๊ธฐ / Beep Tech์— Mockk ๊ด€๋ จ ์ •๋ฆฌ ๊ธ€ ์˜ฌ๋ฆฌ๊ธฐ
  • ํ™” : ๋งต ํ•˜๋‹จ ViewPager2 ์ ์šฉ (๊ธฐํ”„ํ‹ฐ์ฝ˜ ์นด๋“œ ๋ทฐ)
  • ์ˆ˜ : ์นด๋“œ๋ฅผ ํด๋ฆญํ–ˆ์„๋•Œ detail ํŽ˜์ด์ง€ ์ด๋™ / ์นด๋“œ๋ทฐ ์Šคํฌ๋กคํ• ๋•Œ ๋ธŒ๋žœ๋“œ๊ฐ€ ๋ณ€๊ฒฝ ๋˜๋ฉด map์—์„œ ์œ„์น˜๋„ ๋ณ€๊ฒฝ
  • ๋ชฉ : ํ˜„์žฌ ์œ„์น˜์— ๋”ฐ๋ผ์„œ ๋ธŒ๋žœ๋“œ๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š”๋ฐ ๊ฐ section์„ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ์ง€ ๊ณ ๋ฏผํ•˜๊ณ  flow ๊ทธ๋ ค๋ณด๊ธฐ

๋ฐ•๋ช…๋ฒ”

  • ์›” - (๊ธฐํ”„ํ‹ฐ์ฝ˜)์„ธ๋ถ€ํ™”๋ฉด xml ์ž‘์„ฑ + ๊ธฐํ”„ํ‹ฐ์ฝ˜ FakeRepository
  • ํ™”, ์ˆ˜ - ์„ธ๋ถ€ํ™”๋ฉด ๊ด€๋ จ Room DB ๊ตฌ์ถ•
  • ๋ชฉ - ์„ธ๋ถ€ํ™”๋ฉด๊ณผ Room ์—ฐ๋™

์–‘์ˆ˜์ง„

  • ์›”: ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด, ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ๋ณด์™„
  • ํ™”: ์ง€๋ฌธ ์ธ์‹
  • ์ˆ˜: ์ง€๋ฌธ ์ธ์‹
  • ๋ชฉ: PIN ์„ค์ • ๊ด€๋ จ ๊ณ ๋ฏผ ํ›„ ๊ตฌํ˜„์‹œ์ž‘ (์–ด๋””์— ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์•”ํ˜ธํ™”๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”๊ฐ€?)

๊น€๋ช…์„

  • ์›” : ๊ฐค๋Ÿฌ๋ฆฌ ํŽ˜์ด์ง• ๋ฐ ์„ ํƒ ๊ตฌํ˜„
  • ํ™” : ํ…Œ์ŠคํŠธ์ผ€์ด์Šค junit5
  • ์ˆ˜ : image crop ui ๊ตฌํ˜„์‹œ์ž‘
  • ๋ชฉ : ๊ตฌํ˜„ ์ •๋ฆฌ ๋ฐ ๋ณด๊ฐ•

์Šคํฌ๋Ÿผ์— ๋‚˜์˜จ ์ด์•ผ๊ธฐ

  • ๊ฐ ํฐํŠธ๋“ค string font styles ๋งŒ๋“ค๊ธฐ

image

โœ… Daily 07

์ƒˆ๋ฒฝ ๋‚ด์— ์˜ฌ๋ผ์˜จ PR๋“ค์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ช…์„

    • PagingData cachedIn์ด ์‚ฌ์šฉ๋˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ
      • ์•ˆ ๋ถ™์—ฌ๋„ ์ž‘๋™์€ ๋˜๋Š”๋ฐ, ์—ฌ๋Ÿฌ๋ฒˆ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋ฉด ์•ฑ์ด ํ„ฐ์ง. ์•„๋งˆ ์บ์‹œ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ„ฐ์ง€๋Š” ๊ฒƒ ๊ฐ™์Œ
      • ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ดค๋Š”๋ฐ shareIn์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์„œ stateIn์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ๋‚˜ ์‹ถ๋”๋ผ๊ณ ์š”
      • collectํ•  ๋•Œ ๊ฒฝ๊ณ  ๋œจ๋Š” ๊ฒƒ์€ ์ฝ”๋ฃจํ‹ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์ด ์™„์ „ ์˜ˆ์ „ ๊ฒƒ์ด์–ด์„œ ๊ทธ๋žฌ๋˜ ๊ฑฐ์˜€์Œ~
    • cacheIn์€ ๋ทฐ๋ชจ๋ธ์—์„œ ํ•˜๋Š” ๊ฒŒ ๋งž์„๊นŒ์š”?
      • ๋„ค. ๊ทธ์ •๋„์˜ ๊ฐ€๊ณต์€ ๋ทฐ๋ชจ๋ธ์ด ๋งž์„ ๋“ฏ
    • ์™œ ํŽ˜์ด์ง•์€ ์ฝœ๋“œ๋กœ ๋„˜๊ฒจ์ค„๊นŒ์š”?
      • ํ•ซ์ผ ๋•Œ๋Š” ์ „๋ถ€ ๋‹ค ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ ์ฝœ๋“œ๋กœ ์ฃผ๋Š”๊ฒŒ ์•„๋‹๊นŒ์š”? ์ฝœ๋“œ๋ฉด ์กฐ๊ธˆ์”ฉ ๋“ค๊ณ  ์žˆ์–ด๋„ ๋˜๋‹ˆ๊นŒ์š”
      • BindingAdapter๋กœ ํ•ซ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์—ˆ๋˜ ๊ฒƒ์„ ์‚ญ์ œ
  • ๋ช…๋ฒ”

    • ์ƒ์„ธํ™”๋ฉด์—์„œ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์‚ฌ์šฉ ๋ฒ„ํŠผ์„ ํ™”๋ฉด ํ•˜๋‹จ์— ๋ถ™์ด๋‹ˆ ๋ชป์ƒ๊ฒจ์„œ ์นฉ์œผ๋กœ ๋ณ€๊ฒฝ. ๋ฒ„ํŠผ์ด ํ™”๋ฉด ์•„๋ž˜์— ์žˆ์„ ๋•Œ ์นฉ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜๋กœ ์ด๋™
    • isVisible์ด setFlag๊ฐ€ ๋  ๋•Œ invalidate ๋จ์„ ํ™•์ธํ•จ
  • ์ง€ํ›ˆ

    • LocationManager -> FusedLocationProvider
    • ์‹œ๊ฐ„ ๊ณ„์‚ฐ์— 9์‹œ๊ฐ„์˜ ์˜ค์ฐจ๊ฐ€ ์žˆ์„ ๊ฑฐ์—์š” - ๋ช…์„ -

โœ… Daily 08

์ˆ˜์ง„

  • ์ง€๋ฌธ ์ธ์‹ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ ๊ณต์œ 
  • FingerprintManager์˜ ๊ฒฝ์šฐ ์ง€๋ฌธ ์ธ์‹ UI๋ฅผ BottomDialog ๋กœ ๋งŒ๋“ค๊ณ  show() ํ•ด์ค˜์•ผ ์ง€๋ฌธ ์ธ์ฆ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ˆ˜์ •ํ•  ์˜ˆ์ •

์ง€ํ›ˆ

  • Mokk ๊ด€๋ จ ์ •๋ฆฌ
  • ์œ„์น˜ ์บ์‹ฑํ•œ ์ด์œ  ์ •๋ฆฌ
  • ์‚ฌ์šฉ์ž ์œ„์น˜ ์ค‘์‹ฌ์œผ๋กœ ๋‚˜๋ˆŒ ์ง€ ๊ณ ๋ฏผ
    • ๊ฒน์น˜๋Š” ์˜์—ญ์ด ๋ฐœ์ƒํ•œ๋‹ค
  • (์ˆ˜์ง„) ์ขŒํ‘œ๋ฅผ ๊ฑฐ๋ฆฌ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์œผ๋กœ ๊ทธ๋ฃนํ•‘

๋ช…์„

  • ๊ฐค๋Ÿฌ๋ฆฌ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ ๊ณต์œ 
  • ์‚ฌ์ง„ ์„ ํƒ ์‹œ ์„ ํƒ๋œ ์‚ฌ์ง„ UI ๊ณ ๋ฏผ
    • position ์„ ๋„˜๊ฒจ์ฃผ๊ณ  NotifiItemChanged(position) ์„ ํ˜ธ์ถœํ•˜๋ฉด ๋˜๊ธด ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ํ•˜์–—๊ฒŒ ๊นœ๋นก๊ฑฐ๋ฆฌ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค
    • xml ์— selection ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ๋„˜๊ฒจ์ค˜์„œ ์ฒ˜๋ฆฌํ•จ (๋ฉ˜ํ† ๋‹˜๊ป˜ ์งˆ๋ฌธ ์˜ˆ์ •)

๋ช…๋ฒ”

  • ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์ถ”๊ฐ€
  • Material Theme ์ ์šฉ
    • ๋ฒ„ํŠผ ํ…Œ๋งˆ ์•ˆ ๋จน๋˜ ๋ฌธ์ œ ๋ช…์„๋‹˜ ๋„์›€์œผ๋กœ MaterialButtonStyle ๋กœ ์ง€์ •ํ•˜์—ฌ ํ•ด๊ฒฐ
    • ํˆด๋ฐ” ํƒ€์ดํ‹€์— colorOnPrimary ๊ฐ€ ๋จน์ง€ ์•Š๋Š” ๋ฌธ์ œ ์กด์žฌ -> ๊ธฐ๋ณธ์ ์œผ๋กœ title ์ƒ‰์ƒ์€ theme ์„ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  ๊ฒ€์ •์ƒ‰๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ. ๋”ฐ๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค
    • BottomSheetDialog ์—์„œ Theme ์ด ์•ˆ ๋จน๋Š” ๋ฌธ์ œ -> BottomSheetDialog ๊ฐ€ ๋”ฐ๋กœ Theme ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •

โœ… Daily 09

  • DatePickerDialog ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋„์ค‘ ๋ฒ„ํŠผ์˜ ์ƒ‰์ด ์ ์šฉ์ด ๋˜์ง€ ์•Š๋˜ ๋ฌธ์ œ

    • ๊ตฌ๊ธ€์ฝ”๋“œ[https://android.googlesource.com] ๋ฅผ ํ™•์ธ
    • Dialog ๋ฅผ show ํ•˜๊ธฐ ์ „์—๋Š” AlartController ์—์„œ inflate ๋ฅผ ํ•˜์ง€ ์•Š์•„ ์ƒ‰์„ show ์ดํ›„์— ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ
  • Handler(Looper.getMainLooper()) ๋ฅผ ์ด์šฉํ•˜์—ฌ biometricPrompt.authenticate ๋ฅผ ์‹คํ–‰ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

    • ์ง€๋ฌธ ์ธ์‹์„ ์š”์ฒญ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ Fragment ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์‹คํ–‰์„ ํ•˜๋‹ค ๋ณด๋‹ˆ Fragment์˜ Transaction๊ณผ biometric ์—์„œ FragmentDialog ์˜ Transaction ๊ฐ๊ฐ์ด ์‹คํ–‰์ด๋˜ ์•ฑ์ด ์ฃฝ๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด biometric ์˜ ์‹คํ–‰์„ ๋ฏธ๋ฃธ
    • ์‹คํ–‰๋งŒ ๋ฏธ๋ฃจ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— CoroutineScope(Dispatchers.Main).launch ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋Œ€์ฒดํ•˜๊ณ  job ์„ ์ด์šฉํ•˜์—ฌ ์ •๋ฆฌ
    • activity๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— activity.lifecycleScope.launch(Dispatchers.Main) ์„ ์‚ฌ์šฉํ•˜๋ฉด job์„ ์ •๋ฆฌ ํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • activity.lifecycleScope.launch๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด Dispatchers.Main.immediate ์ด๊ธฐ ๋•Œ๋ฌธ์— Transaction์˜ ์ถฉ๋Œ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค
    • ์ธ์ฆ ๋ฐฉ์‹์ด ๋ฐ”๋กœ ์‹คํ–‰์ด ์•„๋‹ˆ๋ผ ์„ ํƒ์„ ํ•˜๋Š” ํ”Œ๋กœ์šฐ๊ฐ€ ์ƒ๊ฒจ์„œ ์ด์ œ ๋™์ž‘์„ ๋ฏธ๋ฃฐ ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๋‹ค.
  • ์ฝ๊ธฐ ํž˜๋“  ์ฝ”๋“œ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ์ฃผ์„๊ณผ ํ”Œ๋กœ์šฐ๋ฅผ ์ž‘์„ฑํ•˜์ž

/*
* CropWindow ์˜ ๊ฐ€๋กœ์™€ ์„ธ๋กœ๊ฐ€ ํ™”๋ฉด์˜ 50% ์ดํ•˜์˜ ํฌ๊ธฐ๊ฐ€ ๋œ๋‹ค๋ฉด,
* CropWindow ์€ (1 <= a < 2) ์˜ ๊ฐ’์„ ๊ณฑํ•ด๋„ ํ™”๋ฉด ๋ณด๋‹ค ํฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— scale ์ด 1 ์ด์ƒ์ด ๋œ๋‹ค.
* 1.5 ๋ฅผ ๊ณฑํ•ด ์ฃผ๋Š” ์ด์œ ๋Š” ํ•œ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์ด ์ปค์ง€๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด ์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค
*/
if (zoom < MAX_ZOOM && cropWidth < width / 2f && cropHeight < height / 2f) {
    val scaleW = width / cropWidth * 1.5f
    val scaleH = height / cropHeight * 1.5f
    newZoom = minOf(scaleW * zoom, scaleH * zoom, MAX_ZOOM)
}

โœ… Daily 10

2์ฃผ์ฐจ ๋ฐ๋ชจ

  • ์šฐ๋ฆฌ๋ผ๋ฆฌ์˜ ๊ธฐ์ˆ  ๊ณต์œ  && ์„œ๋กœ์˜ ๋กœ์ง์ด๋‚˜ ์ฝ”๋“œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์„ ์ •ํ•ด๋ณด๊ธฐ

๐Ÿป ๊น€๋ช…์„

์ข‹์•˜๋˜์ 

  • ๊ธฐ๋ณธ์ ์ธ ์ž‘์—…์„ ๊ฑฐ์˜๋‹ค ์ง„ํ–‰๋˜์–ด 4์ฃผ์ฐจ ๋ถ€ํ„ฐ๋Š” ๋‹ค๋“ฌ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™๋‹ค

์•„์‰ฌ์šด์ 

  • ์ž‘์—…ํ•œ ๋‚ด์šฉ์—๋Œ€ํ•ด ์ •๋ฆฌํ•  ์‹œ๊ฐ„์ด ์ ์—ˆ๊ณ 
  • ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ฃผ์„์ด ํ•„์š”ํ•ด ๋ณด์˜€๋‹ค
  • ๊ทธ๋ฆฌ๊ณ  ๋กœ์ง์— ๋Œ€ํ•œ ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋‘ฌ์•ผ ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค

๊ฐœ์„ 

  • ๋ฉ”๋ชจ์™€ ์ •๋ฆฌ์— ์กฐ๊ธˆ๋” ์‹ ๊ฒฝ์„ ์จ์•ผ๊ฒ ๋‹ค

๐Ÿปโ€โ„๏ธ ๋ฐ•๋ช…๋ฒ”

์ข‹์•˜๋˜ ์ 

  • ํ˜ผ์ž ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ™์ด ํ•˜๋Š” ํŒ€์›๋“ค์ด ์žˆ์œผ๋‹ˆ ๋” ๋ชฐ๋‘ํ•ด์„œ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

์•„์‰ฌ์šด ์ 

  • UI ์ž‘์—…์ด ๋“ค์ธ ์‹œ๊ฐ„์— ๋น„ํ•ด ์ƒ๊ฐ๋ณด๋‹ค ๋”๋””๊ณ  ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ๋‹ต๋‹ตํ–ˆ๋‹ค

๊ฐœ์„  ์‚ฌํ•ญ

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ฉด ์ข€ ๋‚ซ์ง€ ์•Š์„๊นŒ?!

๐Ÿฃ ์ด์ง€ํ›ˆ

์ข‹์•˜๋˜ ์ 

  • ํŒ€์›๋“ค๊ณผ ๊ฑฐ์˜ 10์‹œ๋ถ€ํ„ฐ ์ƒˆ๋ฒฝ2์‹œ๊นŒ์ง€ ๋ชจ์—ฌ์„œ ๊ฐ™์ด ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„๋•Œ ๋น ๋ฅด๊ฒŒ ํšŒ์˜๋„ ๊ฐ€๋Šฅํ–ˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€์™€ ๊ฐ™์ด ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๊ธฐ๋ถ„์ด ๋“ค์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

์•„์‰ฌ์šด ์ 

  • ์ฒ˜์Œ์— ๊ณ„ํšํ–ˆ๋˜ ์„œ๋กœ์˜ ์—ญํ• ์ด ๋ฐ”๋€Œ์–ด๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‚˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํŒŒํŠธ๋ฅผ ๋“ค์–ด๊ฐ€๋„ ๋ฐ”๋กœ๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ƒ๊ฐ์ด ๋“ค๊ณ  ๋˜๊ฒŒ ์‚ฌ์†Œํ•œ ๊ฒƒ๋“ค๋„ ์ •๋ฆฌํ•˜์ž ๋ผ๊ณ  ํ–ˆ์ง€๋งŒ ์ž˜ ์•ˆ์ง€์ผœ์ง€๋Š”๊ฑฐ ๊ฐ™์•„์„œ ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ์‚ฌํ•ญ

  • ์„œ๋กœ์˜ ์—ญํ• ์ด ๋ฐ”๋€Œ์–ด๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝ”๋“œ์˜ ์ดํ•ด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š”๋ฐ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋งŒ์œผ๋กœ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋Š๊ปด ๋งค์ฃผ ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ์„œ๋กœ์˜ ๊ตฌํ˜„์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  Tech ์— ๋„ˆ๋ฌด ๋ถ€๋‹ด์„ ๊ฐ–์ง€ ๋ง๊ณ  ์ž‘์€ ๋‹จ์œ„๋„ ์˜ฌ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ป ์–‘์ˆ˜์ง„

์ข‹์•˜๋˜ ์ 

  • ๊ฒŒ๋”์—์„œ ํ•˜๋ฃจ์ฃ™์ผ ๋ถ™์–ด์„œ ํ•˜๋‹ˆ๊นŒ ์™ธ๋กญ์ง€ ์•Š๊ณ  ๊ฐ•์ œ์„ฑ๋„ ๋ถ€์—ฌ๋˜์–ด์„œ ์ข‹์•˜๋‹ค
  • ์ด์Šˆ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ ์˜๋…ผํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฒŒ๋”ํƒ€์šด ๋ชจ๊ฐ์ฝ”๊ฐ€ ์ข‹๋‹ค
  • ๋Šฅ์ง€์ฒ˜์ฐธ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์œผ๋‹ˆ ๊ฐœ์„ ์ ์„ ํŒŒ์•…ํ•˜๊ณ  ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

์•„์‰ฌ์› ๋˜ ์ 

  • ์š”๊ตฌ์‚ฌํ•ญ ์„ค๊ณ„์„œ์— ๊ธฐํ•œ์ด๋ž‘ task ๋‹ค ์ •ํ•ด๋†“๊ณ  ์ •์ž‘ ๊ฐœ๋ฐœํ•  ๋• ์ฐธ๊ณ  ํ˜น์€ ์ƒํƒœ ๊ฐฑ์‹ ์„ ํ•˜์ง€ ์•Š์•˜๋‹ค
  • ์ž‘์—…์„ ํ•  ๋•Œ๋งˆ๋‹ค ์ด์Šˆ ํ•˜๋‚˜์”ฉ ์˜ฌ๋ฆฌ๊ณ  ํ•˜๊ณ  ์˜ฌ๋ฆฌ๊ณ  ํ•˜๊ณ  ํ•ด์„œ ๊ณ„ํš์„ ์ฒ ์ €ํžˆ ์งœ์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค

๊ฐœ์„ ํ•  ์ 

  • ๋‹ค์Œ์ฃผ์—๋Š” ์›”์š”์ผ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜์—์„œ ์ž‘์—…ํ•  ์ด์Šˆ๋ฅผ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•˜๊ณ  ๊ณ„ํš์— ๋งž๊ฒŒ ํ•ด๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค
  • ์‹ค์ œ๋กœ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„๋„ ์ฒดํฌํ•ด์„œ ๋‹ค๋ฅธ ์ž‘์—…์˜ ์˜ˆ์ƒ ์‹œ๊ฐ„์„ ์ •ํ•˜๋Š”๋ฐ ์ฐธ๊ณ ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค

โœ… Daily 11

์ด์ง€ํ›ˆ

  • ์นด์นด์˜ค ์„œ์น˜ ๊ฒฐ๊ณผ 9๊ฐœ์˜ section์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ €์žฅ
  • ์นด์นด์˜ค ์„œ์น˜ ๊ฒฐ๊ณผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
  • ํ•˜๋‹จ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ViewPager2๋กœ ์ „ํ™˜์‹œ ๊ทผ์ฒ˜์— ์žˆ๋Š” ๋ธŒ๋žœ๋“œ ์ถ”์ฒœ
  • ๋„ค์ด๋ฒ„ ๋งต์— ๋ธŒ๋žœ๋“œ ๋งˆ์ปค ํด๋ฆญํ–ˆ์„๋•Œ ํ•ด๋‹นํ•˜๋Š” ์ฟ ํฐ๋“ค ๋ณด์—ฌ์ฃผ๊ธฐ

๊น€๋ช…์„

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ถ”๊ฐ€ ํ™”๋ฉด ๊ตฌํ˜„
  • ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฏธ์ง€ ์ž๋™ ํŒŒ์‹ฑ
  • CropImageView๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํฌ๋กญ
  • CropImageView์˜ Clip์„ ์ด์š”ํ•œ ๊ทธ๋ฆผ์ž ์ฒ˜๋ฆฌ์™€ Zoom๊ธฐ๋Šฅ ์ถ”๊ฐ€

์–‘์ˆ˜์ง„

  • ์ง€๋ฌธ ์ธ์ฆ Biometric Compat์œผ๋กœ Migration
  • PIN ์•”ํ˜ธํ™”ํ•˜์—ฌ DataStore์— ์ €์žฅ
  • ์„ค์ • ๊ด€๋ จ ์ž‘์—…
  • ์•ฑ ์ดˆ๊ธฐ ์‹คํ–‰ ์‹œ ์œ„์น˜ ๊ถŒํ•œ ์š”์ฒญ

๋ฐ•๋ช…๋ฒ”

  • DB์—์„œ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์•„์ด๋””๋กœ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์‚ฌ์šฉ ์™„๋ฃŒ ๋ฒ„ํŠผ ๋™์ž‘ ๊ตฌํ˜„
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๊ณต์œ  ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ

๊ธˆ์ผ ์Šคํ”„๋ฆฐํŠธ ๋‚ด์šฉ

โœ… Daily 12

์–ด์ œ์˜ ์ž‘์—… ๋ณด๊ณ 

๊น€๋ช…์„

  • ์‚ฌ์ง„ ์„ ํƒ ํ™”๋ฉด - RecyclerView์˜ Decoration ๊ด€๋ จ ์ˆ˜์ •
  • ์‚ฌ์ง„ ํŽธ์ง‘ ํ™”๋ฉด
    • ํ„ฐ์น˜๋ฒ”์œ„ ์ •์˜, ์ด๋™, ํฌ๊ธฐ ์กฐ์ ˆ ๋ฐฉ์‹ ์„ค๋ช…
    • ์ด๋ฒคํŠธ ์ •์˜์™€ ํ™œ์šฉ ๋ฐฉ์‹ ์„ค๋ช… (์ด๋™, ํฌ๊ธฐ์กฐ์ ˆ, NONE)
    • ํ™”๋ฉด ๊ทธ๋ฆฌ๊ธฐ (์„€๋„์šฐ, ์—ฃ์ง€, ์ฝ”๋„ˆ)
    • ์คŒ ์›๋ฆฌ ์„ค๋ช… ํ–‰๋ ฌ ์—ฐ์‚ฐ..

์ด์ง€ํ›ˆ

  • ๋„๋ถ„์ดˆ ๋ณ€ํ™˜
    • ์ดˆ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๊ณ„์‚ฐํ•˜๊ณ  ๋‹ค์‹œ ๋ณ€ํ™˜ํ•˜๋ฉด ๋˜์ง€ ์•Š๋Š”๊ฐ€?
    • ์•„
  • ์„น์…˜ ๋ณ„ ์บ์‹ฑ๊ณผ ๊ฒ€์ƒ‰
  • ๋ช…๋ฒ”๋‹˜์˜ DbResult ์™€ UIState๋ฅผ ํ•ฉ์น  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ
  • SharedFlow test ํ• ๋•Œ์˜ ์ด์Šˆ (Turbin)

๋ฐ•๋ช…๋ฒ”

  • Room์—์„œ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
  • Intent๋กœ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ํ‚ค ๊ฐ’์„ ๋„ฃ์–ด์„œ ์ƒ์„ธํ™”๋ฉด์„ ์—ด๊ธฐ
  • ๋ชฉ๋ก, ์ง€๋„, ์•Œ๋ฆผ์—์„œ ํ‚ค๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๊ทธ๊ฑฐ ๋„์›Œ์ค€๋‹ค.
  • ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋„ ๊ด€์ธกํ•˜์—ฌ Dialog ์ถœ๋ ฅ

์–‘์ˆ˜์ง„

  • PIN UI ๊ตฌ์„ฑ
    • UI ์ˆ˜์ •ํ•ฉ์‹œ๋‹ค
    • ๋‹ค์Œ ๋ฒ„ํŠผ์„ ์—†์• ๊ณ  6์ž๋ฅผ ์“ฐ๋ฉด ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฐ”๊พธ์ฃ ?
  • PIN์„ String์œผ๋กœ ๊ด€๋ฆฌ

โœ… Daily 13

์ด์ง€ํ›ˆ

  • ๊ฒ€์ƒ‰์„ ํ˜„์žฌ ์„น์…˜๋ณด๋‹ค ๋” ๋„“๊ฒŒ ํ•œ ๋ฒˆ์— ๊ฒ€์ƒ‰ํ•œ๋‹ค
  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์„น์…˜ ์ •๋ณด์™€ ํ•จ๊ป˜ DB ์— ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ฒ€์ƒ‰ ๋  ๋•Œ๋งˆ๋‹ค ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๊ฐœ์„  ๋ฐฉํ–ฅ์„ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•ด ๋ด„

์–‘์ˆ˜์ง„

  • PIN ์ €์žฅ์„ AES256 ์œผ๋กœ ์•”ํ˜ธํ™” ํ›„ ์ €์žฅ (๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ง„ํ–‰)
  • ์œ„ ๋กœ์ง์„ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋กœ ์˜ฎ๊ธธ ์˜ˆ์ •
  • ์‹ค์ œ PIN ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™” ํ›„ ์ €์žฅํ•˜๋Š” ๊ณผ์ • ์ˆ˜ํ–‰ํ•  ์˜ˆ์ •

๋ฐ•๋ช…๋ฒ”

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์‚ฌ์šฉ ์ฒ˜๋ฆฌ Room ๊ตฌ์ถ•
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜์„ Flow ๋กœ ๋ฐ›๋Š” ์ด์œ : ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ๊ธฐํ”„ํ‹ฐ์ฝ˜์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ณ , ๋ฐ”๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก Flow ๋กœ ๋ฐ˜ํ™˜ ๋ฐ›์Œ

๊น€๋ช…์„

  • CropRect ๊ฐ€ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฒ”์œ„ ์ง€์ • (์‚ฌ์ง„์„ ์•ˆ ๋„˜์–ด๊ฐ€๋„๋ก)
  • CropRect ์˜ ์ตœ์†Œ ํฌ๊ธฐ ์ง€์ • (์ตœ์†Œ์ผ ๋•Œ๋„ ์ด๋™ ๊ฐ€๋Šฅํ•ด์ง)
  • ์ด์ „ ํฌ์ธํŠธ์™€ ํ˜„์žฌ ํฌ์ธํŠธ๋ฅผ ๋น„๊ตํ•ด์„œ CropRect ์ด๋™
  • ๋์œผ๋กœ ๊ฐ”์„ ๋•Œ ํ™•๋Œ€๋œ ์‚ฌ์ง„์„ ์ด๋™์‹œ์ผœ์ค˜์•ผ ํ•˜๋Š”๋ฐ 2๋ฐฐ ๋น ๋ฅด๊ฒŒ ์ด๋™
  • 3dp ์ดํ•˜๋กœ ์‚ฌ์ง„ ๋ชจ์„œ๋ฆฌ์— ๋ถ™์œผ๋ฉด ๋”ฑ ๋ถ™๋Š” snap ๊ตฌํ˜„

โœ… Daily 14

์–‘์ˆ˜์ง„

  • ProtoDataStore ์ ์šฉ์ด kts ์—ฌ์„œ ์‹คํŒจ -> PreferenceDataStore ๋กœ ๋ณ€๊ฒฝ
  • iv ๋ฅผ PreferenceDataStore ์— ์ €์žฅํ•˜๋ฉด์„œ Exception ๋ฐœ์ƒ -> ํ•ด๊ฒฐ
  • Snackbar Animation ์ ์šฉ

๋ฐ•๋ช…๋ฒ”

  • ๊ธฐ์กด์— Mode ์— ๋”ฐ๋ผ ํ™”๋ฉด์„ ๋‹ค๋ฅด๊ฒŒ ๋ณด์—ฌ์ฃผ๋˜ ๋ถ€๋ถ„์„ Fragment๋ฅผ ์ด์šฉํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด๋กœ ๋ณ€๊ฒฝ
  • ์‚ฌ์šฉ ๊ธฐ๋ก์„ reverse ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌ ์ˆœ์„œ ๋ณ€๊ฒฝ

์ด์ง€ํ›ˆ

  • ๊ฒ€์ƒ‰, Draw ๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ•œ๋ฒˆ์— ๋‹ค์šด ๋ฐ›์•„ ๊ทธ๋ฆฌ๋Š”๊ฒŒ ๋” ํšจ์œจ์ 
  • Dark Mode ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ Marker ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ์ง€ ์•Š๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ

๊น€๋ช…์„

  • ActivePointerId ๋ฅผ ์ด์šฉ ํ•˜์—ฌ MultiTouch ๋ฅผ ํ•ด๊ฒฐ
  • ๋‚ด๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ Crop๋œ ์ด๋ฏธ์ง€ ์ €์žฅ ๋ฐ Uri๋ฅผ setResult๋กœ ์ „๋‹ฌ

โœ… Daily 15

๋งˆ์Šคํ„ฐํด๋ž˜์Šค ํ”„๋กœ์ ํŠธ ๋ฆฌ๋ทฐ

Why ๋ถ€๋ถ„ ์ž˜ ๋ณด์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝ

  • ํ† ๊ธ€ ๋ถ€๋ถ„ ์•ˆ์— ๋ง๊ณ  ๋ฐ–์— ๋ณด์ด๊ฒŒ ํ•˜์ž. ์ด๊ฑด ์šฐ๋ฆฌ์˜ ๊ฐ•์ ์ด๋‹ค.
  • Readme ์•ˆ์— ๊ธฐ์ˆ  ์Šคํƒ ์ ๋Š” ๊ณต๊ฐ„๋„ ๊ดœ์ฐฎ์•„๋ณด์ž„

์นธ๋ฐ˜๋ณด๋“œ

์ž˜ ์“ฐ๊ณ  ์žˆ๋‹ค๊ณ  ์นญ์ฐฌ ๋ฐ›์•˜๋‹ค!~

CustomError

  • BeepError๋กœ ๋ฐ”๊พธ๊ธฐ
  • EmptyResults ๋Š” Exception์ด ๋งž์„๊นŒ? UI๋ ˆ์ด์–ด ์—์„œ๋งŒ ๋ฐ”๊พธ๋Š”๊ฒŒ ์˜ณ์ง€ ์•Š์„๊นŒ?

๐Ÿป ๊น€๋ช…์„

์ข‹์•˜๋˜์ 

  • ํฌ๋กญ์„ ๋“œ๋””์–ด ์™„์„ฑ
  • ๋ผ์ดํ”„ ์‚ฌ์ดํด, ์ €์žฅ์†Œ์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ ํ•ด๋ดค๋‹ค

์•„์‰ฌ์šด์ 

  • ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š๋ ค์กŒ๋‹ค

๊ฐœ์„ 

  • ์ผ๋‹จ ์™„์„ฑ์„ ์‹œํ‚ค๊ณ  ์™„์„ฑ๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•ด์•ผ ๊ฒ ๋‹ค.

๐Ÿปโ€โ„๏ธ ๋ฐ•๋ช…๋ฒ”

์ข‹์•˜๋˜ ์ 

  • ์ž‘์—… ๋‚ด์šฉ์„ ์ข€ ๋” ์„ธ๋ถ„ํ™” ํ•˜์—ฌ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ, ๋” ์ž์ฃผ PR ์„ ์˜ฌ๋ฆผ
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ƒ์„ธ ํ™”๋ฉด ๊ตฌ์กฐ๋ฅผ ์ข€ ๋” ๊น”๋”ํ•˜๊ฒŒ ๊ฐœ์„  ์‹œํ‚ด
  • ์•„๋ฌดํŠผ ์ด๋ฒˆ ์ฃผ ์ž˜ ๋ฒ„ํŒ€

์•„์‰ฌ์šด ์ 

  • ์ž‘์—… ์†๋„๊ฐ€ ์•„์‰ฝ๋‹ค. ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ํ•ด์•ผํ•˜๋Š”๋ฐโ€ฆ
  • ์‹œ๊ฐ„์€ ๋งŽ์ด ์ผ๋Š”๋ฐ ์ง‘์ค‘๋ ฅ์ด ๋†’์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค

๊ฐœ์„  ์‚ฌํ•ญ

  • ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ์ž‘์—…ํ•˜์ž. ๋‹น์žฅ ๋งˆ์Œ์— ์•ˆ๋“œ๋Š” ๊ตฌํ˜„์ด๋ผ๋„ ์ผ๋‹จ ๋™์ž‘์€ ์‹œ์ผœ์•ผํ•˜๋‹ˆโ€ฆ
  • ๊ทธ๋ฆฌ๊ณ  ์ถ”ํ›„์— ๊ฐœ์„ ํ•˜์ž
  • ๋งฅ๋ถ์— ์ต์ˆ™ํ•ด์ง€์ž (์˜ค๋Š˜ ๋งฅ๋ถ ์˜ด)

๐Ÿฃ ์ด์ง€ํ›ˆ

์ข‹์•˜๋˜ ์ 

  • ์œ„์น˜์ •๋ณด๋ฅผ ์–ด๋Š ๋ ˆ์ด์–ด์— ๋‘˜์ง€ ์•„๋‹ˆ๋ฉด ๋‚ด ๋กœ์ง์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ• ์ง€ ํŒ€์›๋“ค์ด ๊ณ„์† ๊ฐ™์ด ๊ณ ๋ฏผ์„ ํ•ด์ค˜์„œ ๋„ˆ๋ฌด ๊ณ ๋งˆ์› ๋‹ค.

์•„์‰ฌ์šด ์ 

  • ํ•˜๋‚˜์˜ Activity์— ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ณ ์ณ์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
  • ๊ณ ๋ฏผ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ๊ตฌํ˜„ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค.
  • ๊ตฌํ˜„ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋ณด๋‹ˆ ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ์ •๋ฆฌ๋ฅผ ๋ฏธ๋ฃจ๊ฒŒ ๋œ๋‹ค.

๊ฐœ์„  ์‚ฌํ•ญ

  • ๋‹น์žฅ ์• ๋งคํ•œ ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉด ๊ทธ๊ฑด ์šฐ์„  ์ ์–ด๋‘๊ณ  ๊ตฌํ˜„์„ ๋๋‚ด๊ณ  ๊ฐœ์„ ์„ ํ•˜์ž.

๐Ÿ‘ป ์–‘์ˆ˜์ง„

์ข‹์•˜๋˜ ์ 

  • ์นธ๋ฐ˜๋ณด๋“œ์— ์ด๋ฒˆ์ฃผ์˜ backlog๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ž‘์—…ํ•˜๋‹ˆ ๋‚˜์˜ ์ด๋ฒˆ์ฃผ ์ž‘์—… ๋‚ด์—์„œ์˜ ์ง„ํ–‰๋„๋ฅผ ๋ˆˆ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋”ฐ.

์•„์‰ฌ์› ๋˜ ์ 

  • ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ๊ณ„ํš์„ ์™„์ˆ˜ํ•˜์ง€ ๋ชปํ•จ
  • ๋ฐฅ๋จน๊ณ  ์‰ฌ๋Š” ์‹œ๊ฐ„์„ ๋„ˆ๋ฌด ๊ธธ๊ฒŒ ๊ฐ€์กŒ๋‹ค

๊ฐœ์„ ํ•  ์ 

  • ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋” ๋‚ด์•ผํ•จ
  • ์ƒˆ๋กญ๊ณ  ๋‚ฏ์„  ๋‚ด์šฉ์„ ์ตํžˆ๊ธฐ ์œ„ํ•ด ๋” ๋…ธ๋ ฅํ•ด์•ผ ํ•จ

โœ… Daily 16

๊น€๋ช…์„

  • SharedFlow -> EventFlow (์ง์ ‘ ๋งŒ๋“  Flow ์—์–ด๋น„์—”๋น„)
  • UiText์šฉ ํด๋ž˜์Šค ์ƒ์„ฑ

์ด์ง€ํ›ˆ

  • ๋ฉ”์ธ๋ทฐ ๋ ˆ์ด์•„์›ƒ ๋ฐ ๋ฃธ์—์„œ ๊ฐ–๊ณ  ์˜ค๊ธฐ

๋ฐ•๋ช…๋ฒ”

  • ๊ธˆ์•ก ์ž…๋ ฅ ๋ฐ›๋Š” EditText ์ปค์Šคํ…€ ๋ทฐ ๊ตฌํ˜„
  • ๊ธˆ์•ก์—์„œ 3๊ธ€์ž๋งˆ๋‹ค ์‰ผํ‘œ ์ถ”๊ฐ€

์–‘์ˆ˜์ง„

  • ํ•€ ์„ธํŒ… ํ•˜๋Š” ๋ถ€๋ถ„ ๊ฐ๊ฐ์˜ ํ–‰๋™์„ ๋‚˜๋ˆ ์„œ ์žฌํ™œ์šฉํ•œ View ๊ตฌํ˜„
  • UsePreferencesRepository ์— ํ•€ ๊ด€๋ จ ์„ค์ • ์ •๋ณด๊ฐ€ ์ „๋ถ€ ๋“ค์–ด๊ฐ€์žˆ๊ธฐ์— Hilt๋กœ ์ฃผ์ž…์„ ๋ฐ›๊ณ  ์‚ฌ์šฉ์„ ํ•œ๋‹ค.

image

โœ… Daily 17

๋ฐ•๋ช…๋ฒ”

  • ์ž๋ฐ” ์„ค์น˜๊ฐ€ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค
  • ์ปดํฌ์ฆˆ ์„ธํŒ…๋„ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค
  • State ๊ด€๋ จ ์ž‘์—… ํ–ˆ๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ UI๋ฅผ ์งค๊ฑฐ๋‹ค

๊น€๋ช…์„

  • edittext: ๋ฐ”์ฝ”๋“œ์™€ ๊ธˆ์•ก ๋‘˜ ๋‹ค ํฌ๋งท์ด ์žˆ๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™์ง€๋งŒ ๋ฐ”์ฝ”๋“œ๋Š” ์•ž๋ถ€ํ„ฐ, ๊ธˆ์•ก์€ ๋’ค๋ถ€ํ„ฐ ์ž…๋ ฅ๋จ
  • ์ž…๋ ฅํ•œ ํ›„ ๋‹ค์Œ ์นธ์œผ๋กœ ํฌ์ปค์Šค. ์œ ํšจํ•˜์ง€ ์•Š์€ ์นธ์œผ๋กœ ์ž๋™ ์ด๋™
  • ์‚ฌ์ง„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ํ–ˆ๋Š”๋ฐ.. ๋ฌธ์ž๋งŒ ์žˆ๋Š” ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋•Œ๋ฌธ์— ์‚ฌ์ง„ ์—†์ด๋„ ์ถ”๊ฐ€ ๋˜๊ฒŒ ํ•ด์•ผํ•  ๊ฒƒ (๋ช…๋ฒ”: ์›๋ณธ ์ด๋ฏธ์ง€ ๋ณด๊ธฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ธ ์ชฝ์—์„œ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋„ค์š”)
  • ์œ ํšจํ•˜์ง€ ๋ชปํ•œ ์ž…๋ ฅ, ๋นˆ ์ž…๋ ฅ์ด ์žˆ์œผ๋ฉด ๋“ฑ๋กํ•  ์ˆ˜ ์—†๊ฒŒ๋” ์ œํ•œ
  • ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ ํ•ด์•ผ ํ•จ

์–‘์ˆ˜์ง„

  • ์„ค์ • ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ ˆ์ด์•„์›ƒ
  • ์–ต์ง€๋กœ fragment์— ๋‚‘๊ธด ๋Š๋‚Œ (๋ช…๋ฒ”: ์„ค์ • fragment ์•ˆ์— fragment container ๋„ฃ์œผ๋ฉด ์•ˆ๋Œ€์—ฌ?)
  • Fragment์—์„œ viewModel์„ attach ์ „์— ํ˜ธ์ถœํ•ด์„œ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋˜ ์˜ค๋ฅ˜

์ด์ง€ํ›ˆ

  • ์ฃผ๋ง์— ์ˆ˜์ง„๋‹˜์ด ๊ทธ๋ ค์ฃผ์‹  ๋งˆ์ปค๋ฅผ ์ ์šฉ, ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ปค์— ์นดํ…Œ๊ณ ๋ฆฌ ์ •๋ณด ์ถ”๊ฐ€
  • ์•Œ๊ณ ๋ณด๋‹ˆ 28๋ถ€ํ„ฐ ์ง€์›๋˜์—ˆ๋˜ FusedLocation๊ณผ Location ๋ฒ„์ „ ๋ถ„๊ธฐ
  • 10์ดˆ๊ฐ„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์œ„์น˜๋ฅผ ๋ฐ›๋„๋ก ํ–ˆ๋Š”๋ฐ, ์ฒ˜์Œ์—๋„ 10์ดˆ๊ฐ€ ๊ฑธ๋ ค์„œ ๋”ฐ๋กœ ์ˆ˜์ง‘

๐Ÿ’ฅ ์ €๋…์— develop ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์ด ๊ผฌ์ด๋Š” ์‚ฌ๊ณ ๊ฐ€ ๋‚˜์„œ ๋‹ค๊ฐ™์ด ์กฐ์œจํ•ด์„œ ์ถฉ๋Œ๋‚œ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ–ˆ๋‹ค.

โœ… Daily 18

๊น€๋ช…์„

  • ์นด์นด์˜ค ๊ธฐํ”„ํ‹ฐ์ฝ˜ ํŒŒ์‹ฑ ์„ฑ๊ณต์ 
  • openCV ์‚ฌ์šฉ ์•ˆ ํ•˜๊ณ  ์‚ฌ์ง„ ๋ถ€๋ถ„๊ณผ ์ •๋ณด ๋ถ€๋ถ„์„ ์ž˜๋ผ์„œ ํŒŒ์‹ฑ
  • ์‚ฌ์ง„์œผ๋กœ ์ถ”๊ฐ€, ์ง์ ‘ ์ถ”๊ฐ€๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ๋‹น๊ทผ๋งˆ์ผ“์ฒ˜๋Ÿผ FAB ํ™•์žฅํ•˜๋Š” ๋ฐฉ์‹ ์ƒ๊ฐ

์ด์ง€ํ›ˆ

  • ๊ทผ์ฒ˜์˜ ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๊ฑฐ๋ฆฌ ํ‘œ์‹œ (100m ๋‹จ์œ„. 100m ๋ฏธ๋งŒ์ด๋ฉด ๊ทผ์ฒ˜์— ์žˆ๋‹ค๋Š” ๋ฌธ๊ตฌ๋กœ)
  • ๊ฐ™์€ ๋ธŒ๋žœ๋“œ๋Š” ๋ฌถ์„ ์˜ˆ์ •
  • ์ง€๋„์—์„œ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ง€ ๊ณ ๋ฏผ
  • ํ™ˆ ํ™”๋ฉด์—์„œ ๊ธฐํ”„ํ‹ฐ์ฝ˜์ด ์—†๋Š” ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ UI ๋ฅผ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผ

๋ฐ•๋ช…๋ฒ”

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜์—์„œ ๋ธŒ๋žœ๋“œ ์ •๋ณด ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„ ๊ตฌํ˜„
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ชฉ๋ก์—์„œ ๋ทฐ๋ชจ๋ธ์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋กœ ์ปดํฌ์ฆˆ๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— ๋ณด์—ฌ์คŒ
  • ๋ธŒ๋žœ๋“œ ๋ณ„๋กœ Chip ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ƒ๋‹จ์— ํ‘œ์‹œ
  • ๋ธŒ๋žœ๋“œ ์ „์ฒด ๋ณด๊ธฐ ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์ด์–ผ๋กœ๊ทธ ๋„์šฐ๊ธฐ (+ FlowLayout)

์–‘์ˆ˜์ง„

  • ๋ณต์žกํ•ด์ง„ ์ธ์ฆ ํ๋ฆ„์„ ์ •๋ฆฌํ•ด์•ผ ํ•  ๋“ฏ
  • ๋ณด์•ˆ ์„ธํŒ… ์ •๋ฆฌ ์˜ˆ์ •
  • ์œ„์น˜ ๊ถŒํ•œ ์ฒ˜๋ฆฌํ•  ์˜ˆ์ •
  • ์•Œ๋žŒ ๊ด€๋ฆฌ ๊ณ ๋ฏผํ•  ์˜ˆ์ • (์•Œ๋žŒ ์ดํ›„์— ์„ค์ • ๋‹ค๋ฃฐ ์˜ˆ์ •)

โœ… Daily 19

๊น€๋ช…์„

  • GifticonRecognizer Flow ์ž‘์„ฑ ๋ฐ ๊ตฌํ˜„

์ด์ง€ํ›ˆ

  • Shimmer ๋„์ž…
  • ํ™ˆ ํ™”๋ฉด Lottie
  • ํ™ˆ ํ™”๋ฉด ๋ฐ์ดํ„ฐ ์œ ๋ฌด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ

๋ฐ•๋ช…๋ฒ”

  • Brand ๋กœ ํ•„ํ„ฐ๋ง
  • hashMap ๋ฅผ ์ด์šฉํ•˜์—ฌ add/remove ๋ฅผ ํ•˜์—ฌ Recomposition์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ํ˜„์ƒ ํ•ด๊ฒฐ

์–‘์ˆ˜์ง„

  • ์„ค์ •์—์„œ ๋“ค์–ด๊ฐ€๋ฉด ํ„ฐ์ง€๋˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ
  • ViewModelScope.launch ์‚ดํ•ด ์‚ฌ๊ฑด ์ˆ˜์‚ฌ

โœ… Daily 21

  • Location ์ฝ”๋“œ ๋ถ„๋ฆฌ / ๊ถŒํ•œ ์ฒ˜๋ฆฌ ๋ถ„๊ธฐ
  • ๊ถŒํ•œ ์ฒ˜๋ฆฌ

์•Œ๋žŒ ๊ตฌํ˜„

  • Hilt ์ ์šฉํ•˜๋Š”๋ฐ ๋งŽ์€ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์Œ
  • ๋งŒ๋ฃŒ ๊ธฐํ•œ์ด ์ง€๋‚˜์ง€ ์•Š์•˜๊ณ , 3์ผ 7์ผ 14์ผ ๊ธฐ์ค€์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์คŒ
  • GroupNumber๋ฅผ ์ง€์ • -> ์ข€ ๋” ์•Œ์•„๋ด์•ผ ํ•จ
  • 26์ด์ƒ๋ถ€ํ„ฐ๋Š” Channel ๋งŒ๋“œ๋Š”๊ฒŒ ํ•„์ˆ˜
  • PendingIntent๋ฅผ ์‚ฌ์šฉํ• ๋•Œ code๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ PendingIntent Flag์— ๊ตฌ๋ถ„์ž๋กœ ์‚ฌ์šฉ์ด ๋œ๋‹ค.
  • barcode๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ๋‹ค. -> barcode๊ฐ€ ๊ฐ™์„ ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ
  • 0~6์ž๋กœ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ๊ฒน์น ์ˆ˜๋„ ์žˆ๋‹ค -> 9์ž๋ฆฌ๋กœ ๋Š˜๋ฆฌ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ
  • ๊ฒŒ์ŠคํŠธ ๋กœ๊ทธ์ธ UI ๋ณ€๊ฒฝ ๋ฐ ๋กœ์ง ๋ณ€๊ฒฝ

์ƒ์„ธํŽ˜์ด์ง€

  • ๊ธˆ์•ก ์ž…๋ ฅ ๋ถ€๋ถ„ ๊ตฌํ˜„ -> EditText -> ๋จธํ„ฐ๋ฆฌ์–ผ -> compose๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋์Œ
  • ๊ธ€์ž ๊ธธ์ด, ํ•„์š” ์—†๋Š”๋ถ€๋ถ„ ํ•„ํ„ฐ๋ง
  • focus ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ–ˆ๋Š”์ง€

์ฃผ๊ฐ„ ๊ณ„ํš

๊น€๋ช…์„

  • ์ด๋ ฅ์„œ
  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ž๋™ํŒŒ์„œ (์ˆ˜์š”์ผ๊นŒ์ง€๋Š” ๋ฌด์กฐ๊ฑด)
  • ๊ฐค๋Ÿฌ๋ฆฌ ๋งˆ๋ฌด๋ฆฌ
  • Payload ์ด์šฉํ•˜์—ฌ RecyclerView ๊ฐœ์„ 
  • UI ์ƒํƒœ์ฒ˜๋ฆฌ ์ ์šฉ

์ด์ง€ํ›ˆ

  • ์•ฑ ์œ„์ ฏ ๊ตฌํ˜„ (์›”ํ™”)
  • ํ™ˆํ™”๋ฉด (์ˆ˜๋ชฉ๊ธˆ)

๋ฐ•๋ช…๋ฒ”

  • ์ด๋ ฅ์„œ

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ƒ์„ธ ํ™”๋ฉด์— ์‚ฌ์ง„ ๋‹ฌ๊ธฐ (ํ™”)

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ชฉ๋ก์— ์‚ฌ์ง„ ๋‹ฌ๊ธฐ (ํ™”)

  • ์ด๋ ฅ์„œ

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์ƒ์„ธ ํ™”๋ฉด์— ์‚ฌ์ง„ ๋‹ฌ๊ธฐ (ํ™”)

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ชฉ๋ก์— ์‚ฌ์ง„ ๋‹ฌ๊ธฐ (ํ™”)

  • ๊ธฐํ”„ํ‹ฐ์ฝ˜ ์‚ฌ์šฉ ๋กœ์ง ์ •๋ฆฌ (์ˆ˜)

  • ์ดํ›„ ์Šคํƒ€์ผ ์ •๋ฆฌ, ๋ฒ„๊ทธ ํ”ฝ์Šค, ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๊ณต์œ  (๋ชฉ/๊ธˆ)

์–‘์ˆ˜์ง„

์ต๋ช… ๋กœ๊ทธ์ธ (์›”/ํ™”)

  • ์„ค์ • ๋ฉ”๋‰ด ๋ณ€๊ฒฝ
  • ์„ค์ •์—์„œ ๋กœ๊ทธ์ธ ๋˜๋„๋ก, ๋กœ๊ทธ์ธ ์‹œ guest ์„ค์ •๊ณผ db update PIN (์›”/ํ™”)
  • ์„ค์ •์—์„œ ๊ฒ๋‚˜ ๋น ๋ฅด๊ฒŒ ๋ˆŒ๋ €์„ ๋•Œ ๋ฒ„๊ทธ
  • ํ‚คํŒจ๋“œ๊ฐ€ ๋ˆŒ๋ฆฌ๋Š” ๋“ฏํ•œ ์—ฐ์ถœ (๋ˆ„๋ฅด๋ฉด ์ง„ํ•ด์กŒ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ—ˆ์–˜์ง€๋Š”)

ํŒŒ์ด์–ด๋ฒ ์ด์Šค์— ๊ธฐํ”„ํ‹ฐ์ฝ˜ ๋ฐฑ์—… (์ˆ˜/๋ชฉ/๊ธˆ)

โœ… Daily 23

์ด์ง€ํ›ˆ

  • ์œ„์ ฏ ์ž‘์—… (Gliance ์‚ฌ์šฉ)
  • ์•ฑ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์นด์นด์˜ค ๊ฒ€์ƒ‰์ด ๋˜์ง€ ์•Š์•„์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ๋ˆŒ๋Ÿฌ๋„ ์œ„์ ฏ์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋‹ค๊ฐ€ ์•ฑ์„ ์ผœ๋ฉด ๊ทธ๋•Œ ํ‘œ์‹œ๊ฐ€ ๋˜๋Š” ๋ฌธ์ œ
  • ์œ„์น˜๋ฅผ ๊ณ„์† ์ˆ˜์ง‘ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋„˜์–ด๊ฐ€๋„ ๊ณ„์† ์ˆ˜์ง‘ํ•˜๋˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค
    • ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๊ฐ€๋ฉด Job ์„ Cancel ํ•˜๊ณ , ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋„˜์–ด์˜ค๋ฉด Job ์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ํ•ด๊ฒฐ

โœ๏ธ BEEP Tech Blog

๋ฐ•๋ช…๋ฒ”

์–‘์ˆ˜์ง„

๊น€๋ช…์„

์ด์ง€ํ›ˆ

๐Ÿ‘พ BEEP

๐Ÿ—ฃ Ground Rule

โœ๏ธ Conventions

โš™๏ธ Setting

๐ŸŒฑ Daily Scrum

week 1
week 2
week 3
week 4
week 5
week 6
Clone this wiki locally