-
Notifications
You must be signed in to change notification settings - Fork 3
📆 Daily Scrum
- Ground Rule
- 몇시부터 몇시를 코어 타임으로 할지
- 밥시간 등등
- Convention
- Git, Resource, Kotlin 컨벤션
- Setting
- ktlint 적극 활용
- 멀티모듈 활용
- 클린 아키텍처 기반
- gradle -> kts 마이그레이션 적용
- 여러 import 구문들 List로 합쳐서 Boilerplate Code 제거
- 첫주는 수요일 20시에 만남을 갖기로 결정
- 현재 우리가 구현 예정인 프로젝트에 대해서 간략하게 설명
- 사용자가 인증을 하게 되면 권한을 요청
- 권한을 받지 않은 경우
- 홈 화면 상단에 위치 정보를 요청하는 UI
- 위치 권한이 있는 경우
- 홈 화면 상단에 거리에 따른 기프티콘 목록 UI
- 기프티콘 추가와 동시에 해당 브랜드를 DB에 저장
- 카카오톡, 메세지 등에서 이미지 전달을 통해 추가
- 앱 내에서 + 버튼을 통해 추가
- 갤러리로 이동
- 바코드 번호를 이용하여 중복된 기프티콘 확인
- 자동완성
- 카카오톡, 키프티쇼, 시럽, 삡의 기프티콘 이미지에서 자동 추출
- 성공시, 이미지가 마음에 들지 않으면 수동으로 수정 가능
- 실패시, 이미지를 직접 드래그를 통해 이미지 추가
- 모든 텍스트 긁어 와서 AutoCompleteTextView
- 화면 > Epic > Story > Task - 개발 우선순위 - 예상 소요시간 - 스프린트
- 도메인 모델(공통)
- 각자 사용할 모델
- 조율
알람매니저- 워크매니저
- 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 을 안붙임
각자 이번주 어떤 것을 할지 스프린트 계획을 대략적으로만 이야기를 해봤습니다!
- 월 : 카카오 서치로 찾은 브랜드 위치들 네이버 맵에 마크 해주기 / Beep Tech에 Mockk 관련 정리 글 올리기
- 화 : 맵 하단 ViewPager2 적용 (기프티콘 카드 뷰)
- 수 : 카드를 클릭했을때 detail 페이지 이동 / 카드뷰 스크롤할때 브랜드가 변경 되면 map에서 위치도 변경
- 목 : 현재 위치에 따라서 브랜드를 보여줘야 하는데 각 section을 어떻게 나눌지 고민하고 flow 그려보기
- 월 - (기프티콘)세부화면 xml 작성 + 기프티콘 FakeRepository
- 화, 수 - 세부화면 관련 Room DB 구축
- 목 - 세부화면과 Room 연동
- 월: 스플래시 화면, 구글 로그인 보완
- 화: 지문 인식
- 수: 지문 인식
- 목: PIN 설정 관련 고민 후 구현시작 (어디에 저장해야 하는가? 암호화는 어떻게 해야하는가?)
- 월 : 갤러리 페이징 및 선택 구현
- 화 : 테스트케이스 junit5
- 수 : image crop ui 구현시작
- 목 : 구현 정리 및 보강
- 각 폰트들 string font styles 만들기
새벽 내에 올라온 PR들에 관한 이야기를 했습니다.
-
명석
- PagingData cachedIn이 사용되는 이유가 뭘까
- 안 붙여도 작동은 되는데, 여러번 왔다갔다 하면 앱이 터짐. 아마 캐시에 접근하려고 하면 터지는 것 같음
- 어떻게 구현되어 있는지 살펴봤는데
shareIn
으로 구현되어 있어서stateIn
으로 바꿔주는 의미가 있나 싶더라고요 -
collect
할 때 경고 뜨는 것은 코루틴 라이브러리 버전이 완전 예전 것이어서 그랬던 거였음~
- cacheIn은 뷰모델에서 하는 게 맞을까요?
- 네. 그정도의 가공은 뷰모델이 맞을 듯
- 왜 페이징은 콜드로 넘겨줄까요?
- 핫일 때는 전부 다 갖고 있어야 하니까 콜드로 주는게 아닐까요? 콜드면 조금씩 들고 있어도 되니까요
- BindingAdapter로 핫 스트림으로 변경했었던 것을 삭제
- PagingData cachedIn이 사용되는 이유가 뭘까
-
명범
- 상세화면에서 기프티콘 사용 버튼을 화면 하단에 붙이니 못생겨서 칩으로 변경. 버튼이 화면 아래에 있을 때 칩을 누르면 아래로 이동
- isVisible이 setFlag가 될 때 invalidate 됨을 확인함
-
지훈
- LocationManager -> FusedLocationProvider
- 시간 계산에 9시간의 오차가 있을 거에요 - 명석 -
- 지문 인식 구현한 내용 공유
- FingerprintManager의 경우 지문 인식 UI를
BottomDialog
로 만들고show()
해줘야 지문 인증을 시작할 수 있다. - 바로 사용할 수 있는 형태로 수정할 예정
- Mokk 관련 정리
- 위치 캐싱한 이유 정리
- 사용자 위치 중심으로 나눌 지 고민
- 겹치는 영역이 발생한다
- (수진) 좌표를 거리 단위가 아닌 모듈러 연산으로 그룹핑
- 갤러리 구현한 내용 공유
- 사진 선택 시 선택된 사진 UI 고민
- position 을 넘겨주고 NotifiItemChanged(position) 을 호출하면 되긴 하지만 이미지와 함께 하얗게 깜빡거리는 현상이 발생한다
- xml 에 selection 객체를 다시 넘겨줘서 처리함 (멘토님께 질문 예정)
- 텍스트 스타일 추가
- Material Theme 적용
- 버튼 테마 안 먹던 문제 명석님 도움으로
MaterialButtonStyle
로 지정하여 해결 - 툴바 타이틀에 colorOnPrimary 가 먹지 않는 문제 존재 -> 기본적으로 title 색상은 theme 을 따르지 않고 검정색만 사용하는 것을 확인. 따로 지정해야 한다
- BottomSheetDialog 에서 Theme 이 안 먹는 문제 -> BottomSheetDialog 가 따로 Theme 을 관리하고 있는 것으로 추정
- 버튼 테마 안 먹던 문제 명석님 도움으로
-
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)
}
- 우리끼리의 기술 공유 && 서로의 로직이나 코드를 완벽하게 이해하는 시간을 정해보기
- 기본적인 작업을 거의다 진행되어 4주차 부터는 다듬는 작업을 진행할 수 있을것 같다
- 작업한 내용에대해 정리할 시간이 적었고
- 일반적이지 않은 내용에 대해 주석이 필요해 보였다
- 그리고 로직에 대한 플로우에 대해 정리를 해둬야 좋겠다는 생각을 하게되었다
- 메모와 정리에 조금더 신경을 써야겠다
- 혼자 하는 것보다 같이 하는 팀원들이 있으니 더 몰두해서 할 수 있었다
- UI 작업이 들인 시간에 비해 생각보다 더디고 이해되지 않는 부분이 많아서 답답했다
- 비즈니스 로직 작업을 시작하면 좀 낫지 않을까?!
- 팀원들과 거의 10시부터 새벽2시까지 모여서 같이 코딩을 하다보니 문제가 생겼을때 빠르게 회의도 가능했고 누군가와 같이 코딩을 하는 기분이 들어서 좋았습니다.
- 처음에 계획했던 서로의 역할이 바뀌어도 구현이 가능해야 한다.
- 나는 다른 사람의 파트를 들어가도 바로는 아니더라도 구현을 할 수 있을까? 생각이 들고 되게 사소한 것들도 정리하자 라고 했지만 잘 안지켜지는거 같아서 아쉬웠습니다.
- 서로의 역할이 바뀌어도 구현이 가능할 수 있게 하기 위해서는 코드의 이해를 필요로 하는데 코드 리뷰 만으로 부족하다고 느껴 매주 특정 시간 동안 서로의 구현을 완벽하게 이해할 수 있는 정도가 될 수 있게 이야기를 하기로 했습니다.
- 그리고 Tech 에 너무 부담을 갖지 말고 작은 단위도 올리고자 합니다.
- 게더에서 하루죙일 붙어서 하니까 외롭지 않고 강제성도 부여되어서 좋았다
- 이슈가 생기면 바로바로 의논할 수 있어서 게더타운 모각코가 좋다
- 능지처참 리뷰를 받으니 개선점을 파악하고 보완할 수 있었다
- 요구사항 설계서에 기한이랑 task 다 정해놓고 정작 개발할 땐 참고 혹은 상태 갱신을 하지 않았다
- 작업을 할 때마다 이슈 하나씩 올리고 하고 올리고 하고 해서 계획을 철저히 짜지 못했던 것 같다
- 다음주에는 월요일 스프린트 회의에서 작업할 이슈를 미리 등록하고 계획에 맞게 해봐야겠습니다
- 실제로 걸린 시간도 체크해서 다른 작업의 예상 시간을 정하는데 참고해야겠습니다
- 카카오 서치 결과 9개의 section으로 나눠서 저장
- 카카오 서치 결과 테스트 코드 추가
- 하단 기프티콘 ViewPager2로 전환시 근처에 있는 브랜드 추천
- 네이버 맵에 브랜드 마커 클릭했을때 해당하는 쿠폰들 보여주기
- 기프티콘 추가 화면 구현
- 갤러리에서 가져온 이미지 자동 파싱
- CropImageView를 이용하여 이미지 크롭
- CropImageView의 Clip을 이요한 그림자 처리와 Zoom기능 추가
- 지문 인증 Biometric Compat으로 Migration
- PIN 암호화하여 DataStore에 저장
- 설정 관련 작업
- 앱 초기 실행 시 위치 권한 요청
- DB에서 기프티콘 아이디로 기프티콘 정보를 불러온다.
- 기프티콘 사용 완료 버튼 동작 구현
- 기프티콘 공유 버튼 클릭시 기록 남기기
- 사진 선택 화면 - RecyclerView의 Decoration 관련 수정
- 사진 편집 화면
- 터치범위 정의, 이동, 크기 조절 방식 설명
- 이벤트 정의와 활용 방식 설명 (이동, 크기조절, NONE)
- 화면 그리기 (섀도우, 엣지, 코너)
- 줌 원리 설명
행렬 연산..
- 도분초 변환
- 초로 변환한 후 계산하고 다시 변환하면 되지 않는가?
아
- 섹션 별 캐싱과 검색
- 명범님의 DbResult 와 UIState를 합칠 수 있지 않을까
- SharedFlow test 할때의 이슈 (Turbin)
- Room에서 기프티콘 가져오기
- Intent로 기프티콘 키 값을 넣어서 상세화면을 열기
- 목록, 지도, 알림에서 키를 넘겨주면 그거 띄워준다.
- 유효하지 않은 상태도 관측하여 Dialog 출력
- PIN UI 구성
- UI 수정합시다
- 다음 버튼을 없애고 6자를 쓰면 넘어가게 바꾸죠?
- PIN을 String으로 관리
- 검색을 현재 섹션보다 더 넓게 한 번에 검색한다
- 검색 결과를 섹션 정보와 함께 DB 에 저장해야 하는데 검색 될 때마다 저장하는 방식에서 개선 방향을 함께 고민해 봄
- PIN 저장을 AES256 으로 암호화 후 저장 (간단한 테스트 진행)
- 위 로직을 데이터 레이어로 옮길 예정
- 실제 PIN 정보를 암호화 후 저장하는 과정 수행할 예정
- 기프티콘 사용 처리 Room 구축
- 기프티콘을 Flow 로 받는 이유: 상세 페이지에서 기프티콘의 상태를 변화시키고, 바로 반영할 수 있도록 Flow 로 반환 받음
- CropRect 가 움직일 수 있는 최대 범위 지정 (사진을 안 넘어가도록)
- CropRect 의 최소 크기 지정 (최소일 때도 이동 가능해짐)
- 이전 포인트와 현재 포인트를 비교해서 CropRect 이동
- 끝으로 갔을 때 확대된 사진을 이동시켜줘야 하는데 2배 빠르게 이동
- 3dp 이하로 사진 모서리에 붙으면 딱 붙는 snap 구현
- ProtoDataStore 적용이 kts 여서 실패 -> PreferenceDataStore 로 변경
- iv 를 PreferenceDataStore 에 저장하면서 Exception 발생 -> 해결
- Snackbar Animation 적용
- 기존에 Mode 에 따라 화면을 다르게 보여주던 부분을 Fragment를 이용한 페이지 교체로 변경
- 사용 기록을 reverse 를 이용하여 정렬 순서 변경
- 검색, Draw 를 번갈아가면서 진행하는 것보다 한번에 다운 받아 그리는게 더 효율적
- Dark Mode 변경에 따라 Marker 를 다시 그려주지 않던 문제 해결
- ActivePointerId 를 이용 하여 MultiTouch 를 해결
- 내부 저장소를 이용하여 Crop된 이미지 저장 및 Uri를 setResult로 전달
- 토글 부분 안에 말고 밖에 보이게 하자. 이건 우리의 강점이다.
- Readme 안에 기술 스택 적는 공간도 괜찮아보임
잘 쓰고 있다고 칭찬 받았다!~
- BeepError로 바꾸기
- EmptyResults 는 Exception이 맞을까? UI레이어 에서만 바꾸는게 옳지 않을까?
- 크롭을 드디어 완성
- 라이프 사이클, 저장소에 대해서 좀 더 깊게 공부 해봤다
- 깊게 공부하다 보니 개발 속도가 느려졌다
- 일단 완성을 시키고 완성도를 높이는 방법을 택해야 겠다.
- 작업 내용을 좀 더 세분화 하여 더 작은 단위로, 더 자주 PR 을 올림
- 기프티콘 상세 화면 구조를 좀 더 깔끔하게 개선 시킴
- 아무튼 이번 주 잘 버팀
- 작업 속도가 아쉽다. 좀 더 빠르게 해야하는데…
- 시간은 많이 썼는데 집중력이 높지 않았던 것 같다
- 좀 더 빠르게 작업하자. 당장 마음에 안드는 구현이라도 일단 동작은 시켜야하니…
- 그리고 추후에 개선하자
- 맥북에 익숙해지자 (오늘 맥북 옴)
- 위치정보를 어느 레이어에 둘지 아니면 내 로직을 어떻게 구현을 해야 할지 팀원들이 계속 같이 고민을 해줘서 너무 고마웠다.
- 하나의 Activity에 너무 많은 역할을 주고 있다는 생각이 드는데 어떻게 고쳐야 할지 모르겠다.
- 고민 하는 시간이 너무 길어서 구현 속도가 너무 느리다.
- 구현 속도가 느리다보니 나도 모르게 정리를 미루게 된다.
- 당장 애매한 것들이 있으면 그건 우선 적어두고 구현을 끝내고 개선을 하자.
- 칸반보드에 이번주의 backlog를 추가하고 작업하니 나의 이번주 작업 내에서의 진행도를 눈으로 볼 수 있었따.
- 개발 속도가 너무 느려서 계획을 완수하지 못함
- 밥먹고 쉬는 시간을 너무 길게 가졌다
- 개발 속도를 더 내야함
- 새롭고 낯선 내용을 익히기 위해 더 노력해야 함
- SharedFlow -> EventFlow (직접 만든 Flow 에어비엔비)
- UiText용 클래스 생성
- 메인뷰 레이아웃 및 룸에서 갖고 오기
- 금액 입력 받는 EditText 커스텀 뷰 구현
- 금액에서 3글자마다 쉼표 추가
- 핀 세팅 하는 부분 각각의 행동을 나눠서 재활용한 View 구현
- UsePreferencesRepository 에 핀 관련 설정 정보가 전부 들어가있기에 Hilt로 주입을 받고 사용을 한다.
- 자바 설치가 너무 오래 걸렸다
- 컴포즈 세팅도 너무 오래 걸렸다
- State 관련 작업 했다. 오늘부터 UI를 짤거다
- edittext: 바코드와 금액 둘 다 포맷이 있는 것은 똑같지만 바코드는 앞부터, 금액은 뒤부터 입력됨
- 입력한 후 다음 칸으로 포커스. 유효하지 않은 칸으로 자동 이동
- 사진이 없는 경우에는 추가하지 않도록 했는데.. 문자만 있는 기프티콘 때문에 사진 없이도 추가 되게 해야할 것 (명범: 원본 이미지 보기가 있기 때문에 상세 쪽에서도 고려해야 하네요)
- 유효하지 못한 입력, 빈 입력이 있으면 등록할 수 없게끔 제한
- 이제 데이터를 넣는 것을 해야 함
- 설정 프래그먼트 레이아웃
- 억지로 fragment에 낑긴 느낌 (명범: 설정 fragment 안에 fragment container 넣으면 안대여?)
- Fragment에서 viewModel을 attach 전에 호출해서 찾을 수 없었던 오류
- 주말에 수진님이 그려주신 마커를 적용, 적용하기 위해 마커에 카테고리 정보 추가
- 알고보니 28부터 지원되었던 FusedLocation과 Location 버전 분기
- 10초간 주기적으로 위치를 받도록 했는데, 처음에도 10초가 걸려서 따로 수집
- 카카오 기프티콘 파싱 성공적
- openCV 사용 안 하고 사진 부분과 정보 부분을 잘라서 파싱
- 사진으로 추가, 직접 추가를 자연스럽게 진입하기 위해 당근마켓처럼 FAB 확장하는 방식 생각
- 근처의 기프티콘 거리 표시 (100m 단위. 100m 미만이면 근처에 있다는 문구로)
- 같은 브랜드는 묶을 예정
- 지도에서 뒤로가기 버튼을 어떻게 만들 지 고민
- 홈 화면에서 기프티콘이 없는 경우에 어떻게 UI 를 보여줄 것인지 고민
- 기프티콘에서 브랜드 정보 가져오는 부분 구현
- 기프티콘 목록에서 뷰모델에서 가져온 데이터로 컴포즈를 통해 화면에 보여줌
- 브랜드 별로 Chip 으로 만들어서 상단에 표시
- 브랜드 전체 보기 아이콘을 누르면 다이얼로그 띄우기 (+ FlowLayout)
- 복잡해진 인증 흐름을 정리해야 할 듯
- 보안 세팅 정리 예정
- 위치 권한 처리할 예정
- 알람 관리 고민할 예정 (알람 이후에 설정 다룰 예정)
- GifticonRecognizer Flow 작성 및 구현
- Shimmer 도입
- 홈 화면 Lottie
- 홈 화면 데이터 유무에 따른 분기
- Brand 로 필터링
- hashMap 를 이용하여 add/remove 를 하여 Recomposition이 일어나지 않는 현상 해결
- 설정에서 들어가면 터지던 오류 해결
- ViewModelScope.launch 살해 사건 수사
- 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 (월/화)
- 설정에서 겁나 빠르게 눌렀을 때 버그
- 키패드가 눌리는 듯한 연출 (누르면 진해졌다가 다시 허얘지는)
파이어베이스에 기프티콘 백업 (수/목/금)
- 위젯 만들어서 띄웠다
- WorkManager로 onetimework 예약
- 새로고침을 누르면 미친듯이 위치 정보를 뱉어내는 오류
- 컴포즈 문제인가 플로우 문제인가 위젯 문제인가....
- 사진 추가 시 상단에 리스트 표시
- 사진 추가 순서도 원에 표시
- 이력서 이슈
- 위젯 작업 (Gliance 사용)
- 앱을 실행하지 않았을 때 카카오 검색이 되지 않아서 새로고침을 눌러도 위젯에 표시되지 않다가 앱을 켜면 그때 표시가 되는 문제
- 위치를 계속 수집하고 있기 때문에 백그라운드로 넘어가도 계속 수집하던 문제가 있었다
- 백그라운드로 가면 Job 을 Cancel 하고, 포그라운드로 넘어오면 Job 을 새로 만들어서 해결
- 기프티콘 사용 로직 작성
- 기프티콘 수정 - 날짜 수정 동작 수정
- 자동 파싱기능 추가
- 여러 개를 등록할 경우 중지 됩니다
- 템플릿이 아닌 사진을 등록하면 중지 됩니다.
- barcode, balance format 에서 문제가 발생하는 것으로 파악
- Glance 로 Widget 작업
- Location Callback 코드 수정
- 위젯 클릭으로 네이버 맵 이동
- 브랜드 자동 포커싱
- 보안 설정 미설정 시 다이얼로그 출력
- 밖에 클릭시 터짐
- Splash Animation 추가
- Guest 로그인 추가
- Guest 로그인시 구글 계정으로 데이터 이동
- 필터 다이얼로그에 만료기프티콘 표시 추가
- 핕터 다이얼로그에 ContentPadding 추가
- 보안 인증 추가
- 보안 인증 성공시 다이얼로그 띄우기
- 사용 완료 처리
하루 하루가 행복하다.
지난 5주간 주말까지 모두 투자해서 작업했는데도 새벽까지 허겁지겁 작업하게 된 것이 억울했다 일정과 프로젝트 진척도에 대해 더 돌아보고 얘기를 많이 해봤어야 함 이력서, 노션 소개 페이지 작성 등 신경쓸 것이 많았다.
버그 잡을 시간이 적다보니 토요일 하루 내내 투자해야 할듯 일요일에는 밀린 학습 정리를 할 것
내 이력서를 모두가 보고 템플릿 처럼 써줘서 고마웠다.
확장을 너무 고려하지 않고 구현을 했던거 같다.
당장에 기능에 급급해서 빠르게 구현을 쳐낼려고 했던 것이 독이 됐다.
기능이 급해서 어쩔 수 없던 결과라고는 생각하고 다음번에는 이 경험을 살려서 좀 더 정교하게 짜는 연습을 해봐야겠다.
어찌어찌 기본적으로 돌아가는 동작은 구현했다 5시간씩 자면서 빡세게 코딩했다 이슈를 적당한 단위로 잘 쪼개서 작업했다 적어도 앱이 터지지는 않게 예외처리를 잘 했다
이쯤 되면 출시 준비하고 있을 줄 알았다... 결과물에서 디테일들이 아쉬운 부분이 많이 보인다 이력서를 더 미리 적지 못해서 아쉬웠다
디테일을 잡자!! 미처 못 한 기능도 추가해보자 이력서 첨삭 받은 내용 반영하기
결국 자동 파싱 최초 버전을 만들었다 팀원의 도움으로 이력서를 읽을만 하게 만들었다
이력서에 시간을 너무 많이 썼다 자동 파싱 성능이 만족스럽지 못하다
오류, 사용성을 더 잡아야겠다 학습정리를 주말동안 열심히 해야겠다
-
자동로그인 시점 변경
- onCreate에 담기
-
사용완료 기프티콘 탭 개선
- 사용 완료 표시
-
백키 눌렀을때 설정으로 나가기
-
기프티콘 상세화면 개발
- 기프티콘 이미지 수정 버그 있음
- 수정해도 홈화면에서 개선이 안됨
- 1분짜리는 아주 간략하게만
- 10분 짜리는 기본적으로 우리가 공통되서 사용했던 내용들 및 관련 이야기 하기
- 그 다음은 각자 맡은 부분에서 기술적인 부분 이야기하기.
- 기능소개 페이지 스크롤 너무 심한거 같아서 줄이기
- gif 활용하고 정리할 부분들 정리하기
- 기술 스택 부분 다른 방법으로 적어보기
- 기술 발표 영상 어떻게 구성할까?
- 공통의 고민 + 개인별 고민으로 구성하다
- 어떠한 이유로 도입하게 되었고
- 이렇게 도입했고
- 도입해서 이런 이득을 봤다.
- 공통 고민으로는 무슨 얘기를 다룰까?
- 테마: 구현 중 필요가 느껴졌고, 팀 전체가 도입하여 개발 효율을 up
- UiState
- DbResult
- EventFlow
- Fragment Binding Delegate (무조건 Base를 상속 받는게 좋냐?)
- UiText
- UiState와 DbResult는 일관성을 지키는 비슷한 내용이니까 하나로 묶어도 되겠다.
- UiText는 수진의 애니메이션 AnimInfo와 비슷하니까 제외하자
- 일단 개인별로 주제를 하나씩 뽑아보자
- 지훈: 장소 데이터 캐싱
- 명범: 6중 combine 만들어서 하나의 상태로 관리
- 명석: 기프티콘 추가할 때 사용자의 편의를 고려했던 내용
- 수진: View의 애니메이션 코드를 줄여보려 했던 시도
- 어제 만들었던 개인별 피피티를 합쳐서 서식 맞추기
- 공통 주제
- 일관성을 위하여: UiState, DbResult
- 기능적으로 해결한 방법: EventFlow
- 오후에는 녹음까지 해서 피피티 합치기로
- 휴가
- 발표 자료 점검
- CI/CD 재시도 (Firebase Distribution 실패)
- 안드로이드에서 지문 인증 하기!
- Firebase Google 로그인 세팅 중 겪은 오류
- 양탐정의 viewModelScope.launch 살인사건 수사일지
- 쉿! KeyStore과 Cipher
- WorkManager 알림과 위젯을 사용해보자!
- 애니메이션으로 삡에 숨결 불어넣기
- 리뷰어 등록을 자동으로 해보자
- Mockk을 활용한 테스트
- 검색 결과를 Room에 캐싱해보자!
- Room One to Many
- CustomException 과 Result를 적극 활용해보자!
- View의 Event를 처리하기 위한 상태 클래스를 만들어보자!
- WorkManager 알림과 위젯을 사용해보자!