View와 ViewGroup란?안드로이드 화면을 구성하는 요소로 View와 ViewGroup이 존재한다.애플리케이션을 실행시켰을때 보이는 UI 요소들이 View라고 할 수 있고, 이 View를 담아 적절히 배치하기 위해 필요한 것이 ViewGroup이다. View: 화면에 보이는 구성요소ViewGroup: N개의 View를 포함할 수 있는 컨테이너ViewGroup에는 View, ViewGroup이 포함될 수 있고, ViewGroup은 View를 포함하므로 모든 UI라는 것은 View라고 할 수 있다. View와 ViewGroup의 종류일반적으로 View는 위젯, ViewGroup을 레이아웃이라고 한다. View에서 자주 사용되는 것들엔 당연하게도 TextView, EditText, Button, Ima..
아호 코라식 알고리즘(Aho-Corasick string matching algorithm)은 Alfred V. Aho와 Margaret J. Corasick이 고안한 문자열 매칭 알고리즘이다. 패턴 1개를 탐색하는 매칭 알고리즘은 선형 시간에 구현됨을 KMP 등 여러 알고리즘을 통해 증명되었으나, 패턴 집합에 대해 해당 알고리즘들을 사용해보면 패턴 개수에 비례해 그 속도가 느려진다는 점이 발생했다.시간복잡도는 O(m + zn)이 되는 것이다.m: 모든 패턴들의 길이 합z: 패턴 수n: text 크기이를 보완한 것이 아호 코라식 알고리즘으로 시간복잡도는 O(m + n + k)이다. 패턴 집합에 대하여 패턴 길이와 텍스트의 선형 시간에 탐색을 처리할 수 있게 된다.k: 텍스트 내에 패턴의 발생 수 아호 코..
잡설:면접때 받은 질문인 안드로이드 4대 컴포넌트.아니 정확히는 안드로이드에 액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더에 대해 설명해보라고 들었다.맨 처음에 이 대답을 요구하셨는데 잘못 알아들어 컴포넌트가 아니라 Jetpack 컴포저블에 대해 설명해버렸다.그래서 이후에 재차 질문하신 것이지만, 정확히 대답을 못했다. 나중에 면접이 끝나갈때야 머리속에서 망했다는 생각이 들었던 기억이 난다. 본문: 이 안드로이드 4대 컴포넌트(구성요소)를 알아보자.각각의 구성요소는 시스템이나 앱의 진입점이며, 서로 Intent를 통해 상호작용이 가능하다. 특징으로는 다음과 같다.각 컴포넌트는 독립적이다.각 컴포넌트는 고유의 기능을 수행한다.각 컴포넌트는 Intent를 통해 상호작용이 가능하다. 1. 액..
https://io.google/2024/intl/ko/ Google I/O 2024Don't miss our biggest developer conference, featuring product news and innovations from Google. Tune in to I/O for livestreamed keynotes and technical sessions on demand.io.google 24년 5월 14일 미국 캘리포니아 마운틴뷰, 쇼라인 앰피씨어터에서 구글 I/O 2024 개발자 컨퍼런스가 개최되었다.조금 늦어졌지만 내용들을 확인해보고 내 주 된 관심사를 체크해보기로 했다. https://blog.google/intl/ko-kr/products/google-io-2024-100-ann..
https://small-stepping.tistory.com/1005 WorkManager로 백그라운드 작업WorkManager란?WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위한 아키텍처 구성요소로서 Android Jetpack의 일부이다. 상황별 실행을 적용하면 WorkManager가 최대small-stepping.tistory.com 위 공부를 할 때, 따라한 Jetpack Compose Tutorial 프로젝트에서 사용한 이미지를 저장하는 파트에서 Media.insertImage를 사용하는 부분이 존재했는데, 해당 부분이 API 레벨 29에서부터 deprecated 되어 수정이 필요했다. https://stackoverflow.com/questio..
WorkManager란?WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위한 아키텍처 구성요소로서 Android Jetpack의 일부이다. 상황별 실행을 적용하면 WorkManager가 최대한 빨리 백그라운드 작업을 실행한다. 보장된 실행을 적용하면 WorkManager가 사용자가 앱을 벗어난 경우를 비롯한 다양한 상황에서 로직을 처리하여 작업을 시작합니다. WorkManager는 매우 유연한 라이브러리로, 다음과 같은 이점이 있다.비동기 일회성 작업과 주기적인 작업 모두 지원네트워크 상태, 저장공간, 충전 상태와 같은 제약 조건 지원동시 작업 실행과 같은 복잡한 작업 요청 체이닝한 작업 요청의 출력이 다음 작업 요청의 입력으로 사용됨API수준 14까지 호환됨..
Jetpack Compose 튜토리얼의 해당 과제를 수행 중에 있다. https://developer.android.com/codelabs/basic-android-kotlin-compose-flight-search?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-3%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-flight-search#0 프로젝트: Flight Search 앱 만들기 | Android Developers사..
해결법을 찾기는 바로 찾았다.한글 사용자들이 블로그에 작성한 글들도 여럿 존재한다. https://stackoverflow.com/questions/46665621/android-room-persistent-appdatabase-impl-does-not-exist Android room persistent: AppDatabase_Impl does not existMy app database class @Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION) public abstract class AppDatabase extends RoomDatabase { private static AppDatabase INSTANCE; ...s..
1. 마나커 알고리즘(Manacher's Algorithm)이란?어떤 문자열에서 팰린드롬의 개수와 위치를 찾는 알고리즘이다. 팰린드롬이란?팰린드롬(회문, Palindrome)은 전체 문자열을 뒤집었을 때 원래 상태와 같은 수열, 문자열 등을 의미한다.ex) "기러기", "eye", "level", "aba", "aa" 마나커 알고리즘은 문자열 길이의 P 배열에 i번째 문자를 중심으로 한느 가장 긴 팰린드롬의 반지름 크기를 저장한다.시간복잡도는 O(N)으로 접미사배열 + LCP 배열을 이용한 방법 O(NLogN)보다 빠르다. https://small-stepping.tistory.com/936 멘버 마이어스 알고리즘과 Kasai 알고리즘문자열을 다룰 때 빼놓을 수 없는 자료 구조인 접미사 배열(Suffi..
관계형 데이터를 저장할 필요가 없는 경우 SQL, Room이 아닌 DataStore를 사용하는 것이 간단한 솔루션이 될 수 있다. DataStore Jetpack 구성요소는 오버헤드가 낮은 작고 간단한 데이터 세트를 저장하는 좋은 방법이다. DataStore에는 서로 다른 두 가지 구현(Preferences DataStore, Proto DataStore)이 있다.Perferences DataStore는 키-값 쌍으로 저장한다. 값은 String, Boolean, Integer와 같은 Kotlin의 기본 데이터 유형일 수 있다. 복잡합 데이터 세트는 저장하지 않으며, 사전 정의된 스키마도 필요 없다. 기본적으로 사용자 환경설정을 기기에 저장하는 식으로 쓰인다.Proto DataStore는 맞춤 데이터 유..