Home
의사줌치
Cancel

MultipartFile.getInputStream() java.nio.file.NoSuchFileException in async

개요 비동기 함수 안에서 MultipartFile.getInputStream() 실행 시 임시 파일이 없다는 에러가 난다. 원인 컨트롤러에서 multipart/form-data 요청을 받으면 해당 파일이 임시 경로에 저장되는 듯 하다. 이때 MultipartFile.getInputStream() 실행하면 임시 파일에서 stream ...

카프카, JsonSerializer 사용하기

개요 카프카 생산자(producer) value serializer를 JsonSerializer로 설정한다. 카프카 소비자(consumer) value deserializer를 JsonDeserializer로 설정한다. 소비자 그룹마다 다른 json을 message로 받을 수 있도록 한다. 환경 java 21 spring ...

spring security 6에서 oauth2.0 구현하기(google)

개요 spring security 6을 이용하여 oauth2.0 인증을 구현해본다. 예시에서는 oauth 2.0 인증 프로바이더로 google을 사용한다. Oauth 2.0 이란 표준화된 인증 방식을 의미한다. 한 곳에서 Ouath 인증을 하면 이 인증을 공유하는 애플리케이션끼리 별도의 인증 없이 인증할 수 있다[참고1]. 일...

카프카, 정확히 한 번(kafka, exactly once)

개요 카프카의 생산자(producer)의 메시지가 소비자에게 정확히 한 번만 배달되도록 할 수 있을까? 결론은 소비자(consumer)의 작업이 카프카 내부에서만 이뤄진다면 정확히 한 번 메세지를 배달하는 것이 가능하다. 하지만 소비자의 작업이 RDBMS와 같은 외부 저장소까지 포함한다면 정확히 한 번 메세지를 배달한다고 보장할 수 없다...

Support for the experimental syntax 'decorators-legacy' isn't currently enabled

현상 next.js에서 api 개발 시 typeorm을 적용하려고 하니 에러가 발생한다. 아마 typeorm의 데코레이터 문법이 원인으로 보이며 바벨에서 데코레이터 문법으로 지원하게 설정해주면 된다. 해결방안 @babel/plugin-proposal-decorators 설치 npm install @bab...

solana DApp 인증 구현

개요 solana DAPP에서 지갑인증을 구현해본다. 지갑으로 인증된 유저만 특정 페이지를 조회할 수 있도록 처리할 수 있다. How to Integrate Sign-in Authentication with a Solana Wallet을 그대로 따라 진행한다. 중요한 부분만 설명을 추가한다. 환경 next.js로 DApp을 ...

certbot, DNS 인증 시 자동 갱신하게 만들기(AWS Route 53)

설명 certbot에서는 여러 방식으로 웹서버 소유권 인증을 지원한다. getting-certificates-and-choosing-plugins 와일드카드 인증서를 발급받기 위해서는 DNS를 사용하여 인증을 받아야 한다. 여러 DNS를 지원하지만 여기서는 AWS Route53 기준으로 설명한다. 최초 발급 방법과 자동갱신 방법을 함...

certbot, webroot 방식으로 인증서 발급받기

설명 webroot 방식으로 certbot 인증서를 발급받는다. certbot 도커를 활용하여 인증서를 발급 받는다. 예시에서 인증 받을 도메인은 helloworld.com으로 가정한다. 사전 준비 nginx를 띄우고 Route 53 DNS에서 서버IP와 도메인을 연결한다. 이를 통해 도메인을 입력하여 서버로 http 접속이 가능...

next.js 빌드 시 ReferenceError: self is not defined 해결

설명 컴포넌트를 import 할 때 생길 수 있는 오류이다. import 대상 컴포넌트에 오직 클라이언트에서만 사용할 수 있는 기능이 포함된 경우, 사전 렌더링에 실패할때 이 오류가 발생한다. next/dynamic을 사용하여 ssr를 사용하지 않고 import를 하면 된다. 예시 import dynamic from "next/dyna...

multiple sheets 사용 시 tableOverflow 활성화하기(jspreadsheet-ce)

설명 jspreadsheet-ce에서 sheet를 생성할때 tableOverflow를 지정할 수 있다. tableOverflow를 false로 설정하면 사용자 커서가 화면 밖으로 넘어가도 화면이 커서를 따라지 않는다. tableOverflow를 true로 설정하면 사용자 커서가 화면 밖으로 넘어가면 자동으로 화면이 커서를 따라 이동한다....