Kotlin

· Skils/Kotlin
이전 글[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)개요launch 코루틴 빌더를 통해 생성되는 코루틴은 기본적으로 작업의 결과를 반환하지 않는다.코루틴으로부터 결과를 수신해야 하는 상황이 생길 것이다. 예를 들어 네트워크 통신 이후, 응답을 받아 처리해야 할 경우 네트워크 통신을 실행하는 코루틴으로부터 결과를 수신받아야 한다. 코루틴 라이브러리는 비동기 작업으로부터 결과를 수신해야 하는 경우를 위해 async 코루틴 빌더를 통해 코루틴으로부터 결괏값을 수신받을 수 있도록 한다.launch..
· Skils/Kotlin
이전 글[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)코루틴의 취소 확인cancel 함수나, cancelAndJoin 함수는 코루틴을 즉시 취소하는 것이 아닌 취소 요청을 보내는 함수이다. 취소 요청을 받은 코루틴이 요청을 확인하는 시점에 비로소 취소가 된다. 만약 코루틴이 취소 요청을 확인하지 않는다면 영원히 취소되지 않는다.그렇다면 이 코루틴들은 언제 취소를 확인할까? 코루틴이 취소를 확인하는 시점은 일반적으로 일시 중단 지점이나 코루틴이 실행을 대기하는 시점이며, 이 시점들이 없다면 코루틴은 취소되지 않는다.fun main(): Unit = r..
· Skils/Kotlin
이전 글[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)코루틴 빌더코루틴을 생성하는 데 사용하는 함수, 빌더 함수를 호출하면 새로운 코루틴이 생성된다.ex): runBlocking, launch모든 코루틴 빌더 함수는 코루틴을 만들고 코루틴을 추상화한 Job 객체를 생성한다. launch 함수 또한 코루틴 빌더이므로, 다음과 같이 launch 함수를 호출하면 코루틴이 만들어지고, Job 객체가 생성돼 반환된다. 반환된 Job 객체는 코루틴의 상태를 추적하고 제어하는 데 사용된다.join을 사용한 코루틴 순차 처리코루틴 간에 순차 처리가 필요한 경우는 어떤 경우일까?대표적인 예로는데이터베이스 작업을 순차적으로 ..
· Skils/Kotlin
이전 글[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1) CoroutineDispatcher란 무엇인가?디스패처는 dispatch와 -er의 합성어로 dispatch의 보내다는 뜻에 -er이 붙어 무언가를 보내는 주체라는 뜻이다.즉 CoroutineDispatcher는 코루틴을 보내는 주체라는 뜻이다. CoroutineDispatcher 객체는 스레드로 코루틴을 보낸다.코루틴은 일시 중단이 가능한 작업이기 때문에 스레드가 있어야 실행될 수 있으며, CoroutineDispatcher는 코루틴을 스레드로 보내 실행시키는 역할을 한다.CoroutineDispatcher는 코루틴을 스레드로 보내는 데 사용할 수 있는 스레드나 스레드풀을 가지며, 코루틴을 실행 요청한 스레드에서 코루틴..
· Skils/Kotlin
단일 스레드 애플리케이션의 한계스레드는 하나의 작업을 수행할 때 다른 작업을 동시에 수행하지 못한다.메인 스레드 또한 예외가 아니어서 메인 스레드에서 실행하는 작업이 처리되는 동안 다른 작업 수행 X—> 메인 스레드 하나만 사용하는 애플리케이션은 하나의 작업이 오래 걸리면 다른 작업을 전혀 할 수 없다.—> 이에 따른 응답성에 문제가 생길 수 있다. 휴대폰에서 애플리케이션을 메인 스레드만 사용해 만 들 경 우, 메인 스레드에서 UI 상호작용을 처리하는 작업이 반복된다.여기서 네트워크 요청을 하고 응답을 대기하거나 복잡한 연산 작업을 수행하는 오래 걸리는 작업을 하고 있다면, 애플리케이션은 UI를 그리는 작업을 멈추고, 사용자 입력 또한 제대로 전달받지 못하게 된다.이는 안드로이드 휴대폰이 버벅이는 주요 ..
해당 프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin)[Android] 자동 로그인 with DataStore(Kotlin)[Android] 네이버 로그인 프로필 가져오기[Android] DataSource 적용 및 분리[Android] Retrofit으로 에러 메시지 처리하기[Android] 영상 편집 UI 구현[Android] 비디오 타임라인 이벤트 처리 이전 글에서는 비디오 타임라인에 대해 시간대를 제공하고, 동영상 시점을 변화시켰습니다.이번글에서는 갤러리 앱처럼 편집한 구간에 대해 재생할 수 있는 컨트롤러를 적용해 볼 예정입니다.  기능 요구사항클립의 구간을 벗어날 수 없다.재생을 하는 도중 타임라인이 변경될 경우 동영상 재생을 정지한다.동영상이 재생하는 동안 타임라인도 같이 이..
문제https://www.acmicpc.net/problem/1781 문제 풀이처음 문제를 보고 난이도에 비해 정말 쉽다고 생각했다.회의실 배정과 유사하게 우선순위큐를 사용해서, deadLine이 짧은 순, 가치가 무거운 순으로 정렬한 뒤, 시간에 맞게 빼면 된다고 생각했다. 우선 문제에 대한 테스트케이스는 다음과 같다.해당 작업들을 우리가 목표로 하는 최대의 가치의 순서로 작업할 수 있도록 정렬해줘야 한다.고려해야할 점은 다음과 같다.데드라인이 적은 순서대로 정렬을 한다.가치가 많은 순으로 정렬을 한다.위 조건을 고려해서 정렬을 하면 다음과 같다.그리고 데드라인 별로 작업을 선택해서 답을 구하면 된다.하지만 여기서 함정이 존재한다.내가 풀이했던 방식은 데드라인이 아니라, 그때 풀어야 했던 문제라고 생각..
프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin) 어플을 사용하다 보면 어플의 로고가 뜨고 메인화면으로 넘어가는 구조를 보신 적이 있을 것입니다.Android에서는 SplashActivity로 구현합니다.대략적인 구조는 다음과 같습니다.최초 화면 진입점인 Splash Activity에서 자동 로그인을 요청하고, 실패했다면 Login 화면으로, 성공했다면 Main 화면으로 넘어갑니다.자 이제 그럼 궁금증은 자동 로그인을 요청하는 곳은 어디이며, 어떠한 로직으로 결과를 반환하는가?입니다.크게 remote 요청과 local 요청이 있습니다.remote 요청 : 서버 요청으로 인한 결과 반환local 요청 : Room, DataStore, sharedPreference 등 Android 내부..
이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했던 과정과 작성했던 코드와 그에 대한 설명을 적어볼까 합니다.앱을 등록하는 글은 다른 블로그에도 많더라고요. Gradle 설정저는 arr 파일을 다운로드하고 gradle에 추가하는 방법을 선택했습니다.다운로드한 파일을 project 탭으로 전환시켜서 lib 폴더에 복사해 줍니다. 이후 해당 arr 파일을 dependency에 추가해 줍니다.dependencies{ implementation(files("libs/oauth-5.9.1.aar"))} 이후에는 사용하는 라이브러리를 추가해주셔야 합니다.저 같은 경우 안 쓸 거 같은 라이브러리를 제외하다가, gradle 충돌이 많이 발생해서 제공..
재한
'Kotlin' 태그의 글 목록