[Apache POI] Iterator로 읽은 빈 셀 CellType.BLANK로 예외처리하기
·
Development/Spring
Apache POI를 이용해서 엑셀 파일을 읽어오는 기능을 구현했는데,기능 개발을 할 때는 되다가 테스트를 하니 ResponseDto에서 값을 가져오지 못하는 에러가 발생했다.Dto에서 디버깅을 해보니 값은 들어있어서 xlsx에서 row를 iterator로 읽는 과정에서 문제가 있다고 판단했다.1. 문제 상황try (InputStream inputStream = file.getInputStream()) { Workbook workbook = new XSSFWorkbook(inputStream); Sheet sheet = workbook.getSheetAt(0); Iterator rowIterator = sheet.iterator(); rowIterator.next(..
[Kafka]헷갈리는 토픽(topic), 이벤트(event), 파티션(partition), 컨슈머(consumer) 정리하기 - 택배 물류 창고로 비유하기
·
Infra/Kafka
카프카는 토픽을 기준으로 이벤트를 저장하고 전달하는데,토픽은 여러 파티션으로 나뉘어져 있어서 여러 컨슈머가 병렬로 읽을 수 있어 처리 속도가 빨라! 카프카는 이벤트를 안전하게 전달해서 여러 서비스가 구독하여 처리하게 해줘. 여기서 이벤트를 분류하고 저장하는 단위를 토픽이라고 하는데, 물리적으로 여러 파티션에 나뉘어 저장할 수 있어서 병렬 처리가 가능해. 토픽에 담긴 개별 메시지를 이벤트라고 불러. 카프카의 주요 개념인 토픽, 이벤트, 파티션을 택배에 비유해보자. 모든 택배가 모이는 물류창고가 있을거야. 이 물류창고에는 여러 컨베이어 벨트가 있고, 이 컨베이어 벨트로 여러 택배 상자들이 있어. 여기서 물류창고 = 토픽, 컨베이어 벨트 = 파티션, 택배 상자 = 이벤트로 비유할 수 있어. 만약 전국의 택배를..
[Kafka]카프카(Apache Kafka)가 왜 필요한걸까? - 커피 주문으로 비유하기
·
Infra/Kafka
카프카는 서비스 간 이벤트를 느슨하게 연결해서,엄청 많은 트래픽을 안전하게 비동기로 처리하면서 확장 가능한 메시지 플랫폼이야.우리가 키오스크에서 커피를 주문한다고 가정해보자. 그럼 커피를 주문함으로 인해, 1. (저장) 서버에 커피 주문이 저장된다. 2. (주방) 주문 내역을 주방으로 전송한다. 3. (재고) 커피 원두, 우유 등 재고를 차감한다. 저장, 주문, 재고 세 가지 일이 동시에 일어나야해. 만약 커피 주문이 엄청 많이 몰려온다면 어떻게 될까? 커피 주문과 동시에 저장, 주문, 재고 처리를 한 번에 하다보면 서버에 주문이 저장되는 데 시간이 걸려 주문 기록이 누락되거나, 주방으로 주문이 전달되는데 지연이 생기거나 재고 차감이 중복되어 마이너스 재고가 발생할 수 있어. 이러한 문제를 해결하기 위해..
[React Bits] React에 애니메이션을 추가하고 싶다면, React Bits!
·
Development/React
React 관련 애니메이션 문서를 찾아보다가애니메이션, 컴포넌트, 배경 등 여러 React 컴포넌트를 제공해주고 있는 라이브러리를 발견했다.이미 Github 21.9K star를 받은 레포지토리인데,요즘 React를 쓴다면 "우와" 할법한 애니메이션들이 가득하다.실제로 컴포넌트를 체험해볼 수도 있다! 사용 방법도 간단하다.npm에서 설치를 먼저 해주고,npm install gsap 사이트에서 체험해본 원하는 컴포넌트를 가져와서 쓰면 된다.import SplitText from "./SplitText"; delay, duration 같은 props를 맘대로 조절할 수 있어서커스터마이징에 자유롭다는 게 큰 장점인거 같다! https://reactbits.dev/ React BitsAn open source..
[Apache POI]Java에서 이미지를 포함한 Excel 파일 생성하기
·
Development/Spring
Java에서 이미지를 포함한 Excel 파일을 생성하기 위해서Apache POI 라이브러리를 이용하여 엑셀 다운로드 기능을 구현해보자!프론트에서 엑셀 다운로드 버튼을 클릭하면 해당 화면을 캡쳐한 이미지를 백엔드로 보내서,백엔드에서 엑셀 안에 이미지를 넣어서 다운로드 받는 기능을 구현하고자 한다. 단순 데이터를 엑셀로 다운로드 하는 기능은 구현되어 있지만,이미지를 포함하여 엑셀 파일로 생성하는 기능은 미구현되어 있어서 이 부분을 중점으로 포스팅하고자 한다. 프론트에서 백엔드로 이미지를 전송할 때는 MultipartFile을 이용하여 전송하여 활용했다.이미지를 어딘가에 저장해야 하나..? (예를 들면 데이터베이스라든가..) 생각했는데 결론은 다음과 같다.1. 이미지는 데이터 값에 영향을 받기 때문에 사용자마..