'분류 전체보기' 카테고리의 글 목록 (2 Page) — SH's Devlog

분류 전체보기

Android/Compose

[Android] Jetpack Compose 상태 호이스팅

이번 포스트에서는 Android Developers 공식 문서를 통해 Jetpack Compose의 상태 호이스팅의 개념과 상태 호이스팅을 하는 다양한 방법들에 대해 정리하겠습니다. 스테이트풀(Stateful)과 스테이트리스(Stateless)remember API를 사용하여 객체를 저장하는 Composable은 내부 상태를 생성하여 Composable을 스테이트풀(Stateful)로 만듭니다. HelloContent는 내부적으로 name이라는 상태를 보존하고 수정하므로 스테이트풀(Stateful) 컴포저블의 한 예시가 됩니다. 이는 호출자가 상태를 제어할 필요가 없고 상태를 직접 관리하지 않아도 상태를 사용할 수 있는 경우에 유용합니다. 그러나 내부 상태를 갖는 Composable은 재사용 가능성이 적..

Android/Compose

[Android] Jetpack Compose에서의 상태관리

안녕하세요. 이번 포스트에서는 Jetpack Compose의 상태관리에 대해 알아보겠습니다. Android 앱의 상태 및 Jetpack ComposeAndroid 앱의 상태는 시간에 따라 변할 수 있는 값을 의미합니다. -> 이것은 매우 광범위하게 정의되며 Room의 데이터베이스에서부터 Room의 변수까지 모든 것을 포함합니다. 모든 Android 앱에서는 User에게 상태를 표시합니다. 예를 들면 아래와 같은 상황이 있을 수 있습니다.- 네트워크 연결을 설정할 수 없을 때 표시되는 스낵바- 블로그 게시물 및 댓글- 사용자가 클릭하면 버튼에서 재생되는 물결 애니메이션- 사용자가 이미지 위에 그릴 수 있는 스티커 Jetpack Compose를 사용하면 이러한 Android 앱에서 어디에 상태를 저장하고 사..

CS(Computer Science)/Computer Architecture

[컴퓨터 구조] 3. 명령어

이번 포스트에서는 컴퓨터 구조의 명령어에 대해 정리하겠습니다.내용은 "혼자 공부하는 컴퓨터 구조+운영체제" 책을 참고하였습니다!소스 코드와 명령어[ 고급 언어와 저급 언어 ]고급 언어 -> 사람이 이해하고 작성하기 쉽게 만들어진 언어. 대부분의 프로그래밍 언어가 고급 언어에 속한다.저급 언어 -> 컴퓨터가 직접 이해하고 실행할 수 있는 언어.그래서 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 반환되어야 한다. 저급 언어에는 두 가지 종류가 있다. 바로 기계어와 어셈블리어이다. 기계어 -> 0과 1의 명령어 비트로 이루어진 언어이다. 다시 말해 기계어는 0과 1로 이루어진 명령어의 모음이다. 아래 그림은 컴퓨터는 0과 1로 이루어진 이 기계어를 이해하고 실행한다. 다만, 기..

CS(Computer Science)/Computer Architecture

[컴퓨터 구조] 2. 데이터

0과 1로 숫자를 표현하는 방법[ 정보 단위 ]컴퓨터는 0과 1로 모든 정보를 표현하고 0과 1로 표현된 정보만을 이해할 수 있다.  비트(b) -> 0과 1을 나타내는 가장 작은 정보 단위. n비트는 2^n가지의 정보를 표현할 수 있다.바이트(B) -> 8개의 1비트를 묶은 단위. 2^8(256)개의 정보를 표현할 수 있다.킬로바이트(KB) -> 1000개의 1바이트를 묶은 단위.메가바이트(MB) -> 1000개의 킬로바이트를 묶은 단위.기가바이트(GB) -> 1000개의 메가바이트를 묶은 단위.테라바이트(TB) -> 1000개의 기가바이트를 묶은 단위. 비트(b)  [ 이진법 ]수학에서 0과 1만으로 모든 숫자를 표현하는 방법. 아래 그림과 같이 숫자가 1을 넘어가는 시점에 자리 올림을 하여 0과 1..

CS(Computer Science)/Computer Architecture

[컴퓨터 구조] 1. 컴퓨터 구조 Overview

컴퓨터 구조의 큰 그림 컴퓨터 구조는 컴퓨터가 이해하는 정보와 컴퓨터의 네 가지 핵심 부품으로 이루어져있다.[ 컴퓨터가 이해하는 정보 ]컴퓨터는 0과 1로 표현된 정보만을 이해하며, 0과 1로 표현되는 정보에는 크게 데이터와 명령어가 있다. 데이터 -> 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보. 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보를 말함. 명령어 -> 데이터를 움직이고 컴퓨터를 작동시키는 정보. 컴퓨터를 실질적으로 작동시키는 더 중요한 정보이며, 데이터는 명령어 없이는 아무것도 할 수 없는 정보 덩어리이다. 즉, 컴퓨터를 한마디로 표현하자면 "명령어를 처리하는 기계"이다. ex) 1과 2를 더하라. -> 1과 2는 데이터, '더하라 1과 2를'는 명령어.ex) '안녕..

