본문 바로가기

삽질

WebMvcTest Mockito given() Null 아래와 같이 TDD로 회원 가입 단위 테스트를 구현하고 있었습니다. @Entity @Builder @Getter @Setter @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String password; public User copyOf(){ return User.builder() .name(this.name) .password(this.password) .build(); } public String toJson(.. 더보기
방향 이동 이중 반복문 추상화 해보기 현재의 좌표를 (i, j)라고 했을 때 상, 하, 좌, 우로 한 칸 움직이기 위해서는 다음과 같습니다. int[] dx = {-1, 1, 0, 0}; // 순서대로 상, 하, 좌, 우 int[] dy = {0, 0, -1, 1}; for(int d=0; d 0; i--) { for (int j = 0; j 0; j--) { ... } } 일반 반.. 더보기
카프카 토픽 삭제기 카프카 토픽을 삭제하기 위한 삽질 내용을 공유하는 글입니다. 우선, 현재 제가 사용하는 confluentinc/cp-kafka:7.3.0의 기준으로 가장 간단한 방법을 알려드리겠습니다. https://ksb-dev.tistory.com/261에 제가 사용하는 카프카 클러스터가 있으니 참고해주시면 감사하겠습니다. 1. 카프카 쉘에 접근한다. docker exec -it '컨테이너ID' sh 2. 토픽을 삭제한다. kafka-topics --delete --topic '토픽 이름' --bootstrap-server localhost:29092 끝.... 저는 위 방법을 모르고 삽질했습니다... 이 밑의 글은 제가 삽질한 내용을 기록했으니, 가볍게 읽어주시면 감사하겠습니다. 처음에 제가 구글링 해서 얻은 방법.. 더보기
[Spring Boot] nested exception is ElasticsearchException[Elasticsearch exception [type=no_such_file_exception, reason=/usr/share/elasticsearch/config/settings/stop/english.txt]] 이 글은 이전 글과 연관되어 있습니다. 저는 불용어(stopword)와 동의어(synonym)를 별도의 파일로 관리하고 있습니다. 아래의 코드로 nori 분석기를 설치할 수 있었으나, 불용어와 동의어 파일을 불러오는 부분이 없다는 것을 알 수 있습니다. @TestConfiguration @EnableElasticsearchRepositories(basePackageClasses = UserSearchRepository.class) public class ElasticTest extends AbstractElasticsearchConfiguration { private static final GenericContainer container; static{ container = new GenericConta.. 더보기
[Spring Boot] Caused by: RestStatusException{status=400} org.springframework.data.elasticsearch.RestStatusException: Elasticsearch exception [type=illegal_argument_exception, reason=Unknown tokenizer type [nori_tokenizer] for [ksb_custom_korean_tokenize.. Spring Boot에서 Elasticsearch 테스트 컨테이너를 띄우는 도중 위와 같은 문제를 만났습니다. 코드는 아래와 같습니다. @TestConfiguration @EnableElasticsearchRepositories(basePackageClasses = {UserSearchRepository.class,UserSearchQueryRepository.class}) public class ElasticTestContainer extends AbstractElasticsearchConfiguration{ private static final String ELASTICSEARCH_VERSION = "7.10.2"; private static final DockerImageName ELASTICSEA.. 더보기
[Spring Boot] A bean with that name has already been defined ~ in defined in @EnableElasticsearchRepositories declared on ElasticsearchRepositoriesRegistrar.EnableElasticsearchRepositoriesConfiguration and overriding is disabled. 이 글을 읽기 전에 https://ksb-dev.tistory.com/313를 읽고 오시는 것을 추천드립니다. 💡 해당 글과 이 글의 내용은 매우 밀접하게 연관되어 있습니다. 1. 문제 Spring Boot와 Elasticsearch 연동을 테스트 하던 중 제목과 같은 에러를 만날 수 있었습니다. 패키지 구조는 아래와 같습니다. es_springboot -config -AbstractElasticsearchConfiguration.java -ElasticSearchConfig.java -domain -UserDocument.java -repository -UserSearchRepository.java 위 오류와 직접적으로 연관이 있는 클래스는 세 개 입니다. @Configuration @EnableEla.. 더보기
[Spring Boot] JPA 빈 등록 1. @Repository를 사용하지 않아도 된다. 흔히 JPA를 사용하면 아래와 같이 사용합니다. public interface User extends JpaRepository { } 위 그림과 같이 @Reposotory를 사용하지 않아도 됩니다. 왜 일까요? 상속받은 JpaReposotory에 @Component가 있는 것일까요? 확인해 보면 @NoRepositoryBean이 설정되어 있어 빈으로 등록하지 않는다는 것을 알 수 있습니다. 💡 https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/NoRepositoryBean.html 2. @EnableJpaRepositories JPA.. 더보기
docker container shell 관리자 접근 지금까지 docker contaienr shell에 접근할 때, 아래와 같은 방법을 사용했습니다. docker exec -it '컨테이너ID' sh vim을 다운받기 위해서 우선 apt update를 입력하니 아래와 같이 권한 거부가 발생했습니다. sudo를 사용해도 해당 명령어를 차증ㄹ 수 없다는 말만 나왔습니다. su 명령어를 치니 Password를 입력하라는데, 제가 아는 모든 비빌번호를 입력해도 인증 실패가 뜹니다. 구글링 결과 쉘 접근에서 관리자로 접근하는 방법을 찾았습니다. 명령어는 아래와 같습니다. docker exec -itu0 '컨테이너ID' sh 이후에 apt update를 하니 잘 되었습니다. 더보기