전체 글 (30) 썸네일형 리스트형 Realm Kotlin SDK 특징 Realm은 모바일에서 많이 사용하는 데이터베이스로 순수 Kotlin 언어로 개발된 Realm Kotlin SDK의 4가지 특징을 정리했습니다. 목차 Frozen Architecture Realm Kotlin SDK에는 Frozen Architecture가 적용되어 기존 SDK들과 다르게 live objects를 지원하지 않습니다. 대신 frozen objects를 통해 스레드 간 안전하게 데이터를 전달 할 수 있습니다. 생각해보면 기존에 사용했던 Realm Java SDK에서는 데이터를 조회하면 live objects를 반환하고 다른 스레드에서 해당 값에 접근하는 경우 문제가 되었습니다. 그래서 조회한 live objects를 copy해서 사용하거나, 매번 Realm 인스턴스를 생성하여 스레드 신경을 .. Realm Database 암호화하여 안전하게 관리하는 방법 개요 Realm Database에 암호화를 적용하여 모바일 앱에 저장된 데이터를 안전하게 관리하는 기능입니다. 이 글은 데이터베이스 암호화 키를 생성하고, 암호화 키를 암호화하여 관리하는 방법을 설명합니다. Realm은 내부적으로 AES-256+SHA-2 방식으로 디스크의 Realm 파일을 암호화하고 초기화 시 64-byte 키를 적용해야 합니다. 암호화 키의 처음 256 bits는 AES-256으로 데이터를 암복호화하고, 나머지 256 bits는 무결성(HMAC)을 검증하는 데 사용됩니다. Encrypt a Local Realm 암호화를 위한 64-bytes 키를 생성하여 Realm configuration에 지정하고 Realm을 실행하는 예제 코드입니다. fun generateRealmKey(): B.. Coroutines 이것만 알고 사용하자! 개요 코루틴(Coroutine)은 구조화된 동시성을 기반으로 비동기 작업을 효율적으로 처리합니다. 안드로이드 앱은 main thread에서 onDraw()를 지속적으로 호출하며 화면을 그립니다. 그렇기에 네트워크 통신이나 파일에 접근하는 작업들을 main thread에서 실행하면 화면이 버벅이거나 ANR이 발생합니다. 코루틴은 이러한 시간이 오래 걸리는 작업들이 background thread에서 실행되도록 돕습니다. 주요 개념 suspend, resume 코루틴은 suspend function을 통해 비동기적인 작업들을 콜백이 아닌 순차적인 코드로 표현할 수 있습니다. 실행 중인 코루틴 내에서 suspend function을 만나면 해당 작업을 위해 다음 모든 작업들이 일시정지(suspend) 되고, .. kotlinx.serialization 라이브러리 소개 개요 이 문서는 Kotlin에서 데이터 Serialization(직렬화) 시 사용하는 kotlinx.serialization 라이브러리에 대해 소개합니다. Serialization(직렬화)은 프로그램에서 사용하는 데이터 객체를 특정 포맷의 문자열로 변환하는 프로세스이고, Deserialization(역직렬화)은 외부 소스에서 받은 문자열을 데이터 객채로 변환하는 프로세스입니다. 일반적으로 API 호출 시 Json 포맷의 response를 Deserialization(역직렬화)하는 데 사용합니다. kotlinx.serialization 라이브러리의 특징 순수 Kotlin 언어로 작성 다양한 포맷 지원(JSON, Protobuf, CBOR, Hocon, Properties) Kotlin Multiplatfo.. [KMM] Realm-Kotlin Kotlin MultiPlatform Mobile에서 Realm Database를 사용하기 위해, 순수 Kotlin언어로 작성된 Realm-Kotlin을 소개합니다! sdk 설치 Object Schema 정의 Realm 열기 Data 읽고 쓰기 Reactive 형태로 Data 변화 감지 1. sdk 설치 Kotlin MultiPlatform에서 설치하는 방법으로 해당 모듈의 build.gradle.kts 파일에서 realm, coroutines 관련 dependencies 및 plugins 추가 내부적으로 Realm Kotlin은 coroutines를 사용하여 비동기 처리를 하기에 관련 라이브러리 필요함 주의사항 : Realm Kotlin 버전 1.3.0 이상 사용 시 프로젝트의 Kotlin 버전 1.7.. [Android] Health Connect 개요 2022년 Android에서 새롭게 발표한 Health Connect Api는, 여러 기기 및 앱의 건강 및 피트니스 데이터에 대한 접근을 통합하고 사용자가 데이터를 관리할 수 있도록 지원하는 기능이다. 기기 내 건강 및 피트니스 데이터 저장소 제공 (on-device storage) 데이터를 읽고 쓰는 단일 인터페이스 제공 세분화된 사용자 권한 관리 중앙에서 보안과 데이터 관리 특징 Health Connect 앱 설치 필요 (Google Play에서 설치된) Android SDK 버전 28(Pie) 이상부터 가능 현재 Health Connect 앱은 beta 버전(2020.08.08 기준) 아직 Samsung Health와 Google Fitness에서 Health Connect를 도입하지 않음.. [Android] Fastlane 적용하여 빌드 및 배포 자동화 개요 Fastlane은 앱의 빌드, 테스트, 배포(출시) 등 일련의 작업들을 자동화 해주는 툴로 Android, iOS 환경에서 사용할 수 있습니다. 직접 적용해보며 느낀 특징으로는, versionCode 자동으로 관리 gradle 작업을 위임하여 빌드 play store 배포 (production, alpha, beta, internal의 track 지정) Fastlane 설치 저는 Mac OS 기준 HomeBrew를 사용하여 fastlane을 설치했습니다. 다른 환경에서 fastlane 설치 가이드 $ brew install fastlane Fastlane 초기화 프로젝트 루트 디렉토리에서 실행 $ fastlane init 초기화 시 아래의 작업 입력 패키지 이름 입력 Service Account 등.. [Basic] UTC / ISO 8601 / RFC 3339 1. UTC (협정세계시) 1972년 1월 1일부터 세계 공통으로 사용하고 있는 협정세계시는 국제적인 표준 시간의 기준으로 쓰이는 시각이다. UTC는 그레고리력의 표기를 따른다. 1일은 24시간으로 나뉘며, 1시간은 60분으로 나뉜다. 1분은 60초로 나뉘는 것이 보통이나 약간은 가변적이다. UTC의 하루는 보통 86,400초이다. UTC는 그리니치 평균시(GMT)에 기반하므로 GMT로도 불리기도 하는데, UTC와 GMT는 초의 소숫점 단위에서만 차이가 나기 때문에 일상에서는 혼용된다. 기술적인 표기에서는 UTC가 사용된다. 다만, 영국(특히 BBC)에서는 아직도 UTC가 아닌 GMT(런던의 그리니치천문대 평균시)라는 표현을 더 선호하는데 이는 UTC+0이 기존의 그리니치 표준시를 토대로 한 것이며, 그.. 이전 1 2 3 4 다음