Android 6

[Android] WebSocket으로 실시간 채팅 구현하기 1 - WebSocket이란?

최근에 "납작마켓"이라는 프로젝트에서 웹소켓을 활용한 채팅 기능을 구현했습니다. 이전엔 Retrofit을 활용한 REST 통신만 다뤄봤기에 안해 많이 해멜 것이라고 예상했는데, 예상대로 시행착오도 많았고 완성까지 꽤 오랜 시간이 걸렸습니다.많은 고민과 시간을 투자한 기능이기에, 추후에 다시 웹소켓 기반 기능을 구현하게 되거나 웹소켓의 기능을 확장하는 상황에 대비해, 이 시점에서 생생한 구현 경험을 기록으로 남겨보고자 합니다. 한 번에 다 풀어내기엔 양이 많아서, 여러 편에 걸쳐 차근차근 정리할 예정입니다. 이번 글 1편에서는 본격적인 구현 설명에 앞서, 웹소켓이 어떤 방식으로 동작하며 서버와 클라이언트를 연결해주는지, 그 개념을 먼저 간단히 정리해보았습니다.HTTP와 실시간 통신일반적인 http 프로토콜..

[Jetpack Compose] CompositionLocal에 대하여...

CompositionLocal이란?Composable 트리의 최상단에서 상태를 관리하기 위해 소개된 개념 상태 호이스팅 (State Hoisting)컴포저블 함수는 트리 구조로 조직된다. 먼저 등장하는 컴포저블이 상위, 그 다음이 하위가 된다.상태를 트리의 가능한 가장 상위 노드에 선언하여 관리하는 것이 상태 호이스팅이며, 컴포즈에서 권장되는 패턴이다.특정 상태가 여러 컴포넌트에서 필요한 경우, 그 모든 컴포넌트들의 접점이 되는 상위 컴포넌트에서 관리함으로써 재사용성을 높임여러 컴포넌트들이 하나의 상태를 참조함으로써, UI의 일관성을 유지할 수 있음상태 변경 로직을 한 곳에 집중시킬 수 있음. 이를 통해 가독성을 향상시키고, 상태 변경에 따른 부수 효과(Side-Effects)도 관리하기 쉬워짐하위 컴포..

[Jetpack Compose] State Holder로 상태관리하기

컴포즈에서 UI의 상태를 관리하다보면, 상태값을 어디에서 관리해야 하는지 굉장히 헷갈린다. 상태 호이스팅을 통해 최대한 공통되는 Composable 함수로 끌어올려서 Stateful한 컴포저블을 최소화하는 건 좋지만, 이렇게 만들어진 Stateful한 컴포저블에 지나치게 많은 상태가 포함되는 일이 발생한다. 그렇다고 뷰모델에 넣기엔 UI에 대한 정보를 지나치게 많이 포함하게 된다. 뷰모델은 비즈니스 로직에 집중해야 한다. 컴포즈에선 이러한 문제를 해결하기 위해 상태 홀더(state holder) 클래스 사용을 추천한다.컴포저블에 UI 요소의 하나 또는 여러 개의 상태 필드가 사용되는 복잡한 UI 로직이 포함되어 있다면 상태 홀더 클래스로 그 책임을 위임해야 합니다. 이렇게 하면 컴포저블의 로직을 격리된 ..

[Android] Maven Central 라이브러리 배포기

오픈소스 라이브러리란?오픈소스 라이브러리는 소스 코드가 공개되어 누구나 자유롭게 사용, 수정, 배포할 수 있는 소프트웨어 라이브러리를 의미합니다.내가 개발한 코드를 남들이 사용할 수 있도록 배포하고, 남들이 지속적으로 유지보수 및 개선을 하며 기능을 보강하거나 확장해나갈 수 있죠.이 포스트에선 직접 구현한 안드로이드 라이브러리를 Maven Central에 배포하는 방법을 소개합니다.  Maven Central 설정 Maven CentralOfficial search by the maintainers of Maven Central Repository.central.sonatype.com 오픈소스 라이브러리를 다른 프로젝트에서 활용하기 위해서는 Maven이나 Jitpack과 같은 공용 오픈소스 저장소에 등록..

Android 2025.02.25

[TIP] 앱 실행 시 실행창 대신 로그캣 띄우기

안드로이드 스튜디오에서 작업할 때 코드 디버깅 중 로그를 확인하거나 에러를 확인할 때 로그캣을 자주 쓰기 마련입니다. 허나 앱을 실행시키면 제일 먼저 뜨는 창은 Run창이고, 이를 매번 로그창으로 바꾸는 건 매우 귀찮은 일 중 하나입니다.이러한 문제를 해결하기 위해! 앱을 실행시킬 때마다 Run 창이 아닌 로그캣 창을 띄우는 방법을 알아보겠습니다!! 앱을 실행시키면 기본적으론 다음과 같이 Run 창이 뜨게 됩니다. 이때 빨간색의 정지 버튼 옆에 점 세 개가 그려진 버튼을 클릭합니다.버튼을 클릭하면 "Modify Run Configuration" 옵션이 나오는데 이걸 클릭합니다. Modify Run Configuration을 선택하면 다음과 같은 창이 뜨게 됩니다. 여기에서 Miscellaneous 메뉴에..

[Jetpack Compose] 수정자, Modifier

다음은 안드로이드 공식 문서에 나온 Modifier에 대한 설명입니다.수정자는 컴포저블을 장식하거나 강화하기 위해 사용되는 기능으로, 수정자를 통해 다음과 같은 종류의 작업을 실행할 수 있습니다.- 컴포저블의 크기, 레이아웃, 동작 및 모양 변경- 접근성 라벨과 같은 정보 추가- 사용자 입력 처리- 요소를 클릭 가능, 스크롤 가능, 드래그 가능 또는 확대/축소 가능하게 만드는 높은 수준의 상호작용 추가  즉, 어떤 컴포저블의 속성을 다루기 위해 사용되는 표준 코틀린 객체입니다. 사용 예시를 한 번 봅시다:@Composableprivate fun Greeting(name: String) { Column( modifier = Modifier .padding(24.dp) ..