1. @RequestPart의 동작 방식을 통해 스프링의 MultipartFile 파일 업로드 처리 방식 이해하기 [ MultipartFile 파일 업로드 활성화하기 ]일반적으로 스프링 애플리케이션으로 파일을 업로드하기 위해서는 다음의 2가지 옵션이 사용된다. 먼저 enabled 옵션을 통해 멀티파트를 통한 파일 요청을 활성화하고, 서비스의 안정성을 위해 업로드 가능한 최대 파일의 크기를 지정해줄 필요가 있다.spring.servlet.multipart.enabled=truespring.servlet.multipart.max-file-size=1MBspring.servlet.multipart.resolve-lazily=true 여기에 추가적으로 resolve-lazily 옵션 역시 활용하면 좋다. 해당..
1. 네이티브 메서드와 블로킹 I/O로 대기중인 자바 스레드의 상태(Java Thread State on Blocking I/O with Native Method)[ 문제에 대한 이해 ]오늘날 대부분의 서비스들은 서버-클라이언트 모델을 기반으로 하고 있고, 스프링과 같은 애플리케이션의 내부 역시 다음과 같은 서버 소켓을 통한 연결, 그리고 통신이 기반을 이루게 된다.그렇다면 다음과 같이 원시적인 형태의 ServerSocket 생성하고, 요청에 대한 수립을 기다리는 accept()를 호출중인 코드가 존재한다고 하자.fun main(args: Array) { val serverSocket = ServerSocket(13232) val socket = serverSocket.accept() s..
1. 하이버네이트 ddl-auto 옵션과 ddl-auto=validate 옵션의 동작 과정 분석하기(Hibernate ddl-auto =validate option)[ 다양한 하이버네이트의 ddl-auto 옵션과 validate 설정 ]JPA와 Hibernate는 ddl-auto 옵션을 통해 스키마에 대한 특정한 작업을 수행할 수 있도록 도와준다.none: Hibernate는 데이터베이스 스키마에 대해 아무런 작업도 수행하지 않음validate: 엔티티 매핑 정보와 실제 데이터베이스 스키마를 비교하여 유효성 검사만 수행하도록 Hibernate에 지시함create-only: 엔티티 모델을 기반으로 데이터베이스 스키마를 생성만 하도록 Hibernate에 지시함drop: 엔티티 모델을 참조하여 DDL DROP..
1. 직업으로서의 소설가 내용 정리[ 1. 소설가는 포용적인 인종인가 ]소설 한 편을 쓰는 건 그리 어렵지 않습니다. 뛰어난 소설 한 편을 써내는 것도 사람에 따라서는 그리 어렵지 않습니다. 간단한 일이라고까지는 하지 않겠지만, 못 할 것도 없는 일입니다. 그러나 소설을 지속적으로 써낸다는 것은 상당히 어렵습니다. 누구라도 할 수 있는 일이 아닙니다. 그렇게 하려면 앞서 말씀드린 것처럼 특별한 자격 같은 것이 필요하기 때문입니다. 그건 아마도 ‘재능’과는 좀 다른 것이겠지요.자, 그런 자격이 있는지 없는지, 그걸 분간하려면 어떻게 해야 하는가. 대답은 단 한 가지, 실제로 물에 뛰어들어 과연 떠오르는지 가라앉는지 지켜보는 수밖에 없습니다. [ 2. 소설가가 된 무렵 ]내가 오랜 세월에 걸쳐 가장 소중히..
1. Gradle 의존성 분석을 통해 NoClassDefFoundError, NoSuchFieldError 오류 트러블슈팅 & 해결하기[ Gradle의 의존성 분석을 위한 Task들 ]Gradle의 dependencies TaskGradle은 의존성 분석을 위한 다양한 Taks들을 제공하는데, 크게 2가지를 활용하게 된다.dependencies모든 의존성과 그 트리 구조를 출력하는 Task전체적인 의존성을 파악하고, 특정 의존성이 '왜 추가되었는지' 확인하는 데 용이함dependencyInsight특정 의존성에 대한 상세 정보를 출력하는 Task특정 의존성에 대해 '왜 이 버전이 결정되었는지' 확인하는 데 용이함 먼저 dependencies Task를 실행해보자. 다음과 같은 명령어로 실행할 수 있다....