본문 바로가기

Programing

(235)
[Jackson vs Gson] 오버라이딩한 메서드의 JSON serialize 테스트 기존에 JSON으로 만들던 객체에 메서드가 추가된다면 어떨까? 단순하게 생각하면 public 한 getter가 추가 되면 프로퍼티로 추가가 될 것 같다. 실험을 해보자. 테스트 DTO import lombok.Getter; import lombok.Setter; @Getter @Setter public class Apple { private String color; private int radius; } 1. Gson 및 Jackson 대조군 import com.fasterxml.jackson.databind.ObjectMapper import com.google.gson.Gson import spock.lang.Specification class AppleTest extends Specification..
[IntelliJ IDEA] 9000 포트의 사용 sonarqube를 로컬에서 테스트 할 일이 있어서 docker로 띄우려고 하는데 자꾸 에러가 난다. 자세히 살펴보니 누군가 9000포트를 사용하고 있다고 한다. 아래 명령으로 9000 포트를 LISTEN 하고 있는 프로세스를 찾아보았다. sudo lsof -i -n -P | grep TCP | grep 9000 범인은 IntelliJ 였다. 시간이 없어서 인텔리J를 종료하고 docker를 띄우니 정상적으로 떴다. 그런데 나중에 IntelliJ IDEA를 실행했더니 아래에 다음과 같은 메세지가 표시된다. 환경설정에서 찾아보니 PHP 하위에 Debug에 Xdebug라는 포트가 9000으로 설정되어 있었다. PHP 개발도 아닌데 이게 왜 활성화가 되어 있을까???
[Spock] when: 및 then: 블럭에서 with 사용하기 Spock에서 기본적인 테스트를 작성했다면 when: 블럭과 then: 블럭에 대해 알 수 있다. when: 블럭에서의 with Groovy 문법에 보면 with 라는 키워드로 같은 객체에 대해 동시에 배정(assignment)을 할 수 있다. 이 기본 그루비 문법은 when: 블럭에서 사용이 가능하다. 예. 과일 아래와 같은 Fruit 클래스와 내부에 Color 열거형(enum)이 있다. import lombok.Getter; import lombok.Setter; @Getter @Setter public class Fruit { private String name; private Color color; private int quantity; @Override public String toString(..
[Java] Class 생성 실험 자바에서 클래스란 매우 기본적인 지식이다. 카페에서 질문을 보고 한 .java 파일에 여러 클래스를 넣은 것을 보고 궁금해져서 실험을 해보았다. 평상시에서는 하나의 .java 파일에는 하나의 클래스, 혹은 중첩된 클래스(nested class)를 사용하기 때문에 이런 경험을 할 일이 없었기 때문이다. 1. 하나의 .java 파일에는 public 클래스 하나만 가능하다. 아래와 같이 두 public 클래스가 있다고 하자. 다음과 같이 에러가 발생한다. 2. public이 아닌 클래스는 여러 개가 가능하다. 1번의 해결책: ClassAnother를 public이 아니게 만든다. 3. package 스코프(default)는 여러개가 가능하다. Java 파일 이름의 클래스도 public 을 없애는 것이 가능하다..
[Spring] core - Converter 인터페이스 org.springframework.core.convert.converter 패키지에는 Converter라는 이름의 인터페이스가 있다. @FunctionalInterface public interface Converter { /** * Convert the source object of type {@code S} to target type {@code T}. * @param source the source object to convert, which must be an instance of {@code S} (never {@code null}) * @return the converted object, which must be an instance of {@code T} (potentially {@code..
[SpringBoot] HikariCP의 leakDetectionThreshold 기본값은? SpringBoot에서는 기본 커넥션 풀을 HikariCP을 쓴다. 가끔 long query가 있는지 가끔 누수가 검출되었다고 나온다. 그런데 좀 지나면 해당 커넥션이 회수되었다고 뒷북(?) 로그가 나온다. 회수가 되었으니 누수는 아닌데 에러 로그에 껴있어서 신경이 쓰인다. 스프링부트에는 spring.datasource.hikari.leak-detection-threshold 라는 프로퍼티가 있다. 실제 HikariCP에서는 leakDetectionThreshold 프로퍼티에 대응된다. com.zaxxer.hikari.HikariConfig 클래스에 보면 leakDetectionThreshold 필드가 있다. 기본값 디버깅 부트가 기본값으로 얼마를 넣어주는지 궁금해서 디버깅을 해보았다. org.sprin..
[Java] switch와 String 그리고 바이트코드 제목이 거창하다.사실 카페에서 본 질문에 댓글을 달다가 공부한 것을 정리하는 것이다. 질문은 아래와 같다.- 질문 제목 : switch에서 charAt사용 차이 - 질문 내용 :아래 두 코딩에 차이점이 뭔가요?? 처음에 charAt를 사용하지 않고 해보다가 저렇게해도 결과가 나오긴 했는데 charAt를 사용하라고 하셔서 사용한 것으로 바꾸긴 했는데 차이점이 뭔지 궁금합니다! 둘다 결과가 제대로 나오긴합니다. 차이왼쪽의 경우 char 타입으로 switch 안에서 분기를 하고 있고, 오른쪽은 String 타입으로 하고 있다. 변수명이 대문자로 시작하는 것이 거슬릴 수 있으나 초심자의 코드라고 생각하고 넘어가자. 그러면 이런 차이는 어떤 결과를 가져오게 되는가? 바이트 코드 관점 (TABLESWITCH / L..
[JavaScript] Promise와 예외 핸들러... 어제 자바스크립트 관련 코드 리뷰를 하게 되다가 알게된 것 정리.1. Promise로 구현된 함수를 await으로 호출 된 경우 reject가 된 경우 try ~ catch에 잡힌다.2.Promise로 구현된 함수를 그냥 호출 한 경우 함수 내부에서 reject가 된 경우 try ~ catch에 잡히지 않는다. 무슨 소리지 할 케이스가 다분해서 예제를 적어본다. await를 사용하여 호출아래와 같이 foo와 boo 함수가 있고 제일 끝에 boo 호출한다.var foo = req => new Promise((resolve, reject) => { console.log('req: ' + req); reject(new Error('wow'));}); async function boo(req, res) { tr..