1. 공식문서로 Kotest에 대해 알아보기 [ Kotest란? ] 코틀린에서 사용 가능한 언어의 특징을 이용함으로써, Kotest는 더욱 강력하지만 간단한 테스트 정의 방법을 제공한다. KoTest에서 테스트는 테스트 로직을 담고 있는 단순한 함수일 뿐이며, 이제 자바 파일에 테스트를 메서드로 정의하는 시대는 끝난 것이다. Kotest에서 테스트 메서드는 번거롭게 수동으로 정의하는 것이 아니라 Kotest의 DSL을 사용해서 정의한다. class MyFirstTestClass : FunSpec({ test("my first test") { 1 + 2 shouldBe 3 } }) 테스트를 중첩시키는 것 역시 간결해졌다. JUnit에서 테스트를 중첩시키려면 다음의 번거로운 작업이 필요했다. class Ne..
1. 유용한 개발 관련 아티클 및 영상 #14 JVM의 init과 cinit 메서드에 대하여 init은 인스턴스의 초기화를 위해 사용되는 메서드 생성자와 초기화 블록은 자바에서 분리되어 있지만 바이트 코드 수준에서는 동일한 인스턴스 초기화 메서드에 해당함 cinit은 클래스 수준으로 무언가를 초기화하기 위해 사용되는 메서드 컴파일할 때 컴파일러는 정적 블록을 바이트코드 수준에서 클래스 초기화 메서드로 변환함 출처: https://www.baeldung.com/jvm-init-clinit-methods?fbclid=IwAR0E_LUFRBNqppJPJ_WzdGkVcCCVz_sVAZ798V26icsdBjqNrpfKcfLI4f0 자바에서 오브젝트 생성 JVM이 인스턴스를 생성한 후에 init을 통해 초기화 메서..
1. 행복의 기원 내용 정리 및 독서 후기 [ 내용 정리 ] p15 삶은 갈등의 연속이다. 이 갈등은 인간의 양면적 모습 사이의 끝없는 줄다리기다. 무의식적이고 동물적인 우리의 “본능”이 의식적이고 합리적이고자 하는 문명인의 “이성”과 하루에도 몇 번씩, 평생 동안 충돌한다. p16 행복은 본질적으로 감정의 경험인데, 마치 머리에서 만들어내는 일종의 생각 혹은 가치라는 착각이 들게 한다. 왜 생각을 바꾸는 것만으로는 행복해지기 어려운 것일까? 결론부터 말하자면 이렇다. 행복은 사람 안에서 만들어지는 복잡한 경험이고, 생각은 그의 특성 중 아주 작은 일부분이기 때문이다. p22 지난번에 선본 남자가 싫은 이유? “담배를 피워서” 친구들에게 이렇게 설명하고, 자신도 그렇게 믿는다. 그러나 담배라는 이유는 자..
1. 유용한 개발 관련 아티클 및 영상 #13 스타트업에서 4년간 인프라를 운영하며 좋았던/후회하는 (거의) 모든 인프라 결정들 AWS 선택 AWS 대 Google Cloud 선택: AWS를 선택한 것을 지지함. AWS는 고객에 중점을 두고 있음. Google Cloud는 로봇과 자동화에 의존하는 느낌이 있음. EKS: EKS 사용을 지지함. EKS는 AWS 서비스와의 깊은 통합을 제공하며, Kubernetes도 많은 방면에서 따라잡았음(외부dns를 사용하여 Route53과 통합하는 등) EKS 관리형 애드온: EKS 관리형 애드온 사용을 후회함. 설치를 커스터마이즈해야 할 필요가 있었고, helm 차트로 전환한 이후 더 나은 운영을 경험 데이터베이스 및 캐싱 RDS: RDS 사용을 지지함. 데이터는 인..
1. JIT 컴파일러(Just-In Time Compiler)의 최적화 과정 자세히 살펴보기 [ Inlining(인라인) ] 앞선 포스팅에서 살펴보았듯 Inlining은 호출되는 메서드를 본문으로 인라인하여 메서드 호출에 대한 오버헤드를 줄일 수 있고, 이를 통해 다른 최적화를 적용할 수도 있다. 하지만 인라인은 코드 크기를 늘리기 때문에 신중하게 적용되어야 한다. 왜냐하면 컴파일된 코드는 제한된 코드 캐시라는 힙 공간에 저장되는데, 공간이 부족해지면 더 이상 코드를 컴파일 할 수 없기 때문이다. 따라서 JVM은 휴리스틱하게 메서드의 인라인 여부를 결정하는데, 대표적으로 자주 호출되는 메서드나 Getter와 Setter 같은 간소한 메서드들을 인라인하려고 시도한다. 인라인 정책은 JVM 매개변수로 변경할..