전체 글 15

StateIn

stateIn은 주로 Kotlin의 Flow와 관련된 개념으로, 상태를 관리하는 데 유용한 함수입니다. 이 함수는 Flow의 값을 상태로 변환하여, 상태의 변경을 관찰하고 그에 따라 UI를 업데이트할 수 있도록 돕습니다. 아래에 stateIn의 주요 특징과 사용 방법을 설명할게요.주요 특징상태 관리: stateIn을 사용하면 Flow의 값을 상태로 변환하여, 여러 컴포넌트에서 이 상태를 공유할 수 있습니다.단일 출처의 진리(Single Source of Truth): 애플리케이션에서 한 곳에서 상태를 관리하고, 이를 다른 곳에서 사용할 수 있게 합니다.Lifecycle-aware: stateIn은 Lifecycle을 인식하여, Activity나 Fragment가 활성화된 상태에서만 값을 수집합니다.재사용..

카테고리 없음 2024.10.16

Hot Stream vs Cold Stream

Hot Stream동작 방식:Hot stream은 데이터 생산이 구독자와 독립적으로 이루어집니다. 즉, 데이터가 생성되고 방출되는 과정이 구독 여부와 관계없이 계속 진행됩니다.구독자의 존재 여부:구독자가 없더라도 데이터를 계속 방출합니다. 이로 인해 구독자가 구독을 시작한 시점에 이미 방출된 데이터는 받지 못할 수 있습니다.예시:SharedFlow, StateFlow, Channel 등. 예를 들어, 이벤트 기반 시스템에서 발생하는 이벤트는 여러 소비자에게 동시에 전달되며, 소비자가 구독하기 전에 발생한 이벤트는 소비되지 않습니다.상태 유지:일반적으로 마지막 상태나 값을 유지하여 새로운 구독자에게 제공할 수 있는 기능이 있습니다.Cold Stream동작 방식:Cold stream은 구독자가 있을 때만 데..

기타 IT 지식 2024.10.15

StateFlow vs SharedFlow

StateFlow상태 유지:항상 현재 상태 값을 유지하며, 구독자가 구독할 때 즉시 그 값을 제공합니다.구독자는 가장 최근의 상태를 항상 받을 수 있습니다.최신 상태:StateFlow는 상태가 변경될 때마다 구독자에게 자동으로 업데이트를 전달합니다. 이로 인해 UI 상태 관리에 유용합니다.읽기 전용 인터페이스:외부에서 값을 변경할 수 없도록 StateFlow는 읽기 전용이며, 상태를 변경하려면 MutableStateFlow를 사용해야 합니다.Hot Stream:StateFlow는 "hot" 스트림으로, 구독자가 없더라도 값을 유지합니다.SharedFlow멀티캐스트:여러 구독자에게 동시에 값을 방출할 수 있는 "hot" 스트림입니다. 구독자가 없는 경우에도 값을 방출할 수 있습니다.다양한 배출 방식:Sha..

kotlin 2024.10.15

StateFlow

상태 유지:StateFlow는 항상 현재 값을 유지하며, 구독자가 구독할 때 즉시 그 값을 제공합니다. 이는 UI와 상태 관리를 할 때 유용합니다.일반 Flow는 값을 방출할 때마다 새로운 값만 전달하며, 이전 값을 저장하지 않습니다.값 변경 감지:StateFlow는 값이 변경될 때마다 구독자에게 자동으로 업데이트를 전파합니다. 이는 UI가 상태 변화에 즉시 반응할 수 있게 합니다.일반 Flow는 값을 방출하는 시점에만 구독자에게 데이터를 전달합니다.Cold vs. Hot:StateFlow는 "hot" 스트림입니다. 즉, 상태가 변경되면 항상 값을 발행하며, 구독자가 없더라도 상태를 유지합니다.Flow는 "cold" 스트림으로, 구독자가 있을 때만 값을 생성하고 방출합니다.Thread-Safety:Sta..

kotlin 2024.10.15

Flow - SharedFlow, MutableSharedFlow

SharedFlowImmutable: SharedFlow는 읽기 전용입니다. 외부에서 값을 직접 수정할 수 없습니다.구독 가능: 여러 구독자가 있을 수 있으며, 구독자는 방출된 값을 받을 수 있습니다.Replay: 이전 값을 저장하고 새 구독자가 구독할 때 그 값을 받을 수 있도록 설정할 수 있습니다.백프레셔: 수신자가 처리할 수 없는 경우에 대한 대처 메커니즘이 내장되어 있습니다.public interface SharedFlow : Flow { /** * A snapshot of the replay cache. */ public val replayCache: List /** * Accepts the given [collector] and [emits][FlowCol..

kotlin 2024.10.15

Unicode (유니코드)란 무엇인가?

서론유니코드는 모든 문자를 다루도록 설계된 방식입니다.https://www.unicode.org/consortium/consort.html Unicode ConsortiumThe Unicode Consortium The Unicode Consortium is a non-profit corporation devoted to developing, maintaining, and promoting software internationalization standards and data, particularly the Unicode Standard, which specifies the representation of text in awww.unicode.org유니코드 컨소시엄에서 정의된 내용을 기준으로 관리가 됩니..

기타 IT 지식 2024.10.14

Diffie-Hellman key exchange

유래Whitfield Diffie와 Martin Hellman이 1976년에 암호 키를 교환하는 방법을 제시하였다.발명에 기여한 두 사람의 이름을 따 Diffie-Hellman이 되었다.안전하지 않는 채널에 공유 비밀키를 설정할 수 있는 방법이다. 방식알리스와 밥은 임의의 시작 색상을 동의합니다."노란색"으로 공통으로 시작해봅니다.알리스는 "주황색"을 비밀 색상으로 선택합니다.밥은 "청록색"을 비밀 색상으로 선택합니다.알리스의 "노란색"+"주황색" -> "황토색"을 공유합니다.밥은 "노란색"+"청록색" -> "연파란색"을 공유합니다.각자 공유된 색상과 비밀 색상을 혼합하면 같은 비밀 색상인 "진한갈색"이 완성됩니다. 암호화 수식으로 정리된 내용은 위키디피아를 참고하면 좋을 것으로 보입니다.- https:..

[Android Multi module] DataStore protobuf 암호화/복호화 적용

이전에 작성된 내용으로 DataStore protobuf Read/Write를 사용하게 되면 저장된 파일을 봤을 때 평문으로 저장되는 타입이 생깁니다.https://whjungdev.tistory.com/6 저장되는 데이터를 직접 확인해보기 위해서 test_data.proto 파일에string 타입을 추가해보았습니다.syntax = "proto3";option java_package = "com.example.sampleapp.core.datastore";option java_multiple_files = true;message TestData { bool isTest = 1; string test = 2;}그리고 string 테스트 값을 넣어보았습니다.viewModel.updateTestString..

Android/Module 2024.09.13

[Android Multi module] DataStore protobuf 적용 테스트

이전에 작성된 protobuf 라이브러리 세팅을 먼저 진행한다.DataStore protobuf 라이브러리 세팅 방법.proto file은 /core/datastore/src/main 하위 디렉토리에 생성을 한다.https://github.com/woohyun-jeong/AndroidSampleApp/tree/datastore_test1/core/datastore/src/main/proto예)syntax = "proto3";option java_package = "com.example.sampleapp.core.datastore";option java_multiple_files = true;message TestData { bool isTest = 1;}proto 객체를 만들게 되면 해당 파일을 참조하..

Android/Module 2024.09.13