Programing/JVM(Java, Kotlin) (97) 썸네일형 리스트형 [Kotlin] 커버리지 측정 도구를 JaCoCo에서 Kover로 변경하다 그동안 Kotlin을 사용하면서 Java의 도구들을 코틀린 도구들로 변경해서 사용했습니다.JUnit → KotestMockito → MockK회사에서는 SonarQube의 클라우드 버전인 SonarCloud를 사용하여 정적 코드 분석을 사용하고 있었습니다.코드 품질 중 코드 커버리지는 JaCoCo의 XML 테스트 리포트를 이용하여 제공을 하고 있었습니다. 가끔 테스트를 할 수 없는 부분이나 이미 테스트가 완료되었음에도 커버가 안된다는 분석이 나와서 의아함을 느끼고 있었습니다. JaCoCo 오탐들Spring Boot의 애플리케이션을 수행하는 부분 코드를 보면 닫는 괄호 부분도 커버가 안된다고 JaCoCo에서는 표시가 됩니다. 또한 Java에는 없고 Kotlin에만 있는 value class도 어떤 경우는.. 실패하는 테스트부터 만들기 패턴 Mincho에게 버그에 대해 개선을 할 때 코드부터 고치지 말라고 종종 이야기한다. 대신 실패하는 테스트를 먼저 만들고 실패하는 것을 재현하고 이후 코드를 수정하여 성공하는 테스트로 만들라고 했다. 이런 패턴은 포프TV의 효율적인 테스트 코드 작성법에 나오는 것과 동일하다. 우연히 이동욱 님 블로그 기억보단 기록에 갔다가 Spring Batch에 PR을 올리셨던 것이 거절당한 것을 보게 되었다. Spring Batch Lead인 Mahmoud Ben Hassine가 comment를 남겼는데 이유는 명확했다. 실패하는 테스트가 없었기(There is no failing test in this PR) 때문이었다. 오픈소스 커뮤니티에서도 실패하는 테스트는 유효하다는 것을 느꼈다. Java 17 으로 업데이트할 이유가 하나 더 생겼다. Spring Framework 의 메이지 버전 업데이트인 5.x → 6.x 에서는 Java LTS인 11 에서 17로 기본 버전(baseline)이 올라갔다. 그 뿐만 아니라 Java EE 8 에서 Jakarta EE 9+ 로 바뀌면서 패키지 네임스페이스도 jakarta 를 써야하는 변화도 있다. 아직까지는 스프링 프레임워크와 스프링 부트의 과거 버전과의 혼용의 과도기라서 비즈니스 적인 개발을 우선적으로 처리하여 유예하고 있었다. 3일전 (2023-08-04)부터 sonarcloud 분석을 돌리면 아래와 같은 메시지가 밑에 나타났다. The version of Java (11.0.20) you have used to run this analysis is deprecated and we will stop .. [Kotlin] byte[]을 String으로 바꾸기 과거에 [Java] byte[]을 String으로 바꾸기 글을 쓴 적이 있다. 요즘은 코틀린을 주로 사용을 해서 글을 다시 써보았다. 방법에 대해서는 https://www.baeldung.com/kotlin/byte-arrays-to-hex-strings 에 잘 나와 있기에 링크를 참고하는 것이 더 좋다. 최초 코드 원래 코드을 method extract 로 리팩토링을 해보니 아래와 같이 표현을 할 수 있는 코드였다. (원래코드는 아래에 나옵니다. ^^;;) private fun bytesToHexString(bytes: ByteArray): String { val hash = StringBuilder() for (aByte in bytes) { val hex = Integer.toHexString(0x.. @NotNull이 Needs Work가 필요한 수준인가요? 코드 리뷰를 하다가 제목과 같은 질문을 받았다. @NotNull이 Needs Work가 필요한 수준인가요? 사업자등록번호에 대한 유효성 제약 수정이 있어서 PR을 받았는데 의견을 남기고 추가적인 작업이 필요할 것 같아서 Needs Work 로 마크를 했었다. 아래와 같은 요청 파라미터로 사용되는 객체이다. (실무 코드는 아니고 예제이다.) import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Getter @Setter public class MemberJoinRequest implements Member { @NotN.. System.out 의 성능? 마이그레이션을 위한 임시 코드로 로깅을 위해 System.out.println 을 사용했다. Q. 예외상황이긴 하지만, 최대 size가 1000개일텐데, System.out.println 괜찮을까요? 여기에 세 고개가 더 붙여졌다. Q2. 왜 "System.out.println 안 괜찮을까요?" Q3. 성능? Q4.어떤 성능이요? 지금은 절판된 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기에도 11번 "로그는 반드시 필요한 내용만 찍자" 부분에서 System.out.print 사용에 관련된 내용이 있어서 내용의 요지는 이해했으나 상기 차원에서 검색을 해서 기록해 두었다. 출처: Java - System.out effect on performance 관점1. println 은 synchronized 로 동.. [Kotlin] Kotlin Koans 참고로 Koan이란 공안(公案)의 일본식 발음을 영어로 표기한 것이다. 불교에서 온 영어로 뛰어난 선(禪) 수행자의 깨달음이나 인연 또는 언행이다. 한국어로는 공안보다는 간화선(看話禪)이라는 용어를 찾아보면 이해하는데 도움이 된다. 접근 경로: Kotlin (v1.4.21): kotlinlang.org/ Play Kotlin Language > Koans: play.kotlinlang.org/koans/overview Educational Products 2020.3 > Learner Start Guide (2020-12-11) - Install EduTools Plugin EduTools 1.6M, 4.4.6, 4.4-2020.3-517, 2020-12-25 더보기 With the EduTools pl.. [Java] var는 키워드가 아니다. "개발하자" 라는 슬랙에서 이석민(닉네임 lee_maru)님이 "var는 키워드가 아닙니다."라는 이야기를 해서 찾아보게 되었다. 자바언어 규약(JLS)를 찾아보니 var는 키워드가 아니라고 한다. var is not a keyword, but rather an identifier with special meaning as the type of a local variable declaration reference: docs.oracle.com/javase/specs/jls/se12/html/jls-3.html#jls-3.9 국내 출판된 책들 중에는 var 이 키워드라고 되어 있는 책도 있었다. - 장윤기 님의 Practical 모던 자바 이전 1 2 3 4 ··· 13 다음