목록분류 전체보기 (44)
디지안의 개발일지
들어가기 전에 인프런에서 평소에 많이 본 강의를 찍으신 자바 개발자의 선생님 김영한님의 인터뷰를 보았다. 내용을 완전 압축해서 작성했기 때문에 직접 유튜브에서 보는 것이 좋을 듯 하다. 시간 관리 시스템(습관)을 만들어라. 목표는 너무 높으면 무너지기 쉽다. 번아웃 영한님도 분기에 한번씩 번아웃이 오신다고 한다. 그래서 일주일정도 게임을 하고 환기해서 극복을 하는 편이다. 테스트와 실제 장애와의 간극 경험 결국은 답은 정해져 있다. 테스트 코드 미리 장애를 막는 것도 있지만 결국 테스트 코드로 빠르게 확인할 수 있음 장애는 무조건 난다라는 것을 받아들인다. 중요한 것은 장애를 빨리 대처하는 것이다. 배움의 끝은 어디인가? 사람은 본인의 익숙하지 않은 부분에 대해서 두려워 한다. 익숙하지 않은 많은 것에 ..
이 문서는 Kt.Academy를 보고 배운 내용을 작성하였습니다. 코루틴을 다루는데 있어서 예외처리는 매우 중요한 부분이다. 코루틴에서도 예외가 발생하면 코루틴 자체가 중단된다. 코루틴 빌더는 예외에 의해 코루틴이 취소되면 상위 코루틴도 취소하고 각 상위 코루틴의 하위 코루틴을 삭제한다. 다음 예제를 보자. 아래와 같이 에러가 발생하기 전에 실행된 코루틴은 실행되지만 하위 코루틴에서 예외가 발생하면 모든 코루틴이 취소된다. fun main(): Unit = runBlocking { launch { launch { delay(1000) throw Error("Some error") } launch { delay(2000) println("Will not be printed") } launch { delay..
이 글은 High performance with idiomatic Kotlin을 보고 배운 내용에 대해서 서술합니다. 우리가 좋은 성능을 발휘하는 애플리케이션을 만드려는 이유는 간단하다. 느리면 사용자가 내가 개발한 소프트웨어를 사용하지 않기 때문이다. 이 글에서 소개하는 내용은 다음과 같다. 소프트웨어 제품을 구축할 때 고성능이 필수적인 이유 성능 문제의 가장 일반적인 이유 Kotlin에서의 성능 향상 효과 소프트웨어 제품을 구축할 때 고성능이 필수적인 이유 연구 에 따르면 사용자는 빠른 로딩 페이지를 높이 평가한다. 여기서 주목해야할 점은 결과를 빠르게 보여주는 것이 아니라 진행 상황을 제공한다는 것이다. 진행 상황만 제공이 되도 소프트웨어로 얻으려는 목표를 빠르게 달성하고 있다고 만족감을 느낀다고 ..
코틀린 코루틴 취소 이 문서는 Kt.Academy를 보고 배운 내용을 작성하였습니다. 코틀린 코루틴을 취소하는 방법에 대해서 설명합니다. 코틀린 코루틴을 취소하는 것은 코루틴에서 매우 중요한 기능입니다. 훌륭한 취소 메커니즘은 그만큼 가치가 있습니다. 단지 스레드를 죽이는 것은 좋지 않은 해결법입니다. 스레드를 죽이기 전에 스레드에서 활용 중이던 어떤 연결이 리소스를 해제 해줘야 합니다. 그러면 코루틴은 어떻게 취소하는지 살펴보도록 하겠습니다. 기본 취소 방법 Job 인터페이스는 취소를 할 수 있는 cancel 함수가 존재합니다. 코루틴의 취소는 다음과 같은 특징을 가지고 있습니다. 취소 시점으로부터 첫 번째 중단 지점으로부터 취소가 이루어집니다. 하위 Job이 있는 경우 모두 취소합니다. 한번 Job을..
이 문서는 Kt.Academy를 보고 배운 내용을 작성하였습니다. suspendCoroutine을 이해하고 코틀린에서 어떤 방식으로 지연 - 재개가 이루어지는 살펴봅니다. suspendCoroutine 특징 살펴보기 아래와 같이 코루틴 코드를 작성하면 순차적으로 실행이 되면서 결과가 나옵니다. fun main() = runBlocking { launch { println("1") println("2") println("3") println("4") } } // 결과 1, 2, 3, 4 중간에 suspendCoroutine을 넣으면 supendCoroutine을 선언한 부분에서 실행이 멈추게 됩니다. fun main() = runBlocking { launch { println("before") suspe..
Inline functions 들어가기 전에 이 글은 코틀린 공식 홈페이지의 글을 보고 배운 내용을 작성하였습니다. 람다식의 문제점 고차함수를 통해서 람다식을 사용하면 Runtime에 패널티가 부과될 수도 있다. 람다식 자체가 하나의 오브젝트고 클로저를 캡처하기 때문이다. 쉽게 말하면 람다식은 문법적으로 함수형 인터페이스의 구상 익명 객체이기 때문에 결과적으로 객체가 되고 람다식을 사용한 만큼 객체가 증가하기 때문에 메모리를 더 사용하게 된다. Inline 함수 그렇기 때문에 등장한 것이 inline 함수다. inline 함수는 컴파일 시점에 람다식을 마치 원래 그 자리에 해당 블록 구문들이 존재하는 것처럼 변경해준다. 예시로 아래와 같은 코드를 보자. 코틀린 코드 fun main() { var a: S..
이 문서는 github action이 무엇인지에 대해서 설명합니다. Github Action이란? Github Action은 Github에서 제공하는 소프트웨어 워크플로우 자동화 도구입니다. CI/CD, Build, 테스트, 배포등을 Github에 내에서 쉽게 진행할 수 있습니다. Github Action 동작 흐름 Github Action은 다음과 같은 흐름으로 작동됩니다. Git Repository 안에 생성된 event들이 trigger가 되어 workflow가 진행됩니다. (여기서 이벤트는 PR이 열렸거나 이슈가 만들어졌을 때등을 의미합니다.) workflow 는 하나 이상의 job 들로 구성되어 있습니다. (이 job들은 순차적으로 진행될 수도 있고 병렬적으로 처리될 수도 있습니다.) 각 job..
Probe의 종류 쿠버네티스에서는 애플리케이션의 안정성을 보장하기 위한 장치 중에 하나로 Probe 기능을 제공한다. Liveness Probe : 컨테이너가 살아있는지 확인하고 문제가 생겼을 때 복구(다시 시작) 하는 역할을 한다. Readiness Probe : Pod가 정상적으로 뜨면 서비스를 기능을 활성화한다. 서비스 기능이 활성화되면 외부 클라이언트가 해당 Pod로 요청을 보낼 수 있다. Startup Probe : 애플리케이션의 활성화 상태를 확인하여 Liveness, Readiness 기능을 활성화 / 비활성화 할지 결정한다. Liveness 예제 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spe..