본문 바로가기

분류 전체보기

(100)
이미지 리사이징 ✅ 이미지 리사이징현재 카메라로 사진을 찍고 앱에 저장하면 사진 하나에 3MB로 앱의 사이즈가 지속적으로 커지는 문제가 있다.서버에 저장한다고 해도 여러 사용자가 하나의 3MB의 사진을 올린다? 누가봐도 문제가 있어 보인다.사진 하나의 용량이 큰 이유는 아래와 같다.일반적으로 촬영되어 저장된 사진의 경우 카메라 촬영 시 한 장의 이미지가 아닌 순간적으로 여러 장의 이미지를 합성하여 화질을 개선해주는 솔루션을 사용하고 있으며, 일반 사진 모드는 화면 비율에 따라 차이가 있을 수 있지만 일반적으로 3:4 화면 비율 기준 약 2 ~ 3MB 정도의 사진 크기로 저장되며, 고화소(50/108MP) 사진 촬영의 경우 약 20 ~ 30MB 정도의 사진 크기로 저장되고 있습니다.https://r1.community.s..
WorkManager(feat.Hilt) Background Task백그라운드 작업을 선택할 때 위와 같이 조건에 따라 API를 선택할 수 있다.WorkManager특징1. 제약 조건Wifi 상태에서 작업 실행배터리 충전 중일 경우 실행기기가 유휴 상태일 경우…다양한 조건을 설정하여 조건에 맞는 경우 작업을 실행할 수 있다.2. 작업 예약 관리일회성 또는 반복적으로 실행할 작업을 예약할 수 있다.작업 그룹을 함께 모니터링하거나 취소할 수 있다.예약된 작업은 내부적으로 관리되는 SQLite 데이터베이스에 저장되며 WorkManager에서 기기를 재부팅해도 작업이 유지되고 다시 예약되도록 보장절전 기능을 사용하고 권장사항(Doze Mode)을 준수배터리 소모를 우려하지 않아도 됨3. 신속 처리 작업백그라운드에서 즉시 실행할 작업을 예약할 수 있다...
Recomposition 기존의 다른 함수들과는 다르게 Compoable 함수는 한 번 호출되어 Composition이 발생된 이후에도 재생성 될 수 있는데, 이를 Recomposition이라고 한다.Recomposition 발생 이유1. Composable 함수의 매개변수 변경@Composablefun UserPofile(name: String, phone: String) {...}2. 관찰 중인 State의 변경var text by rembember { mutableStateOf("") }Compose 데이터 타입Composable 함수의 매개변수 데이터는 두 가지의 타입으로 분류할 수 있다.1. Stable원시 타입 (Primitive Types)lamda 함수외부의 참조 데이터가 없을 경우참조 데이터가 Stable 한 경..
Compose 동작 원리 Compose 구조 1. Compose CompilerCompose Runtime이 수행하기 적합한 형태의 코드로 변환순수한 Kotlin으로 작성된 Kotlin 컴파일러 플러그인Compose 컴파일러 > 런타임 과정에서 FIR(Frontend Intermediate Representation)을 통해 개발자가 작성한 코드를 정적 분석 및 수정 가능2. Compose RuntimeCompose Compiler에서 넘어온 코드를 바탕으로 UI에서 활용할 수 있도록 관리Gap Buffer 자료구조에서 파생 된 Slot Table에서 상태를 저장 및 관리Composable 함수에 대한 실질적인 생명주기 관리 및 UI에 대한 정보를 담고 있는 메모리 표현3. Compose UICompose Runtime의 데이터..
함수형 프로그래밍 함수형 프로그래밍이란?자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다.객체 지향 프로그래밍에서 객체가 1급 시민으로 분류된다면, 함수형 프로그래밍은 함수가 1급 시민으로 분류된다.1급 시민변수에 담을 수 있다.함수의 인자로 전달할 수 있다.함수의 반환값으로 전달할 수 있다.1급 함수1급 시민의 조건을 만족하면서 아래의 조건을 추가로 만족해야 한다.런타임에 생성이 가능하다.익명으로 생성이 가능하다.참고로 코틀린은 1급 함수이다.참조 투명성참조 투명성은 순수 함수의 개념과 비슷하다.순수 함수란 주어진 값에 대한 결과 값이 제공되는 함수다. 참조 투명성이란 동일한 입력 값에 대해 항상 동일한 출력 값을 보장하는 특성을 참조 투명성이라고 한다.함수가 외부..
운영체제의 메모리 관리 운영체제의 종류에는 대표적으로 Windows, Linux, MaxOS 가 있습니다.그 외에도 많이 있지만 자주 사용되는 OS는 위와 같습니다.그렇다면 OS는 무엇이고 어떤 일을 하는 녀석일까요? 우선 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되어 있습니다.소프트웨어는 하드웨어에 의해 실행되는데 하드웨어에는 CPU와 메모리, 다양한 입출력 장치로 구성되어 있습니다.운영체제가 없어도 하드웨어가 동작하긴 하지만 소프트웨어인 프로그램이 운영체제 환경에서 작성되고, 실행되고 있습니다.운영체제의 주 목적은 컴퓨터 시스템의 자원들을 효율적으로 관리하고 사용자에게 서비스를 제공하는 것입니다.운영체제가 관리하는 자원에는 물리적 자원과 추상적인 자원이 있습니다.물리적 자원: CPU, 메모리 등과 같은 하드웨어추상적 자원..
SearchView SearchView는 검색창을 구현할 때 사용한다. 보통 사용 유형은 Toolbar와 함께 사용하거나, SearchView를 따로 사용하는 유형이 있다. 1. SearchView iconifiedByDefault true : 아이콘 상태 >> 클릭 시 입력창 표시false : 항상 입력창 표시 binding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{ override fun onQueryTextSubmit(query: String?): Boolean { // TODO Enter 입력 시 호출되는 함수 binding.searchView.c..
TimePicker TimePicker는 말 그대로 시간을 설정할 때 사용한다. 갤럭시 알림 앱에 시간을 선택하는 창이 대표적인 예이다. 사용 방법xml timePickerMode : TimePicker의 형태를 결정한다.clock : 아날로그 시계spinner : 디지털theme : TimePicker의 디자인 디자인 설정하는 방법우선 themes.xml에서 TimePicker 디자인에 대한 설정을 해주어야 한다. themes.xml...... timepicker.xml  textSize : 글씨 크기textColorPrimary : 글씨 색상colorControlNormal : 언더 바 색상android:color/transparent : 부모 색과 같게 설정, 투명이라고 보면 됨 데이터 처리val cal = Calen..
[Layout] CoordinatorLayout CoordinatorLayout 이란?위와 같이 Title과 같은 Toolbar를 상단에 크게 구성하며, 스크롤 시 Title만 남기고 나머지는 사라지는 효과를 주는 레이아웃이다. 반대로 스크롤하면 다시 나타난다. 구조 CoordinatorLayout의 구조는 위와 같다. 1. AppBarLayout: Toolbar를 포함한 상단을 다양한 방법으로 크게 구성하고 싶을 때 사용하는 레이아웃주로 이미지와 toobar를 조합하여 사용한다.  ex) 넷플릭스  app:fitsSystemWindows : 가능한 영역까지 확장해주는 기능    2. CollapsingToolbarLayout: 스크롤 시 접히는 부분으로 해당 레이아웃에서 고정 View를 제외한 나머지 View들은 스크롤 시 사라진다.AppBarLay..
[프로그래머스] 풍선 터트리기 with Kotlin 문제일렬로 나열 된 풍선 n개가 주어진다.풍선엔 각각의 번호가 부여되어 있으며, 다음 과정을 통해 풍선을 하나만 남기려고 한다.임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다.터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀착시킵니다.이때 번호가 더 큰 풍선을 터트려야 하며, 딱 한번 번호가 작은 풍선을 터트릴 수 있다.마지막까지 남을 수 있는 풍선의 개수를 반환하여라. 풀이방법(핵심 아이디어는 다른 사람 블로그를 참조했습니다.)핵심 아이디어지정한 풍선이 A라고 할 때, A의 양 옆의 풍선들의 최소값이 A보다 크다면  A는 마지막까지 남을 수 있다.양쪽 중 한쪽만 최소값이 커도 한 번의 기회를 사용하면 마지막까지 남을 수 있다.다만 양쪽 다 ..