- [로드맵] Repo Hosting Services2024-11-16 15:27:53Repo 호스팅 서비스는 버전 제어 코드 저장소에 대한 저장, 관리 및 협업 도구를 제공하는 플랫폼이다. 이러한 서비스는 Git, Mercurial 또는 Subversion 과 같은 버전 제어 시스템을 지원하여 개발자가 코드베이스의 변경 사항을 관리하고 추적하며, 다른 사람과 협업, 워크플로를 자동화할 수 있도록 한다. 주요 기능에는 조종 분기 및 병합, 풀 요청, 문제 추적, 코드 검토 및 CI/CD(Dontinuous Integration / Continuous Deployment) 파이프 라인 과의 통합이 포함된다. 인기 있는 repo 호스팅 서비스에는 GitHub, GitLab 및 Bitbucket이 있으며, 각각 다양한 팀 규모와 프로젝트 요구 사항에 맞게 조정된 다양한 수준의 무료 및 유료 기..
- @AllArgsConstructor 과 record 클래스의 차이2024-11-15 15:19:19아마 이 글을 읽는 사람들은 @AllArgsConstructor와 record를 왜 비교하는지 의문일 것이다.이 의문을 가지게 된 이유는 트러블 슈팅으로부터 시작된다. 트러블 슈팅 글을 보고 난 뒤, RequireArgsConstructor 가 final로 선언된 멤버 필드만을 포함한 생성자를 만들어주기 때문에 문제라면 모든 멤버 필드를 만들어 주는 @AllArgsConstructor는 돼야 하지 않을까?라는 의문으로 테스트를 해보았다 결론은 역시 실패하고 말았다.record 클래스도 기본 생성자를 생성하지 않는 것으로 알고 있는데 @AllArgsConstructor와 차이가 뭐지?? 라는 의문이 들어이유를 찾아보니 record 클래스는 애초에 컴파일러에서 기본 생성자가 없으면 자동으로 생성해준다고 한다..
- [트러블 슈팅] 요청 값 Dto에 어떻게 매핑되는가2024-11-15 14:39:43문제 상황Controller@PostMapping("/save")public ApiResponse save(@RequestBody FcmTokenSaveRequestDto requestDto, @AuthenticationPrincipal UserDetails userDetails) { return ApiResponse.success(HttpStatus.OK, fcmTokenMemberService.save(requestDto, userDetails.getUsername()));} 문제 발생 DTO@Getter@RequiredArgsConstructorpublic class FcmTokenSaveRequestDto { private final ..
- @ExceptionHandler 어노테이션은 무엇인가요?2024-11-15 09:34:04@ExceptionHandler란?@ExceptionHandler 어너테이션은 Spring MVC에서 컨트롤러(@Controller)나 전역 예외 처리를 위한 @ControllerAdvice 클래스의 메서드에서 발생하는 예외를 처리하는 데 사용되는데요. 이 애너테이션은 특정 예외를 처리하는 메서드를 지정하거나 메서드의 파라미터로 처리할 예외를 설정할 수 있습니다.어떤 방식으로 동작하나요? 🤔Spring MVC 애플리케이션에서 예외가 발생하면, DispatcherServlet이 적절한 HandlerExceptionResolver를 찾아 예외를 처리합니다. Spring에 기본적으로 등록된 HandlerExceptionResolver는 세 가지가 있으며, 각 리졸버는 우선순위에 따라 예외를 처리합니다. 그 ..
- [로드맵] Version Controller System2024-11-15 09:32:03버전 제어 시스템(VCS)은 시간 경과에 따른 코드나 문서의 변경 사항을 관리하고 추적하여 여러 사용자가 프로젝트에서 효율적으로 협업할 수 있도록 하는 도구이다. 파일에 대한 모든 변경 사항을 기록하여 개발자가 이전 버전으로 되돌리고, 변경 사항을 비교하고, 수정 내역을 유지할 수 있다. VCS는 저장소가 중앙 서버에 호스팅되는 중앙 집중형(예: Subversion)이거나 각 사용자가 저장소의 전체 사본을 갖는 분산형(예: Git, Mercurial)일 수 있다. 버전 제어는 협업을 용이하게 하고, 코드 무결성을 향상시키며, 동시 변경 사항을 원활하게 관리하고 충돌을 해결함으로써 지속적인 통합을 지원한다.
- @Value 어노테이션 사용 시 주의할 점을 설명해주세요.2024-11-14 20:15:42@Value 어노테이션 주의점@Value은 설정 파일에 설정한 값을 주입할 수 있는 어노테이션입니다. 첫 번째로 주의해야 할 부분은 주입 시점입니다. @Value 어노테이션은 대상 컴포넌트가 스프링 빈으로 등록되고 의존 관계를 주입할 때 동작합니다. 따라서 환경 변수를 주입받는 대상 클래스에 @Component 어노테이션을 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔이 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value 어노테이션 또한 동작하지 않습니다.또한 상황에 따라서 적절한 주입 방식을 선택해야 하는데요. 빈을 주입받을 때와 마찬가지로 @Value 어노테이션을 사용할 때도 필드 주입, 생성자 주입, setter 주입 등의 방식을 사용할 수 있습니다. 따라서 이들의 장단점을 비교하고, 상황..
- [로드맵] Git2024-11-14 20:00:52Git은 모든 규모의프로젝트를 빠르고 효율적으로 처리하도록 설계된 분산 버전 제어 시스템이다.2005년 리누스 토발즈가 만든 Git은 소프트웨어 개발 중에 소스 코드의 변경 사항을 추적하여 여러 개발자가 비선형 개발에서 함께 작업할 수 있도록 해준다. Git은 모든 변경 사항의 전체 기록을 유지 관리하여 버전 간의 쉬운 롤백 및 비교를 가능하게 해준다. 분산된 특성으로 인해 각 개발자는 리포지토리의 전체 사본을 가지고 있어 오프라인 작업과 백업이 가능하다. Git 의 주요 기능에는 분기 및 병합 기능, 커밋을 위한 스테이징 영역, 풀 요청과 같은 협업 워크플로 지원이 포함된다.속도, 유연성, 강력한 분기 및 병합 기능으로 인해 소프트웨어 개발에서 가장 널리 사용되는 버전 제어 시스템이 되었으며, 특히 오..
- RAID 기술에 대해서 설명해주세요.2024-11-13 11:18:32RAID(Reduntant Array of Independent Disks)RAID는 수 많은 데이터들을 안전하게 저장하거나 성능을 높이기 위해 여러 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술입니다.RAID 구성 방식에 대해서 설명해주세요. 🤓RAID-0 은 여러 보조기억장치에 데이터를 나누어 저장하는 구성 방식입니다. 데이터를 저장할 때 하드 디스크는 각 장치에 번갈아 데이터를 저장합니다. 이때 줄무늬처럼 분산되어 저장된 데이터를 스트라이프라고 하며 분산하여 저장하는 방식을 스트라이핑이라고도 합니다.데이터를 분산하여 저장하기 때문에 저장된 데이터를 읽고 쓰는 속도가 빨라집니다. 하나의 대용량 저장 장치를 사용하면 여러 번에 걸쳐 읽고 써야하는 데이터를 동시에 읽고 쓸 수 있기 때문입니..