목록전체 (129)
지나공 : 지식을 나누는 공간
요즘 신입사원 과제 프로젝트 덕분에 안 써본 다양한 기술을 접하고 있다. 지난 번엔 Reactive Streams에 대해 간단히 적었는데, 지금은 GraphQL을 다룬다.ㅋㅋㅋ 아직 reactive 에서 쓰다 만 임시저장 글이 많은데 graphQL 한번 올리고 그 담에 이어서 또 reactive 정리를 이어서 할 것 같다. 이번 포스팅은 Apollo 블로그에서 REST와 GraphQL을 비교한 내용을 번역하면서 설명을 추가했다. https://www.apollographql.com/blog/graphql/basics/graphql-vs-rest/ 로드맵 펼치기 더보기 야생형 개발자로서... 일단 더 많이 접한 REST랑 어떻게 다른지를 보는 게 더 이해가 빠를 것 같다. REST와의 비교 : https:..
전에 RxJava 첫 포스팅에서 Reactive Stream에 대해 적었는데 여기서 한번 더 정리하고, 그것들과 관련된 Reator와 RxJava, WebFlux 등이 어떤 건지 알아본다. Reactive Streams Reactive Streams is a standard for asynchronous data processing in a streaming fashion with non-blocking back pressure. 논블로킹 백프레셔를 이용한 비동기 데이터 처리의 표준이라고 말하고 있다. 그렇다면 아래 세 가지를 더 알아봐야 한다. 스트리밍 처리 비동기 방식 백 프레셔 표준. 뭐가 표준이란거?? 스트리밍 처리 전통적인 데이터 처리 방식 요청이 오면 저장소에 쿼리해서 모든 데이터를 메모리로 ..
둘 다 데이터를 통지하는 생산자인 Flowable 과 Observable을 비교해보자. Flowable Observable Reactive Streams 인터페이스를 구현했음. Reactive Streams 인터페이스를 구현한 게 아니라 RxJava 1.x에서 독자적으로 제공하는 클래스임. Subscriber에서 데이터를 처리한다. Subscriber는 reactive streams의 기본 스펙임. Observer에서 데이터를 처리한다. Observer도 RxJava1.x에서 독자적으로 제공하는 클래스임. 데이터 개수를 제어하는 배압 기능이 있음. 배압 기능이 없음. 배압 기능이 있기 때문에 subscription으로 전달 받는 데이터 개수를 제어할 수 있다. 배압 기능이 없기 대문에 데이터 개수를 제어..
들어가기 전에 이제부터 데이터를 생성해서 내보내는 쪽은 생산자라고 부르고, 생산자가 데이터를 내보내는 행위를 데이터를 통제한다고 하며, 생산자가 보낸 데이터를 받아 처리하는 쪽은 소비자라 부르기로 하자. 그리고 소비자가 데이터를 처리하는 것을 데이터를 소비한다고 하자. Reactive Streams 란? 리액티브 프로그래밍에 대한 인터페이스만 제공한다. RxJava는 Reactive Streams의 인터페이스들을 구현한 구현체다. Reactive Streams는 Publisher, Subscriber, Subscription, Processor라는 4개 인터페이스를 제공한다. Publisher : 데이터를 생성하고 통지한다. Subscriber : 통지된 데이터를 전달받아서 처리한다. Subscripti..
용도 코드 뜯어볼 때 필요한 원하는 breakpoint 한번에 해제 cmd + shift + f8 break point들 한번에 조회 cmd + shift + f8 find usage option + f7 코드에 대한 설명 보기. docs cmd + Q 코드 작성할 때 필요한 class 만든 뒤 depth 하나 들어가기 (바로 코드 쓰게) cmd + shift + Enter 필요없는 import 없애줌 Ctrl + Option + O 방금쓴 윗줄코드를 아랫줄에 그대로 복사 윗줄에서 Cmd + D 코드 수정 단어 찾아서 일괄 수정 cmd + r / cmd + shift + r (전체) 변수 추출하기 : cmd+opt+v 함수 위에서 쓰면 리턴 타입 변수 자동 생성 해줌 함수 추출하기 : cmd+opt+m ..
리액티브 프로그래밍(Reactive Programming)이란? In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. 변화의 전파와 데이터 흐름에 관련된 선언형 프로그래밍 패러다임이다. 변화의 전파와 데이터 흐름 : 데이터가 변경될 때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달한다. 선언형 프로그래밍 : 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 목표만 선언한다. 명령형 프로그래밍 vs 선언형 프로그래밍 1. 명령형 프로그래밍 프로그래밍의 상태와 상태를 변경시키는 구문의 관점으로 접근하는 프로그래밍 방식..
설정 사항들 @EnableBatchProcessing 스프링배치가 작동하려면 이 어노테이션을 선언해야 한다. - 총 4개의 설정 클래스를 실행시키고 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다. - 스프링 부트 배치의 자동 설정 클래스가 실행되면서 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행할 수 있도록 구성된다. 설정 클래스 4가지는 아래와 같다. 1. BatchAutoConfiguration 스프링 배치가 초기화될 때 자동으로 실행되는 설정클래스 Job을 수행하는 JobLauncherApplicationRunner 빈을 생성한다. JobLauncerApplicationRunner는 자동으로 배치 Job들을 실행시키는 클래스다. 2. SimpleBatchConfigura..
개요 1. Spring Batch 탄생 배경 간략히 자바에는 I/O 기술, 네트워크(tcp, udp 등) 기술, 스레드(병렬처리 가능) 기술, jdbc 기술 등이 표준으로 정의되어 있다. 하지만 배치 처리에서 요구하는 재사용 가능한 자바 기반의 배치 아키텍처는 없었어서 이에 대한 필요성으로 탄생했다. 2. 배치 핵심 패턴 Read : 데이터베이스나 파일이나 큐에서 다량의 데이터를 조회 Process : 특정한 방법으로 데이터를 가공 Write : 데이터를 수정된 양식으로 다시 저장 데이터베이스의 ETL ( Extract 추출하다 - Read, Transform 변형하다 - Process, Load 적재하다 - Write)와 매칭되는 개념인데 배치에서 쓰이는 용어는 Read, Process, Write이다..
신입 과제에서 Scheduler를 사용할 것 같다. 주된 과제가 이건 아니고 Open API 데이터 매핑이 중요한거라 이걸 고민하는게 우선이긴 한데, 그래도 Scheduler를 조금이라도 다루고 있어서 배치 카테고리를 열었다. 게다가 해당 프로젝트를 나중에 Spring Boot Batch로 옮길 예정이라 하셨다. (이 업무가 나중에 내 업무가 될지는 모르겠지만) 암튼 내가 해당 업무를 맡지 않더라도 예전에 Spring Batch 공부를 아주 잠깐 했었으니 Scheduler 보는 김에 같이 보려 한다. 전에 급해서 아무 레포에나 Spring Batch를 정리해둔 적이 있는데 다시 볼 겸 첨부...! 관련 업무도 적혀있는 추억의 이슈ㅋㅋㅋ https://github.com/Hae-Riri/today-alco..
이번 포스팅은 올해 5월에 올렸던 포스팅에 대한 후속 포스팅이다. https://eocoding.tistory.com/74 @Transactional에서 JPA로 delete한 뒤 insert가 안될 때, duplicate entry 에러가 날 때 해결하기 일단 원인과 해결 방법부터 적고 내 사례와 해봤던 시도들을 구체적으로 적는 건 다음 포스팅으로 넘기려고 한다. Spring Data JPA 사용 중에 데이터를 삭제한 뒤 추가하려고 했더니 duplicate entry 에 eocoding.tistory.com 댓글로도 후속 포스팅을 궁금해하신 분이 계셨는데 그동안 인턴도 하고 취업 준비도 하느라 블로그 포스팅을 못 쓰고 있었다. 대체 얼마만의 포스팅이지 ㅎㅎ 그럼 이제 본론을! 목차는 아래와 같다. 1...