목록개발 공부 (109)
Just Do IT!

문제집 댓글 조회 기능을 구현하던 중 이렇게 긴 오류가 나왔다.잘려서 잘 안보이지만 메모장으로 옮겨두고 분석해보니 엄청나게 길었다. 그 중 오류를 구글에 검색해봤는데 Unsatisfied dependency expressed through constructor parameter 0 이런 오류가 발생했던 것이었다.빈 생성시 필요한 것이 빠졌거니 잘못 생성했으니 고치라는 의미였다. 나는 controller, service, repository 다 들어가봤는데 도무지 나오지 않았는데 시간이 좀 지난 다음에야 찾을 수 있었다.BookCommentLikeRepository에서 countByBookCommentId 메서드를 정의할 때, BookCommentLike 엔티티에 bookCommentId라는 속성이 없어서..

프로젝트에 북마크 기능이 있는데, boolean을 이용해서 삭제 여부를 update하는 soft delete를 구현하기로 했다.북마크 db가 따로 있고 로그인한 사용자가 특정 문제집을 북마크하는 것이다. 처음 북마크를 한다면 db에 새로운 북마크가 생성되고,북마크를 취소하는 경우 is_deleted가 true로 업데이트 되는 형식이다. 기능 구현 전에 api 명세서를 작성할 때는POST /api/books/{id}/bookmarkUPDATE /api/books/{id}/bookmark이렇게 두 가지를 따로 작성했었는데 토글 방식으로 구현할 수 있지 않을까 하다가 참고할만한 글을 발견해서적용해보았고 포스트맨으로 테스트까지 마쳤다. BookmarkResponse 생성@Getter@Builder@..

문제집 삭제 기능을 포스트맨으로 테스트 해보려고 하는데 2024-10-22T10:38:04.046+09:00 ERROR 9084 --- [test-dodream-backend] [nio-8080-exec-5] c.d.t.common.exception.ErrorController : Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 2024-10-22T10:38:04.086+09:00 WARN 9084 --- [test-dodream-backend] ..

ControllerAdvice전역적으로 ExceptionHandler를 적용할 수 있는 @ControllerAdvice와 @RestControllerAdvice 어노테이션을 제공하고 있다.@ControllerAdvice는 여러 컨트롤러에 전역적으로 ExceptionHandler를 적용해준다만약 특정 클래스에만 제한적으로 적용하고 싶다면 @RestControllerAdvice의 basePackages 등을 설정함으로 제한할 수 있다.@RestControllerAdvice는 @ControllerAdvice와 다리 @ResponseBody가 붙어 있어 응답을 JSON으로 내려준다 @RestControllerAdvice 와 @ControllerAdvice 의 특징과 차이@RestControllerAdvice 는..

이번에 dodream 프로젝트를 하면서, 검색창이 여러 페이지에 쓰인다는 걸 깨달았다.그래서 이번에는 나름대로 중복되는 코드를 줄이고 조금 더 효율적으로 프로젝트를 하고자component 폴더 안에 UI 폴더를 만들었고, 그 안에 여러 페이지에서 쓰이는 UI component들을 생성했다. 그 중 하나가 검색창 컴포넌트이다. import React from "react";import { FaSearch } from "react-icons/fa";const SearchInput = ({ value, onChange, placeholder, onSearch }) => { const handleKeyDown = (e) => { if (e.key === "Enter") { onSearch(); ..

H2 Database를 사용하는 이유?H2 DB는 In-Memory DB로 스프링 애플리케이션과 함께 실행되며, 매우 가벼운 용량을 가지고 있다.복잡한 mocking 없이도 서비스 및 레포지토리 레이어를 테스트할 수 있기 때문에 mocking으로 인한 부분적인 오류나 가짜 성공(실 서비스에서는 오류가 발생하지만 mocking으로는 성공으로 표기되는 상황)을 방지할 수 있다.테스트 과정에서 데이터가 영향을 받지 않도록 한다.만약 다른 Database를 사용하는 경우, 테스트 데이터가 롤백되어 DB에 남아있지 않아도 auto increment로 지정한 id가 계속 증가되는 등의 문제가 발생할 수 있다.=> 테스트용 DB가 따로 필요하다.기존 Database 대신에 H2 Database를 이용하여 테스트를 하..
Vite란?빠르고 간결한 모던 웹 프로젝트 개발 경험에 초점을 맞춰 탄생한 빌드 도구개발 시 네이티브 ES Module을 넘어 더욱 다양한 기능을 제공번들링 시 Rollup 기반의 다양한 빌드 커맨드 사용 가능높은 수준으로 최적화된 정적 리소스들을 배포할 수 있게 미리 정의된 설정을 제공미리 bundle을 만든다필요한 소스코드만 건드린다. 공식 문서https://ko.vitejs.dev/ ViteVite, 프런트엔드 개발의 새로운 기준ko.vite.dev Create-React-App의 단점node_modules 용량이 크다빌드 속도가 느리다.UX나 SEO 측면에서도 좋지 않다.bundling이 느리다Webpack을 사용하는데 이는 라이브러리가 많은 경우 번들링이 오래 걸린다. CRA는 더이상 ..

Docker소프트웨어 컨테이너 기술을 제공하는 플랫폼으로, 애플리케이션과 그 의존성들을 격리된 환경에서 실행할 수 있게 해준다.애플리케이션을 효율적으로 개발, 배포, 실행할 수 있다.다양한 운영 체제 및 클라우드 환경에서 동일한 방식으로 동작하므로 개발 환경과 프로덕션 환경 간의 일관성을 제공한다 Docker의 주요 개념, 구성 요소이미지 (Image)애플리케이션과 그 실행에 필요한 모든 것을 포함하는 가볍고 독립적인 패키지파일 시스템, 라이브러리, 실행 환경 및 애플리케이션 코드 등을 포함하고 있다.컨테이너 (Container)이미지의 실행 가능한 인스턴스격리된 환경에서 동작하며, 호스트 시스템과는 독립적으로 실행된다.각 컨테이너는 자체 파일 시스템, 프로세스, 네트워크를 가지며, 호스트 및 다른 컨테..

요즘 docker 실습을 가상머신에서 하고 있다.가상머신 설치 관련은 TIL 레파지토리에 이미 정리해서 블로그에도 정리해야 하나 고민 중이라,우선은 내가 진행했던 프로젝트를 빌드해보는 걸 정리하려고 한다.가상머신 설치 관련 정리:https://github.com/seoyeon-jung/kosta-study-log/blob/master/16%EC%A3%BC%EC%B0%A8/240924/README.md kosta-study-log/16주차/240924/README.md at master · seoyeon-jung/kosta-study-logKOSTA TIL. Contribute to seoyeon-jung/kosta-study-log development by creating an account on Gi..

트래픽이 많은 웹사이트의 서버(AWS)를 도와주는 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램클라이언트로부터 요청을 받았을 때, 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용된다Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할을 수행할 수 있다 이러한 특징을 이해하기 위해서는 아래의 흐름을 먼저 이해해야 한다. 클라이언트서비스를 이용하기 위해 네트워크를 통해 요청을 보내는 주체웹 개발 영역에서는 보통 크롬, 사파리, 익스플로러 등 웹 브라우저를 의미한다. 웹 서버클라이언트와 서버 간의 통신을 처리하며 웹 애플리케이션을 호스팅할 수 있게 해주는 소프트웨어클라이언트의 HTTP 요청을 받아 정적 or 동적으로 웹 페이지를 제공해주는 ..