728x90
반응형

분류 전체보기 145

Spring Kafka 좀 더 공통 설정하기

일전에 카프카 에러 포스팅 에서 Configuration 설정을 자바 클래스에서 해주었다. 그것도 클래스별로!! 에러 포스팅과 더불어 This error handler cannot process 'SerializationException's directly; please consider configuring an 'ErrorHandlingDeserializer' in the value and/or key deserializer 이런 문구도 출력해줬었다. 근데 저 에러 포스팅을 보면서 좀 더 공통화할 수 없을까에서 찾아보다가 ErrorHandlingDeserializer 관련 검색을 해보다가 문서에서 찾게 되었던게 있는데, 기존의 설정을 이미지로 한번 가져와봤다. 그런데 이 방법을 Listener가 늘어나..

Spring/Kafka 2022.10.06

Spring Kafka Deserializer Class Not Found Exception

현재 회사에서 spring-kafka 를 이용해서 특정 서비스들의 푸시 메세지 이벤트를 받아서 전송해주는 서버를 구현하고 있다. (오늘 쿠버네티스에 배포까지 했다!! 모르는게 너무많은...) 로컬에서 내 맘대로 메세지 토픽을 발행해서 쏴도 잘 맞게 역직렬화를 수행을 해주길래 그냥 그런가보다. 하고 잘 넘어갔던 찰나에!!! Class Not Found Exception 왜? 이 에러가 났을까? 일단 나는 구독하는쪽 그러니까 Kafka에서는 Consumer 쪽 만을 구현해주었다. 내 지식이 부족했던 탓인지는 모르겠지만, 어쨌든 같은 JSON 형태라고 생각해서 클래스가 무엇이던 간에 JSON형식만 같다면 Consume해도 괜찮을 것이라고 처음 생각했었다. 그래서 발행 모델인 Producer쪽에서는 예를 들면 ..

Spring/Kafka 2022.09.16

@ModelAttribute, @RequestBody 커맨드 객체

ModelAttribute와 RequestBody의 커맨드 객체 파싱이 다른것을 확인했다. 한번 알아보자! ModelAttribute 동작과정은 덤이다. ModelAttribute 이 포스팅을 하는 이유는 인자가 많을 경우에 post방식으로 조회를 하는 식으로 구성을 했었는데, 코드리뷰중에 이런말이 나왔었다. get방식으로 다른 객체로 묶어서 한번에 받아보는건 어떤가요? 변수가 많아지면 많아질 수록 수정점이 늘어날것 같아요! 라고 받았다. 그래서 무의식적으로 평소에 하던방식처럼 post로 수정하여 커밋하고 수정했었다. 근데 post로 안바꾸고 get에서 @ModelAttribute 사용하면 객체로 파싱이 된다는것을 듣고 내가 부족했구나 싶었다. 이 글은 그 부분에서 나와 집에와서 따로 정리하여 포스팅한다..

Spring 2022.09.15

참조 유형

이펙티브 자바를 읽다가 약한참조에 대한 이야기가 나와서 포스팅한다. 참조에는 아래 4가지가 존재한다. Strong References (강한 참조) Soft References (소프트 참조) Weak References (약한 참조) Phantom References (팬텀 참조) 이 해당 참조 유형에 따라 GC 실행 대상여부, 시점이 달라진다. 강한참조 new 연산자를 사용하여 객체를 인스턴스화 하고 참조하는 방식. 참조가 해제되지 않으면 GC의 대상이 되지 않는다. Test test = new Test(); 해당 test라는 변수가 참조를 가지고 있다면 GC의 대상이 되지 않는다. test = null이 되는 순간 GC의 대상이 된다. 소프트참조 대상 객체의 참조가 SoftReference만 있다면..

Java 2022.09.12

Checked Exception, Unchecked Exception

예외를 알아보기 전에 에러와 예외의 차이부터 알아보도록 하자. 에러 일단 에러(Error)는 시스템이 비정상적인 상황에 발생하게 된다. 수습할 수 없는 상황에 놓이게되어 개발자가 예측하지 못한경우이다. 예외 예외는 개발자가 구현한 로직에서 발생된 실수나 사용자의 영향이 미쳐 발생하게 되는 것이다. 그렇기에 미리 예측해서 방지할 수가 있다. 이펙티브 자바를 회독하며 스터디를 진행하면서 2장에 IllegalArgumentException이 나오게 되어 이 예외 부분을 정리하게 됐다. Checked, Unchecked Exception 기본적으로 오류, 예외는 Object를 상속받는 Throwable클래스를 상속받아 구현이 되어있다. 이미지 출처 - https://www.programcreek.com/2009..

Java 2022.09.07

라즈베리파이 사용

