본문 바로가기
반응형

전체 글333

[Kotest] Kotest 활용 간단 가이드 Kotest란? 🤔 공식 사이트에 가보면 Kotest를 아래와 같은 말로 표현하고 있다.Kotest is a flexible and elegant multi-platform test framework for Kotlin with extensive assertions and integrated property testing 위의 말을 보면 총 3가지 정도의 기능을 제공하고 있다. 각 기능들을 독립적으로 사용할 수 있는데, 이는 Kotest가 독립적으로 나뉜 여러 개의 하위 프로젝트들로 구성되어 있기에 가능한 일이다. (3가지 기능을 모두 사용하고 싶다면 의존성도 각자 추가해야 한다는 의미이다.) 일단 어떤 기능들을 제공하고 있는지부터 살펴보자. 1. 유연하고 우아한 멀티 플랫폼 테스트 프레임워크다.👉 .. 2024. 10. 27.
Spring MVC + Coroutines 에 대한 고민 🤔 문제의 시작 우리 팀은 Spring MVC와 Coroutines, Kotlin을 사용하는 레포가 있다. 신규 API를 개발해서 호출하니 NoClassDefFoundError가 발생했다. MonoKt를 찾지 못한다고 한다. 모든 API에서 발생하는 건 아니고 코루틴을 적용한 API에서만 발생하였다.Handler dispatch failed: java.lang.NoClassDefFoundError: kotlinx/coroutines/reactor/MonoKt 많은 곳에서 kotlinx.coroutines.reactor 의존성을 추가하라는 말만 있을 뿐, 명쾌한 해결 방법이나 원인에 대해 알기는 어려웠다. WebFlux를 사용하는 것도 아닌데 reactor와 관련된 의존성을 왜 추가해야 하는지 이해가 안.. 2024. 9. 30.
서울 우먼잇츠 X 우아한스터디 후기 ⏰ 스터디 지원 2024.06.01 ~ 2024.07.27까지 약 두 달간 서울 우먼잇츠 X 우아한스터디를 참여했다. 서울 우먼잇츠 X 우아한스터디는 서울시여성가족재단과 우아한형제들이 함께하는 스터디 모임으로, 서울 우먼잇츠 커뮤니티 멤버와 우아한형제들 임직원들 대상으로 진행된다. 나는 우아한형제들 임직원으로서 코루틴 스터디를 신청하였다. 나중에 들어보니 지원자가 굉장히 많았다고 한다.  👥 스터디 인원스터디 멤버는 스터디장님이 모든 신청서를 확인하시며 뽑으신 것 같았다. 우리 팀 인원은 총 7명이었는데 스터디장님이 최대한 다양성을 추구하며 뽑으셨다. 서울 우먼잇츠 커뮤니티 멤버 4명과 우아한형제들 임직원 3명, 직군도 백엔드(서버)/안드로이드 섞여있고, 성별도 혼성, 연차도 다양하게 등 여러 유형의 .. 2024. 9. 22.
[인프콘 후기] 2024 INFCON 1. 올해도 인프콘! 올해도 인프콘 신청에 광탈했다.😇 하지만 정말 감사하게도! 문기님의 은혜로 초대권을 받아 참가할 수 있었다.👍 2022년, 2023년에 이어 올해도 인프콘에 참여할 수 있게 되어서 정말 기쁘다. 작년에도 즐길거리가 많다고 느꼈는데 올해는 인생네컷이나 라이트닝 토크 등 더 많은 이벤트를 준비하신 게 눈에 보였다. 좋은 발표도 많은데 즐길거리도 많으니 행사 시간 8시간이 모자랄 지경이다. 매년 발전하는 인프콘 존경하고 감사합니다! 이전 인프콘 후기들 바로가기[인프콘 후기] 2023 INFCON[인프콘 후기] Hello INFCON! 2. 세션 메모세션에 대한 간단한 감상과 인상깊게 들은 부분에 대한 메모를 남깁니다.실제 세션 내용은 이후 인프콘에서 공개하는 영상을 확인해 보시길 추천.. 2024. 8. 3.
[Coroutine] 코루틴과 공유 상태 코루틴 스터디를 하며 정리 중인 시리즈 글왜 코루틴을 써야할까?[Coroutine] 코루틴 빌더, 코루틴 컨텍스트[Coroutine] 구조화된 동시성[Coroutine] 코루틴 스코프 함수[Coroutine] 디스패처[Coroutine] 코루틴과 공유상태 코루틴 코루틴의 이름에는 아래와 같은 뜻이 담겨있다.co: 함께, 협력하는routine: 특정한 일을 처리하기 위한 일련의 명령coroutine: 함께 실행되는 루틴. 서로 간에 스레드 사용을 양보하며 함께 실행됨 코루틴은 항상 하나의 스레드 위에서 동작하지는 않는다. 코루틴 디스패처와 스레드풀의 연관 관계는 '[Coroutine] 디스패처' 포스트를 참고하길 바란다. 코루틴은 일시 중단이 일어나면 다른 코루틴에게 스레드를 양보한다는 점을 기억하자.  .. 2024. 7. 31.
[Coroutine] 코루틴 디스패처 코루틴 스터디를 하며 정리 중인 시리즈 글왜 코루틴을 써야할까?[Coroutine] 코루틴 빌더, 코루틴 컨텍스트[Coroutine] 구조화된 동시성[Coroutine] 코루틴 스코프 함수[Coroutine] 디스패처[Coroutine] 코루틴과 공유상태 💥 디스패처 코루틴 컨텍스트에 대해 학습할 때 디스패처에 대해 간단히 학습하고 넘어갔었다. 이 글에서는 디스패처를 좀더 자세히 알아볼 예정이다. 영단어 디스패처는 사람이나 차량 등을 필요한 곳에 보내는 것을 담당하는 사람이라는 뜻이다. 코루틴에서의 디스패처는 코루틴을 스레드로 보내는 역할(어떤 환경에서 실행될지 결정하는 역할)을 한다.  📌 CoroutineDispatcher의 동작CoroutineDispatcher는 아래와 같은 그림처럼 동작한다... 2024. 7. 8.
[Coroutine] 코루틴 스코프 함수 코루틴 스터디를 하며 정리 중인 시리즈 글왜 코루틴을 써야할까?[Coroutine] 코루틴 빌더, 코루틴 컨텍스트[Coroutine] 구조화된 동시성[Coroutine] 코루틴 스코프 함수[Coroutine] 디스패처[Coroutine] 코루틴과 공유상태 🎉 coroutineScope 코루틴 스코프 함수는 중단함수 내에서 스코프가 필요할 때 사용한다. coroutineScope는 코루틴 스코프 함수의 일종이다. 🔸 coroutineScope 로 인해 중단되는 코루틴coroutineScope는 새로운 코루틴을 생성하면 작업이 끝날 때까지 coroutineScope를 호출한 코루틴을 중단시킨다. 아래 예제를 보면 println이 순차적으로 진행되는 것을 볼 수 있다.suspend fun main(): U.. 2024. 6. 29.
[Coroutine] 구조화된 동시성, 코루틴 스코프 코루틴 스터디를 하며 정리 중인 시리즈 글왜 코루틴을 써야할까?[Coroutine] 코루틴 빌더, 코루틴 컨텍스트[Coroutine] 구조화된 동시성[Coroutine] 코루틴 스코프 함수[Coroutine] 디스패처[Coroutine] 코루틴과 공유상태 🎄 구조화된 동시성'왜 코루틴을 써야할까?'에서 구조화된 동시성에 대해 아주 잠깐 설명했었다. 이 포스팅을 통해서 좀 더 자세한 이야기를 다뤄보려고 한다.  구조화된 동시성(Structured Concurrency)이란, 비동기 작업을 구조화함으로써 비동기 프로그래밍을 보다 안정적이고 예측 가능하게 만드는 원칙이다. 코틀린 코루틴은 비동기 작업인 코루틴을 부모-자식 관계로 구조화함으로써 코루틴을 안전하게 관리 및 제어하게 만들어졌다. 구조화된 코루틴의.. 2024. 6. 29.
[Coroutine] 코루틴 빌더, 코루틴 컨텍스트 코루틴 스터디를 하며 정리 중인 시리즈 글왜 코루틴을 써야할까?[Coroutine] 코루틴 빌더, 코루틴 컨텍스트[Coroutine] 구조화된 동시성[Coroutine] 코루틴 스코프 함수[Coroutine] 디스패처[Coroutine] 코루틴과 공유상태 🔅 코루틴 빌더 코틀린 코루틴은 코루틴을 일시 중단시킨다. 이런 방식을 통해 스레드를 블로킹할 때보다 훨씬 가볍게 사용할 수 있다. 그런데 이 코루틴 중단은 중단 함수 내에서만 일어날 수 있다. 그리고 중단함수는 중단함수 내에서만 호출되어야 한다. 중단함수가 최초로 시작되는 지점은 어디일까? 바로 코루틴 빌더다. 🔸 코루틴 빌더중단 함수가 시작되는 지점모든 코루틴 빌더는 자신의 Job을 생성 (Job에 대한 설명은 하단에 있다.)launch, asy.. 2024. 6. 23.
반응형