본문 바로가기
반응형

Kotlin174

[Kotlin] Unix Timestamp to LocalDateTime, LocalDateTime to Unix Timestamp Unix Timestamp란? 1970년 1월 1일 0시 0분 0초부터 현재(UTC 기준)까지의 초 단위 시간을 나타내는 방법 Epoch Time이라고도 불림 현재 Unix Timestamp fun main() { val unixTimestamp = System.currentTimeMillis() / 1000 println("unixTimestamp: $unixTimestamp") } Unix Timestamp -> LocalDateTime fun main() { val unixTimestamp = System.currentTimeMillis() / 1000 val localDateTime = LocalDateTime.ofInstant( Instant.ofEpochSecond(unixTimestamp),.. 2024. 3. 30.
[Kotlin] Kotlin 공식 문서 번역 - IntelliJ IDEA에서 코틀린 Flow 디버그하기 (Debug Kotlin Flow using IntelliJ IDEA – tutorial) IntelliJ IDEA에서 코틀린 Flow 디버그하기 (Debug Kotlin Flow using IntelliJ IDEA – tutorial) 이 튜토리얼은 Kotlin Flow를 생성하고 IntelliJ IDEA를 사용하여 디버그하는 방법을 보여줍니다. 이 튜토리얼은 코루틴과 Kotlin Flow 개념에 대한 사전 지식이 있다고 가정합니다. Kotlin Flow 생성하기 느린 발신자와 느린 수집기가 있는 Kotlin Flow를 생성하세요: 1. IntelliJ IDEA에서 Kotlin 프로젝트를 열어보세요. 프로젝트가 없다면 새로 만드세요. 2. Gradle 프로젝트에서 kotlinx.coroutines 라이브러리를 사용하려면 build.gradle(.kts)에 다음 종속성을 추가하세요: depen.. 2023. 10. 2.
[Kotlin] Kotlin 공식 문서 번역 - IntelliJ IDEA에서 코루틴 디버그하기 (Debug coroutines using IntelliJ IDEA – tutorial) IntelliJ IDEA에서 코루틴 디버그하기 (Debug coroutines using IntelliJ IDEA – tutorial) 이 튜토리얼은 Kotlin 코루틴을 생성하고 IntelliJ IDEA를 사용하여 디버그하는 방법을 보여줍니다. 이 튜토리얼은 코루틴 개념에 대한 사전 지식이 있다고 가정합니다. 코루틴 생성하기 1. IntelliJ IDEA에서 Kotlin 프로젝트를 열어보세요. 프로젝트가 없다면 새로 만드세요. 2. Gradle 프로젝트에서 kotlinx.coroutines 라이브러리를 사용하려면 build.gradle(.kts)에 다음 종속성을 추가하세요: dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-.. 2023. 10. 2.
[Kotlin] Kotlin 공식 문서 번역 - 코루틴 Select 표현식 (Coroutines Select expression) 코루틴 Select 표현식 (Coroutines Select expression) Select 표현식은 여러 중단 함수를 동시에 기다릴 수 있게 하고 첫 번째 사용 가능한 것을 선택할 수 있게 합니다. Select 표현식은 kotlinx.coroutines의 실험적인 기능입니다. 해당 API는 kotlinx.coroutines 라이브러리의 업데이트 중에 변경될 수 있는 손상을 일으킬 수 있는 변경 사항이 예상됩니다. 채널에서 선택하기 우리는 두 개의 문자열 프로듀서, "Fizz"와 "Buzz!"를 가지고 있습니다. Fizz는 500ms마다 "Fizz" 문자열을 생성합니다: fun CoroutineScope.fizz() = produce { while (true) { // 500ms마다 "Fizz"를 전송.. 2023. 10. 2.
[Kotlin] Kotlin 공식 문서 번역 - 코루틴 공유 가능한 가변 상태와 동시성 (Coroutines Shared mutable state and concurrency) 코루틴 공유 가능한 가변 상태와 동시성 (Coroutines Shared mutable state and concurrency) 코루틴은 Dispatchers.Default와 같은 다중 스레드 디스패처를 사용하여 병렬로 실행될 수 있습니다. 이는 모든 일반적인 병렬화 문제를 제시합니다. 주요 문제는 공유 가능한 가변 상태에 대한 액세스 동기화입니다. 코루틴에서 이 문제에 대한 일부 해결책은 다중 스레드 세계의 해결책과 유사하지만, 다른 것도 있습니다. 문제 동일한 작업을 천 번 수행하는 백 개의 코루틴을 시작해 보겠습니다. 또한 이들의 완료 시간을 추가 비교를 위해 측정할 것입니다. suspend fun massiveRun(action: suspend () -> Unit) { val n = 100 // .. 2023. 10. 2.
[Kotlin] Kotlin 공식 문서 번역 - 코루틴 예외 핸들링 (Coroutine exceptions handling) 코루틴 예외 핸들링 (Coroutine exceptions handling) 이 섹션에서는 예외 처리와 예외가 발생할 때의 취소에 대해 다룹니다. 이미 취소된 코루틴이 중단 지점에서 CancellationException을 throw하고 코루틴 머신에서 무시된다는 것을 알고 있습니다. 여기에서는 취소 중에 예외가 발생하거나 동일한 코루틴의 여러 하위 코루틴이 예외를 throw하는 경우에 대해 살펴봅니다. 예외 전파 코루틴 빌더에는 예외를 자동으로 전파하는 방식(launch 및 actor)과 사용자에게 노출시키는 방식(async 및 produce) 두 가지 종류가 있습니다. 이러한 빌더를 사용하여 다른 코루틴의 하위가 아닌 루트 코루틴을 생성하는 경우, 전자의 빌더는 예외를 잡히지 않은 예외로 처리하며(자.. 2023. 10. 2.
[Kotlin] Kotlin 공식 문서 번역 - 채널 (Channels) 채널 (Channels) 채널 기초 채널(Channel)은 개념적으로 BlockingQueue와 매우 유사합니다. 그 중요한 차이점 중 하나는 블로킹 put 연산 대신 중단 send를 가지고 있다는 것이고, 블로킹 take 연산 대신 중단 receive를 가진다는 것입니다. val channel = Channel() launch { // 이것은 무거운 CPU 집약적인 계산 또는 비동기 로직 일 수 있으며, 우리는 단순히 다섯 개의 제곱 값을 보내겠습니다. for (x in 1..5) channel.send(x * x) } // 여기서 받은 다섯 개의 정수를 인쇄합니다. repeat(5) { println(channel.receive()) } println("Done!") 이 코드의 출력은 다음과 같습니다.. 2023. 10. 1.
[Kotlin] Kotlin 공식 문서 번역 - 코루틴 비동기 Flow (Coroutines Asynchronous Flow) 코루틴 비동기 Flow (Coroutines Asynchronous Flow) 서스펜딩 함수는 비동기로 단일 값을 반환하지만, 어떻게 여러 비동기로 계산된 값을 반환할 수 있을까요? Kotlin Flows가 이럴 때 사용됩니다. 여러 값을 표현하기 여러 값을 Kotlin에서는 컬렉션을 사용하여 나타낼 수 있습니다. 예를 들어, 세 개의 숫자를 포함하는 List를 반환하는 간단한 함수를 만들고 forEach를 사용하여 모든 값을 출력할 수 있습니다. fun simple(): List = listOf(1, 2, 3) fun main() { simple().forEach { value -> println(value) } } 이 코드는 다음과 같이 출력됩니다: 1 2 3 시퀀스 만약 CPU를 소모하는 블로킹 코.. 2023. 10. 1.
[Kotlin] Kotlin 공식 문서 번역 - 코루틴 문맥과 디스패처 (Coroutine context and dispatchers) 코루틴 문맥과 디스패처 (Coroutine context and dispatchers) 코루틴은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 유형의 값으로 표시되는 컨텍스트에서 실행됩니다. 코루틴 컨텍스트는 여러 요소의 집합입니다. 주요 요소는 코루틴의 Job(이전에 보았던 것)과 이 섹션에서 다루는 디스패처(Dispatcher)입니다. 디스패처와 스레드 코루틴 컨텍스트에는 코루틴의 실행에 사용되는 스레드 또는 스레드 집합을 결정하는 코루틴 디스패처(see CoroutineDispatcher)가 포함되어 있습니다. 코루틴 디스패처는 코루틴 실행을 특정 스레드에 제한하거나 스레드 풀에 디스패치하거나 무제한으로 실행하도록 할 수 있습니다. launch 및 async와 같은 모든 .. 2023. 10. 1.
반응형