시작하기 내가 클라우드 요금은 견딜 수 없어서 상당히 겁이 난 상태였다. 하지만 뭔가 내가 만들어서 써보고 싶은게 최근에 생기게 됐다. 그게 바로 북마크인데, 크롬에 의존해서 북마크를 하는게 아니라, 내가 직접 만들어서 거기에 글 포스팅을 스크랩하거나, 모르는 영단어나 줄여쓰는 영어등등.. 개발 관련 단어들도 뭔가 한 곳에 두고 싶었다. 그런데 웬걸, 친구가 라즈베리파이가 한 개 남는다고 이거 써보겠냐고 물어왔다. ㅋㅋㅋㅋㅋ 나는 좋지~ 아두이노는 한번 써봤는데 이건 처음이라 그래도 OS설치는 이미 되어있다고 해서 받아서 써보는데 되게 귀엽고 성능은 좋은것 같다? (아직 첫날이라 그런걸까.... 🤔) 아무튼 각설하고 이 서버를 통해서 ssl 적용도 해서 도메인 주소 붙이고 나만의 북마크를 만들어보고 싶어..

Diary 2022.08.31

운영체제 3강

이 포스팅은 반효경 운영체제 강의 를 듣고 정리하는 글이다. fork, exec실습 코드는 깃허브에 있다. 프로세스 생성 부모 프로세스는 1개만 존재하고, 자식 프로세스들을 생성한다. copy on write (cow) 기법 주소 공간 자식은 부모의 공간을 복사한다. 자식은 그 공간에 새로운 프로그램을 올린다. 유닉스에서는 fork 시스템 콜 을 통해 부모 프로세스와 똑같이 복사한다. 수행 부모 자식이 공존하며 수행되는 모델 자식이 종료될 때까지 기다렸다가 수행되는 모델 프로세스 종료 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알린다. (exit) 자식이 부모에게 output data를 보낸다. 프로세스의 각종 자원들이 운영체제에게 반납됨 부모 프로세스가 자식의 수행을 종료시킨다. (abort..

CS/운영체제 2022.08.22

운영체제 2강 - 2

동기식, 비동기식 입출력 프로세스가 입출력이 진행되는 동안에 CPU 점유는 중요하지 않음 입출력 명령을 계속 대기하면 동기, 해놓고서 다른 작업을 수행하면 비동기 구현 1 I/O가 끝날때 까지 계속 대기해 CPU를 낭비시킴 매시점 하나의 입출력만 일어남 구현 2 입출력이 완료될 때까지 해당 프로그램에서 CPU를 빼앗음 다른 프로그램에서 CPU를 가지고 연산 수행 입출력 작업이 완료되면 해당 프로세스에 CPU할당 스레드 프로세스 내부의 CPU 수행단위가 여러개 있는것이 스레드 프로세스마다 code, data, stack 이 주어짐 CPU수행과 관련된정보는 스레드가 별도로 가지고있고, 나머지는 공유한다. 스레드의 구성 program counter register set stack 스레드의 장점 다중스레드 구..

CS/운영체제 2022.08.18

ATDD, 클린 코드 with Spring 5기 수료 회고

이전에 TDD, Clean Code with Java 12기를 이수하면서, 테스트 코드에대한 중요성 그리고 단위 테스트는 어떻게 해야겠다! 라고 깨달음을 얻었었다. 그렇게 하면서 업무에도 테스트코드를 적용하려고 하는데 흔히 Spring framework에서 사용하는 Controller, Service Layer 들의 테스트들을 내가 작성할 때에는 전부 Mock을 이용해서 테스트를 진행을 해주었다. 이렇게 해주는게 맞을까? 🤔 라는 의문을 계속 가지면서 그리고 최근에 뭔가 조금 해이해진 경향을 바로 잡고자 이 강의를 신청하게 되었다. 각 주차마다의 미션들을 좀 가져와봤다. 궁금하면 한번 놀러와주세요! 1주차 - 인수 테스트 https://github.com/lsj8367/atdd-subway-map Git..

Diary 2022.08.14

블로그를 옮기고 최신 근황

블로그를 기존 벨로그에서 티스토리로 옮기게 되었다. 그래서 거기서 포스팅 했던 글들을 전부 지금 이 티스토리로 옮기고 드디어!! 진짜 날짜에 맞는 첫글을 써본다. 이직 우선, 전 직장에서 6개월을 하고 그만 둬버렸다. 뭔가 시도해보고 도입해보려고 했던건 많이 도입을 해보았던 것 같다. 내 입장에서는 그래도 같은 업무를 보는 개발자분들이 좀 더 많았으면 좋겠다고 생각했고, 여러 의견을 들어보고 싶었던게 가장 컸던 것 같다. 그래서 이직을 하게 됐다!! 물론 근속기간이 짧고 그렇게 이르게 이직을 했다는 것 자체가 문제라고 본다면 문제일 수 있다고 생각하지만, 뚜렷한 기준을 가지고 충분히 설명할 수 있을거라고 생각했었다. B2C 서비스를 하던 기존 회사였지만, 그래도 아직 시장이 되게 작았었고, 그것으로 인해..

Diary 2022.08.13
728x90
반응형