클래스 리터럴, 타입 토큰, 수퍼 타입 토큰

클래스 리터럴, 타입 토큰, 수퍼 타입 토큰이 글은 토비님의 방송 채널에서 소개해주신 수퍼 타입 토큰에 대한 내용을 바탕으로 Oracle의 리터럴과 런타임 타입 토큰 튜토리얼, 수퍼 타입 토큰 기법의 창시자로 알려진 Neal Gafter의 글과 Jackson에 사용되고 있는 TypeReference 클래스의 소스 코드를 참고로 작성했다. 클래스 리터럴과
Continue reading

Spring에서 JSON에 XSS 방지 처리 하기

Spring에서 JSON에 XSS 방지 처리 하기고마운 lucy-xss-servlet-filter의 한계XSS(Cross Site Scripting) 방지를 위해 널리 쓰이는 훌륭한 lucy-xss-servlet-filter는 Servlet Filter 단에서 < 등의 특수 문자를 &lt; 등으로 변환해주며, 여러 가지 관련 설정을 편리하게 지
Continue reading

Spring Data JPA 에서 Java8 Date-Time(JSR-310) 사용하기

Java8에는 시간 데이터를 더 편리하게 처리할 수 있게 해주는 LocalDate, LocalDateTime 등의 클래스들이 java.time 패키지에 추가되었다. 날짜/시간 차이 계산, 비교, 년/월/일/시/분/초 단위 별 추출 등 풍부한 기능을 제공해주므로 사용성이 아주 좋다. Joda-Time을 사용하고 있었다면, Java8에서는 java.time (
Continue reading

조금은 신경써줘야 하는 Jackson Custom Deserialization

알고보면 만만한 Jackson Custom Serialization에 이어 이번에는 Jackson Custom Deserialzation을 알아보자. Serialzation과 Deserialization은 대칭 관계니까 언뜻 생각하기엔 별로 다르지 않을 것 같은데, 당연하지만 세부적인 과정에서는 대칭이 아니기 때문에, Deserialization에서는 대수
Continue reading

알고보면 만만한 Jackson Custom Serialization

API 서버를 만들다보면 어떤 객체를 JSON으로 만들때, 특정 필드만 제외하거나 특정 필드의 이름을 바꿔야 하는 일이 생길 수 있다. 그 객체를 JSON으로 만들 때 특정 필드의 이름을 항상 바꾸려면 해당 필드에 @JsonProperty("새이름")을 명시하면 되고, 특정 필드를 항상 제외한다면 그냥 객체 클래스에 @JsonIgnore
Continue reading

대용량 파일을 AsynchronousFileChannel로 다뤄보기

Java 7 에는 비동기 방식의 File I/O를 지원하는 AsynchronousFileChannel이 추가되었다. 비동기 방식이므로 File I/O에 소요되는 시간 동안 다른 처리를 할 수 있다는 장점이 있다. 특히 용량이 큰 파일일 수록 File I/O에 소요되는 시간이 클 수 있으므로, 비동기 방식의 장점을 더 살릴 수 있다. Asynchronous
Continue reading

Java NIO는 생각만큼 non-blocking 하지 않다

일부러 낚시 냄새가 독하게 풍기는 제목을 지어봤다. Java NIO는 New IO의 줄임말인데, Non-blocking IO 의 줄임말이라고 알고 있는 개발자도 많은 것 같다.(나도 그랬다..) 그만큼 NIO는 Non-blocking이라는 마케팅이 꽤나 열심이었고, 또 그게 잘 먹혔기 때문인지, File I/O를 사용할 때마저 기존의 IO 방식 대신 NI
Continue reading

AWS - 다른 계정의 서울 Region S3로 이사가기

다른 계정의 서울 Region S3로 이사가기AWS 프리티어 기간 만료가 가까워서 새 계정을 개설해서 옮겨보려고 한다.마침 AWS에 서울 리전(Region)이 개설되었고, S3도 개설 서비스 목록에 포함되어 있다. 새 계정의 S3로 이사가는 대략적인 큰 순서는 다음과 같다. AWS 새 계정 생성, IAM Group 생성, IAM 계정 생성, ACCESS
Continue reading

Selenide 꿀팁

SelenideSelenide(셀레나이드)는 브라우저에서의 액션을 테스트 할 수 있게 해주는 테스팅 도구다. 이름에서 “어? 어디서 본 듯한?”하는 말이 떠오를 수 있는데, 그 짐작이 맞다.Selenium이 WebDriver라는 기술 기반으로 브라우저 테스팅을 위한 저수준 API를 제공한다면, Selenide는 Selenium을 더 쓰기 쉽도록 고수준 Ja
Continue reading

HomoEfficio


Seoul, Korea.