본문 바로가기
728x90

전체 글249

스트레스를 받는다면 스트레스를 받는다면 옮김 — 4-7-8 호흡 휴 소리를 내면서 입으로 숨을 완전히 내쉰다. 입을 다물고 코로 조용히 숨을 들이쉬면서 속으로 4까지센다. 숨을 멈추고 7까지 샌다. 휴 소리를 내면서 8 을 셀 때까지 입으로 숨을 완전히 내쉰다. --- 산책을 가자 일단 정말 너무 귀찮아도 아무 생각없이 걷자. --- 지금 내가 이것을 이루지 못하였을때의 최악의 상황을 생각해보자. 걱정과 두려움을 회피하지말고 나라는 큰 사람이 굳건이 버티고 있다는걸 내 자신에게 알려주고, 자신을 학대하지 말자. 2024. 2. 9.
갑자기 갑자기 라는 제목의 노트 적힌 내용을 옮겨봄. 내 삶에 정말 만족하는가 더욱 내 삶에 만족하는 방법은 없을까? 인풋보다 아웃풋을 늘려야 할 때 글쓰기를 이용해 보면 어떨까? 밤 산책 좋네 10년안에 한강 산책로가 가깝고, 서점도 가깝고, 역도 가깝고, 깔끔한 아파트, 34평 이상이면 더 좋은, 곳에서 살며, 밤에는 기분좋은 방송 또는 음악을 들으며, 산책을 하며, 틈날때마다 서점을 들르고 싶다. 배운 것을 어떻게 활용할 수 있는가? 왜 이것을 활용해야만 하는가? 언제 이것을 활용할 것인가? 미래의 우리 모습은 스스로 책임 져야 한다. 어린이는 남들이 자신을 어떻게 생각하든 크게 신경 쓰지 않는다. 걸음마를 배우는 과정에서 300번 넘어지면 300번 일어나며, 당황하지 않는다 걷고 싶다는 생각만 한다. .. 2024. 2. 9.
webClient timeout 기록용 connectionTimeOut (ChannelOption.CONNECT_TIMEOUT_MILLIS) 이 타임아웃은 클라이언트가 서버와의 연결을 시도할 때까지의 최대 대기 시간을 설정합니다. 연결 시도가 이 시간 내에 성공하지 못하면 ConnectionException이 발생합니다. responseTimeOut 이 타임아웃은 클라이언트가 요청을 보낸 후 서버로부터 첫 번째 응답을 받기까지의 최대 시간을 설정합니다. HttpClient의 responseTimeout 메서드를 통해 설정되며, 이 시간이 지나도 서버로부터 응답이 없으면 타임아웃 예외가 발생합니다. readTimeOut (ReadTimeoutHandler) 이 타임아웃은 데이터를 읽는 동안, 즉 서버로부터 데이터를 받는 동안 연속적으로 데이터를.. 2024. 2. 7.
10장 - 예외처리 코루틴도 잡히지 않은 예외가 발생했을 때 종료합니다. 코루틴 빌더는 부모도 종료시키며, 취소된 부모는 자식들 모두를 취소시킨다는 점. runBlocking { launch { delay(1000) throw Error("Some error") } launch { delay(2000) println("Will not be printed") } launch { delay(500) // 예외 발생보다 빠릅니다. println("Will be printed") } launch { delay(2000) println("Will not be printed") } } launch 코루틴을 더하는 건 아무것도 바꾸지 못합니다. 예외는 자식에서 부모로 전하되며, 부모가 취소되면 자식도 취소되기 때문에 쌍방으로 전파됩니다.. 2024. 2. 6.
9장 - 취소 코틀린 코루틴에서 아주 중요한 기능 중 하나는 바로 취소(cancellation) 이다. 기본적인 취소 Job 인터페이스는 취소하게 하는 cancel 메서드를 가지고 있습니다. cancel 메서드를 호출하면 다음과 같은 효과를 가져올 수 있다. 호출한 코루틴은 첫 번째 중단점에서 잡을 끝냅니다. 잡이 자식을 가지고 있다면, 그들 또한 취소됩니다.하지만 부모는 영향을 받지 않는다. 잡이 취소되면, 취소된 잡은 새로운 코루틴의 부모로 사용될 수 없다. 취소된 Job 은 Cancelling 상태가 되었다가 Cancelled 상태로 바뀝니다. @Test fun `98페이지`() { runBlocking { val job = launch { repeat(1_000) { i -> delay(200) println(.. 2024. 2. 5.
8장 - 잡과 자식 코루틴 기다리기 자식은 부모로부터 컨텍스트를 상속받습니다. 부모는 모든 자식이 작업을 마칠 때까지 기다립니다. 부모 코투린이 취소되면 자식 코루틴도 취소됩니다. 자식 코루틴에서 에러가 발생하면, 부모 코루틴 또한 에러로 소멸합니다. Job 이란? 시작된 코루틴에 대한 핸들로 사용된다. launch 코루틴 빌더는 Job 객체를 반환하고, 이 객체를 사용하여 코루틴이 완료될 때까지 대기하거나 코루틴의 상태를 관리할 수 있다. 코루틴 빌더는 부모의 잡을 기초로 자신들의 잡을 생성한다. 모든 코루틴 빌더는 자신만의 잡을 생성합니다. 대부분의 코루틴 빌더는 잡을 반환하므로 어느 곳에서든 사용할 수 있습니다. launch 의 명시적 반환 타입이 Job 이라는 사실을 통해 확인할 수 있습니다. Job 은 코루틴이 상속하지 않는 유일.. 2024. 1. 29.
7장 - 코루틴 컨텍스트 코루틴 컨텍스트 코루틴의 동작과 관련된 여러 설정을 담고 있는 정보의 집합. 코루틴의 실행 스레드, 코루틴의 이름, 사용할 디스패처와 같은 정보를 포함할 수 있다. 코틀린에서는 코루틴컨텍스트 인터페이스를 통해 관리한다. 확장함수: 기존 클래스에 새로운 메서드를 추가할 수 있는 코틀린 기능 코루틴의 launch 함수는 CoroutineScope 인터페이스의 확장 함수로 정의되어 있습니다. 이는 CoroutineScope 인스턴스에 대해 launch 함수를 호출할 수 있다는 의미. 리시버: 확장 함수가 호출되는 대상 객체를 리시버 라고 한다. this 참조: 확장함수 내부에서는 리시버 객체를 this 키워드를 사용하여 참조할 수 있다. key를 통한 Element 식별 코루틴 컨텍스트 내의 각 Element.. 2024. 1. 29.
6장 - 코루틴 빌더 launch 빌더 launch 빌더는 새로운 코루틴을 시작하고, 결과를 반환하지 않습니다(Unit을 반환). 주로 병렬 작업을 수행할 때 사용하며, 작업이 완료될 때까지 기다리지 않습니다. launch로 시작된 코루틴은 부모 코루틴의 생명주기에 연결되어 부모가 취소되면 자식도 취소됩니다. runBlocking 빌더 runBlocking은 현재 스레드를 블록하고 코루틴이 완료될 때까지 기다립니다. 주로 테스트나 메인 함수에서 코루틴 코드를 실행하기 위해 사용됩니다. runBlocking 내부에서는 다른 코루틴을 시작할 수 있으며, 내부 코루틴이 모두 완료될 때까지 기다립니다. async 빌더 async 빌더는 코루틴을 시작하고 Deferred 타입의 결과를 반환합니다. 반환된 Deferred 객체를 통해 .. 2024. 1. 29.
4장 - 코루틴의 실제 구현 중단 함수는 함수가 시작할 때와 중단 함수가 호출되었을 때 상태를 가진다는 점에서 상태 머신과 비슷합니다. 상태머신: 코루틴의 실행 과정은 내부적으로 상태 머신으로 변환됩니다.코루틴은 여러 상태(예: 시작, 중단, 재개, 완료)를 가질 수 있으며, 이러한 상태는 코루틴의 생명주기를 관리 한다. 컨티뉴에이션 객체는 상태를 나타내는 숫자와 로컬 데이터를 가지고 있다. 함수의 컨티뉴에이션 객체가 이 함수를 부르는 다른 함수의 컨티뉴에이션 객체를 장식합니다. 그 결과, 모든 컨티뉴에이션 객체는 실행을 재개하거나 재개된 함수를 완료할 때 사용되는 콜 스택으로 사용됩니다. 컨디뉴에이션 전달 방식 중단 함수가 구현될 수 있는 수많은 방법 중에서 코틀린 팀은 컨티뉴에이션 전달 방식을 택함. 컨티뉴에이션은 코루틴이 중단.. 2024. 1. 14.
728x90