Flutter/Basic

[Flutter] Mixin으로 StatefulWidget의 중복 코드 제거하기(feat. 무한 스크롤)

이번 포스트에서는 Mixin으로 StatefulWidget의 초기화 중복 코드를 제거하는 방법을 정리하겠습니다. StatefulWidget의 Controller 중복 코드 발생 StatefulWidget에서 스크롤 또는 애니메이션 작업 등의 애플리케이션의 UI 상태와 연결하고 관리해야 하는 작업을 수행해야 할 때 Controller를 이용합니다. Controller의 종류로는 ScrollController, AnimationController, TextEditingController 등이 존재합니다. 예를 들면, ScrollController는 스크롤 상태를 추적하고 제어하는 데 사용됩니다. 이를 통해 스크롤 위치를 제어하고 스크롤 이벤트를 받을 수 있으므로 무한 스크롤, 페이징 또는 스크롤 위치에 따른..

Flutter/State Management

[Flutter] 상태 관리 패키지 Riverpod 알아보기

이 글은 Riverpod 2.0 기준으로 작성되었습니다. 이번 포스트에서는 공식 문서를 보면서 Riverpod에 대해 알아보고, 왜 Riverpod을 사용해야 하는지에 대해 알아보겠습니다. 사용 방법은 간략하게만 다루었으며 Provider의 종류에 대한 정리는 패키지가 워낙 자주 바뀌기도 하고 공식 홈페이지에 워낙 잘 정리되어 있어서 참고하시면 좋을 것 같습니다. Flutter의 상태 관리 Flutter는 선언형 UI이며 각각의 상태를 포함하고 있는 위젯 트리를 기반으로 구성되기 때문에 상태 관리가 매우 중요합니다. 단일 위젯에서만 사용하는 상태일 경우는 상태 관리가 특별하게 관리되지 않아도 되지만, 앱의 여러 위젯에서 상태를 사용하는 경우에는 상태 관리가 특히 더 중요합니다. 이러한 여러 위젯에서 사용..

Android/BLE

[BLE] GATT란? - Services & Characteristics

GATT(Generic Attribute Profile)란? GATT(Generic Attribute Profile)는 BLE 연결을 통해 프로필 및 데이터를 주고받기 위한 방법을 정의합니다. 로우 레벨의 상호작용을 정의하는 GAP와는 달리 GATT는 실제 데이터 전송 절차 및 데이터 형식만을 다룹니다. 또한, 다른 업체에서 제작한 서로 다른 디바이스 간의 상호 운용성을 보장하는 SIG defined GATT-based profiles을 제공합니다. 올바르게 작동하려면 모든 표준 BLE Profile은 GATT을 기반으로 해야 하며 GATT를 준수해야 합니다. 따라서, 어플리케이션과 사용자는 데이터를 전송하기 위해 데이터의 타입을 정할 때 GATT 규칙에 따라 전송해야 합니다. GATT는 ATT(Attr..

Android/Error Log

[Error] gradlew Permission Denied 에러 해결법

Android Studio, IntelliJ, 맥 터미널에서 Gradle 프로젝트를 빌드할 때 혹은 .gradle 디렉토리에 대한 Permission 문제가 발생하거나 gradlew 명령어를 실행할 때 빌드 과정에서 에러가 발생할 때가 있습니다. 만약, ./gradlew가 실행이 안된다면 프로젝트 디렉토리에서 아래 명령어를 실행해서 실행권한을 주면 됩니다. $ chmod +x ./gradlew 만약, 빌드 과정에서 .gradle 디렉토리에 대한 권한 문제가 발생한다면 이유는 Gradle Build tool이 프로젝트를 빌드하는 과정에서 .gradle 디렉토리를 수정할 때 쓰기 권한이 없기 때문에 빌드하지 못하는 경우입니다. 그래서 아래 명령어로 프로젝트 디렉토리에 대한 권한을 주어서 외부 tool이 프로..

Android/Basic

[Android] Gradle 빌드시에 Signing key로 서명하도록 설정하기

이번 포스트에서는 Gradle 빌드시에 Signing key를 서명하도록 설정하는 방법을 정리하겠습니다. Play store에 앱을 업로드하려면 Bundle 혹은 APK에 앱 서명을 해야합니다. 그래서 서명하기 위한 일반적인 방법으로는 [Build]-[Generate Signed Bundle / APK]에서 keystore 정보를 입력해주는 방법이 존재하지만 이 방법은 APK 생성할때마다 매번 입력해주어야 하므로 꽤 번거롭습니다. 또한, keystore에 대한 정보는 깃과 같은 외부 저장소에 올려서 노출되어서는 안되므로 주의해야 합니다. 그래서 이번 포스트에서는 Gradle의 sIgningConfings 설정을 통해 빌드시에 keystore로 안전하게 앱 서명을 하는 방법을 정리하겠습니다. gradle..

반응형
seunghwaan
'분류 전체보기' 카테고리의 글 목록 (2 Page)