본문 바로가기

전체 글

(105)
[Kotlin]Sealed Class란 무엇일까 ? 👩‍💻 오늘의 할 일오늘은 Kotlin의 Sealed Class에 대해 알아보겠습니다. 이전 동아리 면접 질문에서 Sealed Class와 Enum Class의 차이점을 물어봤는데 아예 몰라서 대답을 못했던 경험이 있어서 이 부분에 대해서도 한번 알아보고 가겠습니다. 멋사에서 Kotlin 수업을 들을 때 한 번 들었었는데 좀 더 자세히 알아보려고 합니다.🔥 수업 시간에 배운 Sealed ClassSealed Class는 자기 자신을 상속받은 클래스들을 모아 관리하는 개념입니다. Kotlin의 클래스와 그 멤버 함수들은 final이기 때문에 상속될 수 없습니다.sealed class는 그 자체로 추상적이기 때문에 open 키워드로 메서드를 상속할 수 있습니다fun main() { val obj1..
Coroutine SharedFlow 👩‍💻 오늘의 할 일서버로에서 가져온 데이터를 기반으로 경도와 위도를 사용해서 지도에 마커를 표시해주고 있습니다. 문제는 처음 지도를 보여주는 Fragment가 생성되면 정상적으로  마커가 표시 되지만 BottomNavigation으로 다른 Fragment로 전환 후 다시 지도로 돌아오면 마커가 표시되지 않는 문제가 발생했습니다.서버의 데이터는 ViewModel에서 StateFlow로 받아왔습니다. 그래서 저는 문제의 원인을 StateFlow로 특정했습니다. StateFlow를 원인으로 삼은 이유는 StateFlows는 중복된 값을 방출 하지 않는다는 점 때문입니다. 자세한 글은 앞선 포스팅을 참고해주세요!  지난 1월 15일 작성했던 글을 처음으로 StateFlow를 사용했고 SharedFlow를 ..
StateFlow가 중복된 값을 반환하지 않는 이유(DistinctUntilChanged) 👩‍💻 오늘의 할 일그동안 저는 SateFlow가 같은 값을 방출하지 않도록 설계되어 같은 값이 필요할 경우 SharedFlow를 사용해야 한다고 알고 있었습니다. 오늘은 StateFlow가 왜 같은 값을 방출하지 않는지 낱낱이 파헤쳐 봅시다! distinctUntilChanged  StateFlow는 distinctUntilChanged와 같은 연산을 합니다. 먼저 distinctUntilChanged에 대해 알아보겠습니다. 먼저 함수명 그대로 해석을 해보겠습니다. distinct는 학교에서 DataBase를 배울 때 중복을 제거하고 데이터를 가져올 때 사용했던 기억이 나네요. 그럼 이어 해석을 해보면 distinct Until Changed 즉, 변경될 때까지 중복을 제거한다라고 해석할 수 있겠네..
코틀린 코루틴의 정석, 두 걸음 👩‍💻 오늘의 할 일 책을 얼렁 얼렁 읽고 싶은데 요즘 너무 바쁘네요... 수업 듣고 개인 프젝하고 스터디하고 SOPT 지원서 작성하구... 하루는 왜 24시간이고 내 몸은 하난지 😭 두 번째 쳅터는 코루틴을 연습하기 위한 IDE 환경을 세팅하는 부분과 작업 중인 코루틴이 어떤 스레드에서 실행되는지, 코루틴의 이름을 지정하는 내용입니다. 환경 세팅은 넘어가구 간단하게 나머지 파트를 빠르게 알아본 뒤, 세번째 챕터인 CoroutineDispathcer에 대해 알아보겠습니다. 5장까진 많이 공부했던 내용이라 얼렁 더더더 어려운걸 해보고 싶어요 💪 👨‍💻 2장 코루틴 개발 환경 설정 2-1. 코루틴 디버깅 환경 설정 앞장에서 살펴본 것 처럼 코루틴은 일시 중단 후 작업을 재개할 때 실행 스레드가 바뀔 수 있습..
코틀린 코루틴의 정석, 첫 걸음 👩‍💻 오늘의 할 일 코루틴을 공부하면서 정말 많은 도움을 받았던 블로그의 저자분께서 책을 내신다 해서 한 달 전부터 예약 걸고 기다렸는데 드디어 오늘 도착했습니다. 제가 살다 살다 전공 서적을 이렇게 기다릴 줄은 몰랐네요🤣 그냥 공부하기보단 저자분처럼 직접 글로 쓰고, 그림을 그리며 이해하는 게 가장 좋은 학습 방법이라고 생각해서 오늘부터 꾸준히 글을 남겨볼까 합니다. 해당 책과 블로그는 여기를 참조해 주세요! 코틀린 코루틴의 정석 책 출간 코틀린 코루틴의 정석 책 출간 소식 안녕하세요. '조세영의 Kotlin World' 기술 블로그를 운영 중인 조세영입니다. 이번에 제가 저술한 『코틀린 코루틴의 정석』, 책이 출간되었습니다. 이 책은 많 kotlinworld.com 이제 첫걸음마 단계를 넘어서 어디..
[TEKHIT] 오늘의 멘토링 멋쟁이 사자처럼에서 진행하는 안드로이드 앱 스쿨에서 멘토링을 받고 배운 지식들을 정리하는 글입니다. 👩‍💻 오늘의 할 말 어제에 이어 오늘도 멘토링을 받았습니다. 개인 멘토링은 아니었구 스터디분들과 팀 멘토링을 신청했는데 궁금한게 생겨서 팀 멘토링 후에 따로 개인 질문 시간을 요청했습니다. 어쩌다 보니까 이번주엔 멘토 세분 모두에게 멘토링을 받았네요 아주 고냥 좋아 죽어요 👼 📖 확장 함수를 사용해 권한 요청하기 제가 계속해서 찾고 찾던 확장 함수를 사용해 권한 요청하는 법을 드디어 알았습니다! 진짜 쉽고 간단한데 너무 신기하더라구요. 먼저 코드 부터 보시죠! 원리는 액티비티는 모두 Context를 가지고 있기 때문에 이를 이용해 확장 함수로 만들어주면 액티비티 내에서도 자유롭게 호출이 가능했습니다. 실..
[TEKHIT] 오늘의 멘토링 멋쟁이 사자처럼에서 진행하는 안드로이드 앱 스쿨에서 멘토링을 받고 배운 지식들을 정리하는 글입니다. 📕 질문 갤러리 관련 권한을 요청할 때 아래 코드와 같이 요청합니다. PermissionManagement를 따로 만든 이유는 여러 화면에서 갤러리를 접근할 때마다 권한이 있는지 확인하기 때문에 액티비티나 프래그먼트 마다 권한을 검사하는 코드가 완전히 중복되어 최대한 중복되는 부분을 줄이고자 만들었습니다. 제가 할 수 있는 최대한으로 만들어봤는데 여기서 다른 더 좋은 방법이 있는지 알고 싶습니다. class PermissionManagement(private val context: Context) { companion object{ val REQUEST_IMAGE_PERMISSIONS = if (Build..
[TEKHIT] 오늘의 멘토링 멋쟁이 사자처럼에서 진행하는 안드로이드 앱 스쿨에서 멘토링을 받고 배운 지식들을 정리하는 글입니다. 👩‍💻 오늘의 할 말 요즘 프로젝트를 하느라 바빠서 오랜만에 글을 쓰네요. 빨리 프로젝트를 마무리하고 싶습니다. 다음 계획으론 MVVM과 GoF의 디자인 패턴을 공부할 건데 재미있어 보여서 얼렁 빨리 하고 싶어요😭 공부할 책이랑 강의도 미리 정해놔서 빨리 하고싶습니다...!🔥 📕 질문 내가 등록한 매장 정보를 보여주는 프래그먼트에서 정보를 수정 후, 사진첩을 열고 돌아오면 기존의 수정 데이터가 저장되지 않고 수정 이전의 데이터를 보여주며 사진첩에서 이미지를 선택하고 변경해도 이미지가 변경되지 않습니다. 📌Layout.xml Layout은 매장 정보는 Local Database인 Room에서 가져온 정보를 ..