본문 바로가기

전체 글18

[Android] Coroutine Builder, Suspend 함수 이해하기 코루틴을 사용하기 위해서 CoroutineScope 를 생성했다면 Coroutine Builder 를 통해 코루틴을 실행할 수 있습니다. Coroutine Builder 에는 launch(), async() 등 있습니다. Suspend 함수의 경우 말 그대로 일시중단 을 의미합니다. launch(), async() 로 실행한 코루틴은 내부적으로 작업이 종료될 때까지 코루틴이 일시중단 됩니다. 이 때 실행되어야 하는 로직이 코루틴 내부에 존재하지 않고 외부 함수로 존재한다면, 해당 함수가 일시중단 (suspend) 된다는 표시를 해주기 위해 사용하는 키워드 입니다. launch 코루틴을 실행할 때 내부적으로 비동기 처리가 되지만 결과 반환 값이 없을 때 launch 를 사용합니다. 사실 결과 값이 없을 뿐.. 2023. 9. 11.
[Android] Kotlin CoroutineScope 에 대해 알아보자 프로그래밍에서 비동기 처리는 매우 까다롭고 중요한 개념입니다. 다양한 언어에서 비동기를 처리 하기 위해 다양한 방법을 사용하며, 코루틴은 Kotlin 에서 비동기를 처리하는 방식입니다. 그럼 CoroutionScope 는 무엇일까요? Scope 라는 말 그대로 비동기를 실행하기 위한 작업 범위 입니다. 비동기 작업을 해당 Scope (범위) 에서 실행해라. 이는 무분별한 비동기 처리로 인한 메모리 누수와 리소스 낭비를 막기 위함입니다. 사용자는 CoroutineScope 를 설정하고 특정 수명 주기에 따라 실행, 취소, 재실행 등을 할 수 있습니다. 그럼 CoroutineScope 의 종류에는 어떤것이 있을까요? GlobalScope 안드로이드에서 CoroutineScope 를 설정하지 않아도 기본적으로.. 2023. 9. 8.
[Android] JetPack Compose 에서 상태 관리 (remember, rememberSaveable) JetPack Compose 는 선언적으로 Compse 를 생성합니다. 그래서 선언적으로 생성된 Compose를 업데이트 할 수 있는 유일한 방법은 새로운 인수로 동일한 Composable 을 호출하는 것입니다. 여기서 새로운 인수가 바로 상태 (State) 입니다. 즉 JetPack Compose 에서 상태는 UI 를 어떻게 표현할지에 대한 표현 값이라고 할 수 있습니다. Composable 의 생명주기와 remember 우선 Compsable 의 생명 주기에 대해 간단하게 알 필요가 있습니다. Android 다른 Activity 나 Fragment 와 같이 Composable 또한 생명주기를 가지지만 다른 컴포넌트보다 훨씬 심플합니다. initial Composition : 처음 호출된 Composa.. 2023. 9. 5.
[Android] JetPack Compose 에서 permission 요청하기 최근의 Android 개발은 대부분 JetPack Compose 에서 이루어지고 있습니다. 그래서 최대한 JetPack Compose 100%로 사이드 프로젝트를 해보고 있는데, 아무 생각없이 기존의 Permission 요청을 기존의 방식으로 작성했다가 빨간줄이 발생해서 적지않게 놀랐습니다. 간단하게 JetPack Compose 로 Permission 요청하는 방법에 대해 기록하고자 합니다. 설치 JetPack Compose 에서 Permission 요청을 하기 위해서는 Google 레포의 accompanist 의 accompanist-permissions 모듈을 설치 해야 합니다. build.gradle.kt 파일에 아래 dependency 를 추가 후 sync 해주세요. implementation (.. 2023. 9. 5.
n 을 통한 node 버전 관리 하기 node 의 버전을 관리 하는 방법으로 가장 잘 알려져 있는 것은 nvm 이다. 하지만 최근에는 n 을 사용하는 방법이 점점 많아지고 있는것 같다. 하지만 n 이라는 단문자로 검색하면 검색이 잘 되지 않고, nvm 에도 n 철자가 포함되어 nvm 내용이 검색 되기도 한다. 이리저리 검색해보면서 찾은 내용을 잘 정리 하고자 한다. 설치 n 은 npm 을 통해서 쉽게 설치 할 수 있다. sudo npm install -g n 설치 확인은 버전 체크를 통해 할 수 있다. n -V 사용법 최신 버전 설치 n latest stable 버전 설치 n stable LTS 버전 설치 n lts 특정 버전 설치 n [특정 버전] 설치된 version 확인 및 version 변경 n 이후에 설치된 node 버전 확인 후 .. 2023. 9. 3.
가장 많이 사용하는 스트리밍 프로토콜 6가지 스트리밍 프로토콜은 인터넷에서 어떤 디바이스 또는 시스템이 데이터 통신하는 방식을 정의 하는 일련의 규칙입니다. 비디오 스트리밍 프로토콜은 더 쉽게 전송하기 위해 비디오 스트림을 작은 단위로 분할하는 방법을 표준화하였습니다. 코덱은 중요하지 않은 정보를 제거함으로써 파일 크기를 줄이는 비디오 스트리밍 프로토콜중에 하나입니다. 예를 들어 1분동안 유지되는 배경을 가진 비디오를 처리하는 경우 입니다. 첫번째 프레임 이후, 각 픽셀의 시각적 정보를 삭제하고 저장 공간을 줄이기 위해 참고만 하게 됩니다. MP4 나 FLV 같은 컨테이너 포맷은 보통 비디오 파일이나, 오디오 파일, 메타 데이터이 전송이후에 어떻게 저장되는지 정의 합니다. 각 프로토콜은 목적과 강점이 다르기 때문에 프로토콜의 특징을 이해하고 목적에.. 2023. 9. 1.
[Flutter] Flutter 개발, 운영 설정 분리하기 (flavor, build scheme) 모바일 앱 개발시 개발 환경과 운영 환경의 세팅을 일일이 수동으로 변경한다면 매우 번거로운 일이다. 또한 실수로 운영 빌드시 개발 환경 세팅으로 앱이 배포된다면 정말 아찔한 경험을 할 수 있다. Flutter 의 flavor 를 이용한다면 개발/운영 환경 설정을 깔끔하게 분리할 수 있다. 덤으로 한 디바이스에서 개발/운영 앱을 동시에 설치 할 수 있어 테스트 시에 앱을 지우고 재설치하는 번거로움을 줄일 수 있다. Flavor 란? 사실 flavor 는 Android 에서 동일한 소스로 다른 버전의 앱을 빌드 할 수 있도록 해주는 개념이다. 개발/운영 에 따른 접속 서버 url 구분 및 다양한 key, token 값 구분 유료/무료 앱 설정 광고 유무 설정 위와 같은 값들을 하드코딩 하는게 아닌 build.. 2023. 8. 31.
[WebRTC] WebRTC 란 무엇인가? (영상 스트리밍) 회사에서 영상 스트림밍을 이용하는 업무가 생겨서 WebRTC 에 대해 자세히 알아보게 되었다. WebRTC 에 대해서는 기존에 존재는 알고는 있었지만 기술에 대해 자세히 알지 못했는데 이참에 정리를 해두려고 한다. WebRTC 란? WebRTC(Web Real-Time Communication)는 웹 브라우저나 모바일 앱을 통해 실시간으로 오디오, 비디오, 데이터를 전송하고 통신할 수 있는 오픈 소스 프로젝트와 기술 집합입니다. WebRTC는 웹 기반의 응용 프로그램뿐만 아니라 모바일 앱에서도 활용될 수 있으며, 실시간 화상 통화, 파일 공유, 화면 공유, 온라인 게임 및 다양한 협업 도구 등 다양한 분야에서 사용됩니다. WebRTC 의 가장 큰 특징은 P2P 서비스라는 점이다. 클라이언트가 일단 연결되.. 2023. 8. 31.
반응형