분류 전체보기 (87) 썸네일형 리스트형 Spring Data Mongo save 시 DuplicateKeyException 나는 이유 및 해결 Spring Boot 에서 MongoDB 에 접근하기 위해 ORM을 지원하는 Spring Data MongoDB 라이브러리를 사용하였다. implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' 에러내용 MongoDB 도큐먼트와 중복된 _id 를 가진 DTO 를 넣기 위해 repository의 save 메소드를 실행했다. public interface CollectionRepository extends MongoRepository { } CollectionDto collectionDto = new CollectionDto(); // fill in dto collectionRepository.save(collectionDto); .. TestContainers 설명 이 글은 온라인 강의를 듣고 해당 내용을 직접 실습해보며 정리한 글입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있습니다. 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의(백기선) 테스트에서 도커 컨테이너를 실행할 수 있는 라이브러리 테스트 실행시 DB를 설정하거나 별도의 프로그램 또는 스크립트를 실행할 필요 없다. 보다 Production에 가까운 테스트를 만들 수 있다. 테스트가 느려진다. https://www.testcontainers.org/ → 테스트컨테이너를 쓰면 테스트용 도커를 만들 필요도, 손수 띄우고 내릴 필요도 없다. 설치하기 디펜던시 org.testcontainers junit-jupiter 1.15.1 test junit-jupiter를 지원하는 test.. ElasticSearch refresh, flush API 동작 원리 (2): ElasticSearch 관점 + translog https://elsboo.tistory.com/19 ElasticSearch refresh, flush API 동작 원리 (1): Lucene 관점 https://elsboo.tistory.com/18 ElasticSearch Lucene 인덱스 구조 엘라스틱 서치는 현업에서 많이 쓰이고 있는 오픈소스 검색엔진이다. 역색인 구조로 문서를 색인하며, 근실시간으로 문서를 검색할 수 있다. elsboo.tistory.com 이전 글에서는 엘라스틱서치의 refresh, flush 동작 방식을 루씬 관점에서 살펴보았다. 이번 글에서는 동작 방식을 육안으로 확인해보고 엘라스틱서치가 제공하는 기능인 trasnslog 에 대해서도 알아볼 것이다. 루씬에서 세그먼트를 생성하는 2가지 작업을 엘라스틱서치에서는 다른 용어.. [Postman] Runner 와 newman 으로 response 파일에 쓰기 API 테스트 툴인 Postman에서도 Jmeter 처럼 API 반복 호출 기능을 제공하여 퍼포먼스 및 부하 테스트에 활용할 수 있다. UI 로 하거나 커맨드라인으로 하는 2가지 방법이 있는데, UI는 Runner 라는 기능으로, 커맨드라인은 newman 이라는 프로그램으로 실행한다. 이제 보자! 1️⃣ 첫 번째 방법: Runner Runner는 Postman 상단에 위치해있다. (2023.07.16) 버전 10에서는 runner 가 우측 하단에 있다. 왼쪽 상단 창: Collection 목록 Environment: 포스트맨 환경 변수 Iterations: URL 호출 횟수 Delay: 한 번 호출 완료 후 기다리는 시간 (ms) Data: 호출하면서 변경될 데이터 오른쪽 창: 호출할 URL 선택 Dat.. Junit5 애노테이션 설명 이 글은 온라인 강의를 듣고 해당 내용을 직접 실습해보며 정리한 글입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있습니다. 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의(백기선) @DisplayNameGeneration : 클래스 안의 모든 테스트명 변경 @DisplayNameGeneration([테스트명 변경 규칙 클래스]) @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) @SpringBootTest class StudyTest { @Test void create_new_test() { System.out.println("it is test"); } } 기본적으로 테스트명은 메소드명을 따릅니다. 클래.. Junit5 Assertions / Assumptions 설명 이 글은 온라인 강의를 듣고 직접 실습해보며 정리한 글입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있습니다. 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의 (백기선) assertEquals : 값 비교 테스트 assertEquals([나와야 하는 값], [테스트 결과 값], [실패 시 메시지]); assertEquals(StudyStatus.DRAFT, study.getStatus(), "스터디를 처음 만들면 상태값이 " + StudyStatus.DRAFT + " 여야 한다."); 실패 시 메시지 인자를 람다로도 구현할 수 있습니다. assertEquals(StudyStatus.DRAFT, study.getStatus(), () -> "스터디를 처음 만들면 상태값이 " + S.. Mockito 설명 이 글은 온라인 강의를 듣고 해당 내용을 직접 실습해보며 정리한 글입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있습니다. 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의 ✔Mockito: Mock 을 지원하는 프레임워크 ✔Mock: 진짜 객체와 비슷하게 동작하지만 우리가 컨트롤할 수 있는 객체 어떻게 활용: 외부 API, DB를 사용하는 경우 DAO, repository 객체를 mock 으로 만들고 mockito 를 사용해 동작 방식을 코딩 하고 테스트를 한다. 장점: 외부 환경으로부터 독립적으로 테스트 가능 테스트에 대한 의견: 내가 이미 구현한 클래스는 mocking 할 필요는 없다. 하지만 외부 서비스는 mocking 을 하는 게 좋겠다. Mocking 하기 좋은 경우: .. ElasticSearch refresh, flush API 동작 원리 (1): Lucene 관점 https://elsboo.tistory.com/18 ElasticSearch Lucene 인덱스 구조 엘라스틱 서치는 현업에서 많이 쓰이고 있는 오픈소스 검색엔진이다. 역색인 구조로 문서를 색인하며, 근실시간으로 문서를 검색할 수 있다. 하지만 색인, 검색 기능을 엘라스틱 서치에서 직접 elsboo.tistory.com 이전 글에서는 엘라스틱서치 인덱스의 전체적인 구조에 대해 알아보았다. 이번에는 두 편에 걸쳐 /refresh, /flush API 의 동작 원리에 대해 알아보겠다. 엘라스틱서치에서 문서 색인 작업은 루씬이 담당하기 때문에 루씬과 엘라스틱서치 모두 어떻게 일하는지 살펴보고 동작 방법을 육안으로도 확인해볼 것이다. 문서 색인 요청을 하면, 루씬은 곧바로 세그먼트를 생성하지 않는다. 왜냐면 .. ElasticSearch Lucene 인덱스 구조 엘라스틱 서치는 현업에서 많이 쓰이고 있는 오픈소스 검색엔진이다. 역색인 구조로 문서를 색인하며, 근실시간으로 문서를 검색할 수 있다. 하지만 색인, 검색 기능을 엘라스틱 서치에서 직접 구현하지는 않는다. 해당 기능은 루씬이라는 오픈소스 자바 라이브러리를 임포트하여 사용한다. 즉, 엘라스틱 서치는 루씬이라는 검색 라이브러리를 코어로 하여 이것에 REST API, 관리 기능 등 여러가지 편의 기능을 붙인 검색엔진이다. 그래서 엘라스틱 서치의 인덱스 구조를 내핵까지 파헤친다면 그 끝은 결국 루씬이 만들어주는 역색인 구조의 파일이다. 그럼 엘라스틱 인덱스를 양파 까듯 까보자! 엘라스틱 서치 인덱스 ⊃ 샤드 ⊃ 루씬 인덱스 ⊃ 세그먼트 ⊃ 도큐먼트 먼저 인덱스를 하나 생성한다. PUT elsboo_index {.. 티스토리로 쓴 글, 구글과 네이버에 노출시키기 우리가 티스토리에 글을 썼다고 바로 구글과 네이버의 검색 결과로 나타나지 않아요. 검색엔진은 먼저 데이터를 수집한 다음에 검색어와 맞는 데이터를 반환하는데, 우리가 쓴 글을 자동으로 수집하지 않기 때문이에요. 그래서 구글과 네이버의 검색 결과에 노출시키기 위해서는 "나의 블로그를 수집해줘"라고 직접 알려줘야 해요. 먼저, 네이버부터 해볼게요 1. 네이버 서치 어드바이저 https://searchadvisor.naver.com/ 네이버 서치어드바이저 네이버 서치어드바이저와 함께 당신의 웹사이트를 성장시켜보세요 searchadvisor.naver.com 위 URL로 접속하여 로그인한 후, 우측 상단의 웹마스터 도구 버튼을 클릭해요 우리의 티스토리 블로그 주소를 입력한 다음에 우측 버튼을 클릭해요. 우리가 입.. 이전 1 ··· 5 6 7 8 9 다음