본문 바로가기

전체 글

(24)
스프링 웹플럭스 인증 with JWT + RBAC 스프링 웹플럭스와 JWT를 이용하여 무상태(stateless) 인증과 RBAC 개념을 적용한 예제를 만들어 보았다. 소스 대부분의 인터넷의 예제를 참고 하였으며 동작에 대한 기술은 웹사이트나 소스를 직접 보고 확인해 보았다. DB나 JPA 설정등은 생략한다. 스프링 부트 자체가 워낙 자동설정으로 되어 있다보니 내부적으로 어떻게 동작하는지 파악하기가 쉽지 않았다는... 핑계고, 스프링의 애노테이션이 어떻게 동작하는지에 대한 기본 지식들이 아직도 부족해서다. 기본사용은 쉬우나 목적에 맞게 설정하기 위해서는 프레임워크의 동작을 어느정도 잘 이해해야 한다. 돌아서면 잊어먹는 나이가 되었기에 나중에라도 잘 활용하기 위핸 파악한 내용들을 최대한 정리해 본다. 내용정리를 잘해보려고 하였으나 시간이 너무 걸려 의식에 ..
스프링 WebClient 동시에 호출하기 참고자료: https://www.baeldung.com/spring-webclient-simultaneous-calls 1. 개요 우리는 보통 애플리케이션에서 HTTP 요청을 할 때 순차적으로 한다. 하지만 이 요청들을 동시에 호출하고 싶은 경우도 많을 것이다. 예를들어 여러 데이터 공급자들로부터 데이터를 가져오거나 애플리케이션의 성능을 올리고 싶을 때 동시에 호출하고 싶을 것이다. 여기서는 spring reactive WebClient 를 사용해서 서비스를 병렬로 호출하는 방법들에 대해 다룬다. 2. 리액티브 프로그래밍에 대하여 간단히 알아보기 WebClient 는 Spring 5 에서 도입되었으며 Spring Web Reactive 모듈에 포함되어 있다. WebClient 는 HTTP 요청을 리액티브..
Java 제네릭 기본 출처: https://www.baeldung.com/java-generics The Basics of Java Generics | Baeldung A quick intro tot he basics of Java Generics. www.baeldung.com 리액티브 프로그래밍을 스터디 중인데.. 함수형 프로그래밍, 제네릭 개념에 대한 이해가 부족하다는 것을 알게 되었다. 기본부터 다시 공부하고자 위 사이트를 방문하게 되었다. ​ 1. 소개 Java Generic (자바 제네릭)은 JDK5.0 에서 추가되었는데 버그를 줄이고 타입들 위에 추상레이어를 추가하는 것이 목적이었다. 이 기사는 제네릭에 대한 간단히 소개하고. 제네릭의 목적과 코드의 질을 향상시키기 위해 어떻게 사용해야 하는지에 대해 다룬다. 2..
자바 함수형 프로그래밍 기술 7가지 출처: https://deepu.tech/functional-programming-in-java-for-beginners/ 7 Functional programming techniques in Java - A primer Functional programming concepts in Java for beginners. deepu.tech 일단 제네릭의 기본은 알게 되었고, 그 다음은 함수형 프로그래밍이다. 함수형 방식은 자바스크립트에서나 단순하게 사용해본 상황에서 여러 함수들이 난무하는 리액티브 프로그래밍에서는 작성된 코드 자체를 이해하기 쉽지 않았다. 급할 수 록 돌아가라는 말이 있듯이 일단 함수형 프로그래밍에 대한 기본부터 공부해 보고자 위의 사이트를 방문하였다. 추가: 재귀가 나오는 부분 부터는 개..
앵귤러 브라우저 체크 라이브러리 https://koderlabs.github.io/ngx-device-detector/
Angular - template reference variable (#) 참고문서: https://itnext.io/working-with-angular-5-template-reference-variable-e5aa59fb9af 아래 그림과 같이 앵귤러 html 템플릿에서 html 요소에 #을 이용해서 레퍼런스를 지정해 줄 수 있다. 레퍼런스를 지정해 주면 템플릿이나 컴포넌트 내에서 자유롭게 참조하여 사용할 수 있다. 아래 그림과 같이 click 이벤트 발생시 함수에 레퍼런스를 전달할 수 있다. Show 함수내에서 인자로 전달 받을 시 다음과 같이 받을 수 있다. show(lastName: HTMLInputElement){ console.log(lastName.value); } 전달 받는 인자는 HTMLInputElement 타입이 된다. 컴포넌트 내에 다음과 같이 선언하여 ..
gyp: No Xcode or CLT version detected! vs code에서 npm install 명령어 실행시 "gyp: No Xcode or CLT version detected!" 오류가 발생할 경우, 나의 경우 xcode가 설치되어 있지 않아서 발생한 것으로 보인다. xcode 설치 후, 최신버전으로 업데이트 된 후 아래 오류 메시지가 보이지 않았다. gyp: No Xcode or CLT version detected! gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:..
Apache Pulsar 정리 (kafka와 비교) Apache Pulsar가 kafka 보다 나은 이유를 아래의 참고자료에서 간단히 요약했다. Latency and Throughput kafka 대비 약 2.5배 빨라 졌으며, 카프카보다 레이턴시(딜레이)가 40% 가 낮다. Scalability Issues kafka는 토픽을 전용 파일과 디렉토리에 저장하면서 확장에 문제를 겪는다. 이유는 이 파일들이 주기적으로 페이지 캐시에서 디스크로 플러시 되는데 이렇게 되면 I/O가 여러 디스크에 걸쳐 발생될 것이기 때문이다. 반면에 Pulsar는 bookies (BookKeeper 서버들을 말함)에 저장한다. 여기에는 서로 다른 토픽들로 부터 받은 메시지들을 대용량 파일들에 모이고, 정렬되고 저장되고 나서 인덱싱 된다. Pulsar는 수백만개의 토픽들로 확장할 ..