HLS란? HLS(HTTP Live Streaming)은 가장 널리 사용되는 비디오 스트리밍 프로토콜입니다. 이 프로토콜은 동영상을 여러 개의 작은 세그먼트로 분할하고, 이러한 세그먼트를 HTTP 기반의 웹 서버를 통해 전송합니다. 클라이언트는 이 세그먼트를 다운로드하여 연속적으로 재생함으로써 스트리밍 영상을 시청할 수 있습니다. HLS의 주요 특징 ...
Cache (캐시) OkHttp에서의 캐시란 API 호출의 응답을 로컬 저장소에 저장하여 이후 동일한 요청이 발생할 때 서버에서 데이터를 가져오지 않고 로컬 저장소에서 불러오게 하여 성능을 향상시키는 방법입니다. 이렇게 하면 네트워크 대역폭 사용이 줄어들고 응답 시간이 단축되며, 서버 부하가 감소합니다. 언제 사용하면 좋을까?? 캐시를 사용하기 적합한...
오늘은 Android에서 OkHttp - Interceptors에 대해 알아보는 글을 작성하려고 합니다. Interceptors는 네트워크 요청과 응답을 관리하고 조작하는 역할을 합니다. OkHttp Interceptors 란? Interceptors는 OkHttp의 핵심 기능 중 하나로, 네트워크 요청과 응답을 가로채어 추가 작업을 수행하거나 수정할 ...
안드로이드 개발할 떄 서버와 통신은 필수적인 요소 중 하나입니다. 이때 이미지, 비디오, 오디오와 같은 바이너리 데이터를 서버에 업로드하거나 다운로드할 경우 Multipart 요청이 자주 사용됩니다. 그렇기에 이번 글에서 Multipart 요청을 사용하는 방법과 관련된 정보를 제공하고자 합니다. Multipart 요청이란? Multipart 요청은 일반...
토이 프로젝트 UI 작업을 하려고 앱을 키는 순간 갑자기 앱이 켜지는 모션과 함께 바로 꺼져 버린다 이게... 무슨일이지...? 당황한 나는 Log를 봤는데 다음과 같은 이슈가 있었고 로그 전체는 아래와 같이 작성되어 있었습니다.발생 원인을 찾아본 결과 이유는 다음과
WorkManager란? WorkManager는 안드로이드에서 백그라운드 작업을 관리하는 라이브러리입니다. WorkManager를 사용하면 앱에서 실행되는 작업을 백그라운드에서 안정적으로 실행할 수 있습니다. WorkManager는 안드로이드 API 수준 14이상에서 사용할 수 있으며 이전 버전의 안드로이드에서도 호환성을 제공합니다. WorkManag...
오늘은 Protobuf에 대해서 설명하는 글을 작성하려고 합니다. Protobuf(Protocol Buffers)의 경우 사내 개발팀 내에서 이야기가 나오게 되었고 우리도 해당 기술의 도입을 검토할 필요가 있을 것 같다! 라는 이야기가 나오게 되어 공부하게 되었습니다.
공유하기 기능을 구현하기 위해 Firebase dynamic link를 이용해야 하는 일이 생겨 급히 해당 내용에 대해서 공부하기 시작했습니다. 해당 기능을 구현하기 위해서는 다음과 같은 Process가 있습니다. 구현 절차 Firebase console에서 Dynamic Link를 설정합니다. Firebase SDK를 프로젝트에 추가해줍니다. An...
이번 글에서는 Android 앱에서 WebSocket 통신을 구현하는 방법에 대해서 작성해보려고 합니다. WebSocket이란? WebSocket은 웹 브라우저와 서버 간에 양방향 실시간 통신을 가능하게 하는 프로토콜입니다. 일반적인 Http 요청과 달리, WebS
State Hoisting State Hoisting은 UI 컴포너틑가 상태를 가지지 않고 대신 상태를 렌더링 하는 컴포넌트로부터 전달받는 패턴을 말합니다. 이 패턴을 사용하면 코드의 가독성, 유지보수성, 테스트 용이성이 향상됩니다. 상태 호스팅의 핵심 개념은 UI
Compose를 제대로 이해하지 못하고 Compose를 사용해 이슈가 발생했다... (정말 죄송합니다....) 너무나도 당연한 것을 잘못 적어한 실수여서 블로그에 작성하는 거 자체가 부끄러운 일이지만 공개적으로 적어 이런일이 다시는 안생기도록 꼼꼼하게 코딩하는 자세를 가지겠습니다. 실수한 부분은 LazyColumn 부분입니다. LazyColumn 내부에...
클라이언트가 클래스의 인스턴스를 만들게 하는 가장 일반적인 방법은 기본 생성자를 사용하는 방법입니다. 코드로 보여드리면 다음과 같이 Person Class를 통해 name과 age라는 두 개의 속성을 가지고 있는 클래스를 생성하였습니다. 그리고 instance에 nam
개요 입사 4개월 차인 저는 오늘도 개발을 하고 있었습니다. UI 부분(Compose)을 작업할 때 문제가 발생했었습니다. BottomSheete안에서 문자가 너무 길어져 텍스트 다음 부분에서 생성되어야할 부분이 생기지가 않는 것 입니다. 레이아웃 인스펙터로 확인해본
이번 글에서는 클린 아키텍처를 사용할 때 많이 하는 실수에 대해서 작성해보려고 합니다. 글에 대해서 작성 전 클린 아키텍처에 대해서 간략하게 설명한 후 본격적으로 설명해보겠습니다. 클린 아키텍처의 목적은 바로 관심사를 분리하여 각 클래스가 한가지 역할만을 할 수 있
해당 글은 How to Retain Your App's UI State Across Configuration Changes In Jetpack Compose를 읽고 자료를 조사하여 작성하는 글입니다. 안드로이드 Jetpack Compose에서 UI 상태를 업데이트 하려
이번 글은 다음의 아티클을 참고하고 추가적인 자료 조사 후 작성하였습니다. 아티클 주소Jetpack Compose를 도입한다고 해서 앱의 수명 주기를 관리를 안해줘도 되는 것은 아닙니다. Composable에는 고유한 수명주기가 존재하고 있기 때문에 Stream을 s
Paging에 대한 간단한 설명 글을 시작하기 전에 Paging에 대해 간단히 설명해보겠습니다. Paging 라이브러리를 사용하면 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있습니다. 또한 앱에서 네트워크 대역폭과 시스
개요 Kotlin는 읽고 쓸 수 있는 프로퍼티(var)와 읽기 전용 프로퍼티(val)로 구분됩니다. 마찬가지로 코틀린은 읽고 쓸 수 있는 컬렉션과 읽기 전용 컬렉션으로 구분됩니다. 이는 컬렉션 계층이 설계된 방식 때문이라고 할 수 있습니다. 다음 이미지는 코틀린의
Repository 패턴은 앱에서 데이터를 관리하기 위해 사용되는 패턴 중 하나 입니다. Repository 패턴은 데이터를 처리하는 로직을 추상화하여, 데이터를 가져오는 소스를 분리하고 앱에서 데이터에 접근할 때 일관성을 유지시켜줍니다. Repository 패턴을 적
Sharedlow는 Kotlin의 코루틴 라이브러리 중 하나인 Kotlinx.coroutines에서 제공하는 클래스 입니다. SharedFlow는 다수의 코루틴 간에 데이터를 공유하며, 발행-구독 패턴을 따르는 데이터 스트림을 생성하는데 사용합니다. SharedFlow