일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MYSQL
- 백준알고리즘
- CJ UNIT
- python
- 회고
- 스프링
- java
- 백준 알고리즘
- 알고리즘
- C++
- SW봉사
- 시나공
- 소프티어
- 코딩교육봉사
- 정보처리산업기사
- BFS
- 파이썬
- 코틀린
- SQL
- 공부일지
- 문제풀이
- 코딩봉사
- 백준
- softeer
- 1과목
- 자바
- kotlin
- 데이터베이스
- programmers
- 프로그래머스
- Today
- Total
목록개발 (141)
JIE0025
✅ 개요일반적으로 우리는 서비스단의 단위 테스트를 작성할때, repository를 mock(가짜객체)으로 만들고, DB로의 흐름을 끊어버리는 단위테스트를 작성했었다. 최근에 외부 API를 사용하기위해 webClient를 사용했는데 이때 서비스 단에서 WebClient를 주입 받아, mock객체를 repository가 아닌 다른 대상에 처음 적용해 보게 되어 이 글을 적게 되었다. 데이터베이스에서 어떤 값을 가져와 일반적인 자체만을 검증했었다면 이번 기회로 더 다양한것을 검증해보게 된 계기가 될 것 같다. ✅ WebClient 자체를 mock객체로 만들어서, 모킹해도 된다. 이 방식에는 문제점이 있다. 아래 예제 코드를 보면 webClientMock.get()에 대한 처리부터, requestHeadersU..
✅ 개요 특정 언어의 특징적인 문법이 있다면 lateinit var를 사용하면, 런타임시 변수의 값이 결정된다. 1. application.yml에 지정된 값을 가져와 사용할 때 2. 테스트코드에서, @BeforeAll을 이용한 lateinit var
✅ 개요 스프링 기반의 프로젝트에선, 코틀린을 사용해도 기존의 테스트 프레임워크인 JUnit, Assertion, Mockito를 동일하게 사용할 수 있지만.. 그래도 코틀린에 어울리게 코틀린스럽게(?) 테스트코드를 짤 수 있도록 돕는 도구들이 존재한다. (MockK와 Kotest) 이 중 오늘은 MockK를 알아보고 어떻게 단위테스트를 하는지 간단하게 알아보자. ✍️ 기술 비교 MockK외에도 코틀린을 위한 테스팅 프레임워크에는 Kotest라는 것도 있다. Kotest는 코틀린진영에서 가장 많이 사용되는 테스팅 프레임워크이다. 다양한 테스트 레이아웃을 제공하고 Kotlin DSL 스타일의 Assertion도 제공된다. Junit과 호환성이 있어 기존의 Junit과 마이그레이션 하기 용이함. 예제 코드 ..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 스프링 웹플럭스는 스프링5에 추가된 Reactive 스택이다. Reactor는 두가지 타입을 지원한다. Mono : 0개 또는 1개의 데이터만 emit Flux : n개의 데이터를 emit한다 오늘은 N개의 데이터를 emit하는 FLUX를 이용해 스트리밍으로 데이터를 처리하는 것에 대해 알아보자. ✅ Reacive Streaming 데이터처리 Spring Webflux는 SSE를 이용하여 데이터를 스트리밍 할 수 있다. SSE는 Spring 4.2부터 지원되었으며 Spring 5에서부턴, Reactor의 Publishe..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. 목차 Spring Webflux란? Spring Webflux 탄생 배경 예시를 통해 MVC와 WebFlux를 비교해보자 Spring Webflux Stack 전체 큰 그림 Spring Webflux의 내부 동작 원리 Netty의 역할 ✅ Spring Webflux란? Spring webflux는 리액티브 웹 애플리케이션 구현을 위해 Spring 5.0부터 지원되는 Reactive Web Framework ✅ Spring WebFlux 탄생 배경 ⏺ Spring MVC 서블릿기반의 Blocking I/O방식 요청당 하나의 스레드..
✅ 개요 몽고디비에선, PK의 역할을 하는 _id를 사용한다. 만약 _id를 지정하지 않으면, 자동으로 ObjectId라는 기본 데이터형을 사용해 12bytes로 표현이 되는데 RDBMS에서는 PK의 이름을 지정할 수 있었다. MongoDB에서도 _id가 아닌, 특정 컬럼을 PK처럼 사용할 수 있는지 궁금해졌다. _id를 제거할수는 있는걸까? ✅ _id https://www.mongodb.com/docs/manual/core/document/ Documents — MongoDB Manual Docs Home → MongoDB Manual MongoDB stores data records as BSON documents. BSON is a binary representation of JSON documen..
✅ Apache JMeter Apache JMeter는 Apache Software Foundation에서 개발되었다. 오픈소스 로드 테스팅 툴로 다양한 성능 테스팅이 가능하다. * (웹서버, DB, FileSystem 등 서비스/프로토콜에 대한 테스팅) ✅ 왜 JMeter를 사용하는가? 다양한 Application/Server/Protocol 유형을 로드하고, 성능 테스트가 가능하다. 웹- HTTP/HTTPS (Java, NodeJS, PHP, ASP.NET) SOAP/REST 웹서비스 FTP JDBC를 통한 interface LDAP TCP 자바 객체 메일 - SMTP, POP3, IMAP --- (S) 모든 Java 호환성 Jmeter는 자바 기반의 서비스/ 애플리케이션의 테스팅을 지원한다. CLI..
✅ webClient 스프링 5부터 도입된 웹 클라이언트 라이브러리 (HTTP 요청을 수행) 비동기/논블로킹 방식으로 외부 API를 호출할 수 있다. 😉 장점 비동기/논블로킹 방식을 지원하여, 높은 처리량과 확장성이 장점이다. 리액티브 프로그래밍을 할 수 있다. 데이터 스트림을 효과적으로 처리할 수 있다. 선언적 방식으로 API 호출을 정의하므로, 가독성이 좋다. 😵 단점 웹플럭스 학습곡선이 존재한다. ✅ 공식문서 & 참고 문서 공식문서에 웹클라이언트의 선언부터 사용방법이 자세하게 나와있다. https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-client Redirecting... docs..
✅ 개요 그동안 모듈 한개에서 전체 프로젝트 파일을 관리하는 프로젝트만 봐왔었다. 최근에 멀티모듈을 사용하는 프로젝트들이 존재하는것을 알게되었고, 왜 사용하는지 궁금해서 이 글을 적는다. ✅ 모듈의 정의 먼저 모듈이 무엇인지 정의를 해보자. 모듈은 패키지의 한 단계 위의 집합이다. 나는 처음 모듈과 패키지에 대해 공부했을때, 어차피 둘다 폴더 구조를 나타낸다면 분류를 해야할 이유가 뭘까? 라는 의문이 생겼었다. 모듈과 패키지의 역할 차이를 제대로 이해해야지 이 의문을 해소할 수 있다. ✍️ 패키지 (Package) 클래스들을 모으기 위한 디렉터리 구조 코드를 구조적으로 구성하고 관리하기 위해 사용한다. 🖥 Example 아래는 이전 프로젝트에서 사용한 서버 패키지 구조인데 mybuddy 패키지 내부에 ..
간단하게 MongoDB에서 컬렉션과 문서를 생성하고, 데이터를 관리하는 실습을 해보았다. ✅ Create Database Compass 애플리케이션에서 + 버튼을 눌러 데이터베이스를 생성해보자. 데이터베이스 이름과 컬렉션(유사 RDBMS 테이블) 이름을 만들어준다. 아래와 같은 화면을 볼 수 있다. 🖥 CLI에서 처리하면? # 1) mongodb 접속 mongo # 2) 전체 DB 열람 show dbs # 3) 데이터베이스 선택 (or 생성) use tutorial # 4) 선택한 DB의 콜렉션 열람 show collections tutorial 데이터베이스가 잘 생성된것을 확인할 수 있다. ✅ Create Documents + ADD DATA에서 Insert document 를 클릭하자. 아래와 같은 ..