Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
5주차 작업
이번 주도 바쁘게 한 주를 보냈습니다.
시간 끌지 않고 빠르게 한 주 작업들 보러 가시져!
1. Jetpack Compose Design System
이번 주도 어김없이 Jetpack Compose Design System 작업을 진행해주었는데요.
이번 주는 Chip Component를 개발해주었습니다.
어려운 점은 딱히 없었고 굳이 꼽자면 해당 컴포넌트에서 5글자 이상부터 ellipsis처리를 요구하였기 때문에 가로길이를 고정으로 주고 5글자에 해당하는 길이부터 ellipsis처리가 되도록 구현해주었습니다.
2. 파일 업로드 로직 개선
저희 회사 앱인 우쥬에는 미션 인증 제출이라는 기능이 있는데요.
미션 인증 제출 기능에서 기존에 구현하였던 파일 업로드 로직을 개선하는 작업을 진행해주었습니다.
기존에 용량이 큰 영상을 업로드 하는 경우 영상 업로드에 처리하는 시간이 길어지게 되었고, 사용자 입장에서 로딩화면만 1~3분동안 쳐다봐야하는 상황이 발생했습니다. 유저 입장에서는 제대로 영상 업로드가 처리되고 있는 것 같지 않아 미션 인증 제출을 취소하는 상황이 빈번하게 일어났고 이를 해결하기 위해 파일 업로드 진척도를 받아서 유저에게 보여줘야겠다는 생각이 바로 들어 실행에 옮겼습니다.
그 과정에서 createFormData함수의 body파라미터에 file을 RequestBody로 변환하여 넣어주는 과정에 집중하였고,
RequestBody 내의 주요 메서드 중 하나인 writeTo메서드를 통해 데이터를 네트워크로 스트림 처리할 수 있는데 해당 메서드를 override하여 sink에 쓰이는(write) 것을 관찰하면 file upload 진척도를 감지할 수 있지 않을까?라고 생각하게 되었습니다.
바로 실행으로 옮겨 파일을 RequestBody로 변환하면서 업로드 진행 상태를 콜백으로 전달하는 함수를 구현하였습니다.
또 이 과정에서 새로 구현한 함수와 기존에 file을 RequestBody로 변환하는 함수의 성능을 똑같거나 더 개선시키고 싶어 Okio라는 라이브러리도 뜯어보게 되었는데요.
성능 개선을 위해 Okhttp, Okio와 같은 라이브러리들을 뜯어보면서 이건 왜 이렇게 구현했는지, 내부 동작이 어떤지 확인해가는 과정이 너무 좋았습니다 :)
이 부분에 대한 내용은 나중에 개발 블로그 글을 써서 공유해드리겠습니다! 여기서 다루기엔 내용이 너무 광범위하네요..ㅠㅠ
3. F-Lab 멘토링
이번 주에도 F-Lab멘토링을 진행하였습니다.
그 과정에서 제일 기억에 남는 것은 kotlin의 object가 싱글톤을 구현하는 방식에 대한 내용이 제일 기억에 남는데요.
Kotlin의 object는 디컴파일 해보면 자바의 eager initialization방식으로 구현되어있다는 것을 접하였고, 신기하였습니다.
이런 지식들을 머릿속에 채워나갈 때마다 기초는 항상 중요하다는 생각이 듭니다..
마무리
이번 주에는 실제 유저가 어려움을 겪는 부분을 파악하고 이를 개선하기 위해 공부하니 공부 효율이 무척 올라서 너무 기분 좋게 공부하고 개발했습니다.
앞으로도 이런 방식으로 개발하면 정말 폭발적으로 성장할 수 있을 것 같아요 :)