프로젝트를 진행하다 보면 ~/src/main/resources 폴더에 파일을 저장하고 가져와서 사용할 일이 있다. 이때 프로젝트를 빌드하게 되면 리소스 파일은 CLASS_PATH에 위치하게 된다. 따라서 로컬에서는 아래의 예시 코드로 실행해도 실행이 되지만. 실제로 빌드를 하고 배포를 했을 때는 에러가 발생한다. ... fun getSheetService(): Sheets { return Sheets.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), HttpCredentialsAdapter( ServiceAccountCredentials.fromStream(FileInputStream("src/m..

AWS Lambda@edge로 실시간 이미지 리사이징 Lambda@Edge는 Amazon CloudFront의 기능 중 하나로서, 서버를 프로비저닝하고, 코드를 AWS Lambda에 업로드하고 요청에 대한 응답으로 함수가 사용자에게 좀 더 가까운 위치(리전)에서 트리거 되도록 구성할 수 있다. 프로비저닝: 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것 이러한 Lambda@Edge를 이용해서 쿼리스트링으로 옵션을 받아 실시간으로 이미지 크기(width, height)와 품질(quality), 파일 형식(format)등을 변경할 수 있도록 구성하고자 한다. 구현하고자 하는 기능 width, height 값으로 이미지 크기..
자바 직렬화란? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 시스템에서 사용할 수 있도록 바이트 형태로 변환하는 기술 바이트로 변환된 데이터를 다시 객체로 변환하는 역직렬화를 아울러서 얘기하기도 한다. 스프링에서 자바 직렬화(Serializable) 사용법 기본 모델에 java.io.Serializable 인터페이스를 implements하면 기본적으로 직렬화 할 수 있다. 기본 자료형(int, char, string, long, ....등)이어야 한다. 생성자나 메소드는 직렬화 대상에 속하지 않는다. class Report ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, @Column(columnDe..

HTTP Method 간략 정리 주요 메소드 : GET, POST, PUT, DELETE, PATCH OPTIONS : 주로 CORS에서 사용, 요청 URI에서 사용할 수 있는 옵션 설명 HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 TRACE : 목적 리소스의 경로를 따라 메시지 loop-back 테스트 CONNECT : 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺음 Patch Method의 등장 • 과거 HTTP 표준에는 PATCH 메소드가 존재하지 않았다. • 2010년도에 Ruby on Rails가 부분 수정의 필요를 주장하면서 공식적으로 HTTP 프로토콜로 추가되었다. • 스프링 프레임워크는 2002년에 첫 릴리즈를 하였는데, 이보다 한참 뒤에 등장하였고..
gradle 설정 예전과 달리 Springboot 2.3 버전 부터는 spring-boot-starter-validation 의존성을 명시해야 Valid를 사용 가능하다. build.gradle.kts 파일에 아래의 의존성 코드를 추가 implementation("org.springframework.boot:spring-boot-starter-validation") 관련 어노테이션 정리 어노테이션 예시 설명 @DecimalMax @DecimalMax(value = "5.5") 소수 최댓값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @DecimalMin @DecimalMin(value = "5.5") 소수 최솟값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @Max..