전체 글 282

Buyme TIL240813 기술적 의사결정 - 주문 상태 및 반품 상태의 세분화와 Enum 사용

주문 및 반품 상태를 세분화한다는 것은 주문과 관련된 각 상태를 보다 명확하게 정의하여, 상태 전이를 쉽게 관리하고 추적할 수 있도록 하는 것을 의미한다. 예를 들어, 주문은 여러 단계의 상태를 거칠 수 있으며, 각 상태를 명확히 정의해두면 코드의 가독성과 유지보수성이 크게 향상된다.  Enum을 사용하는 이유명확한 상태 관리: 각 상태를 Enum으로 정의하면, 코드에서 특정 상태를 쉽게 이해하고 관리할 수 있다.안전성: Enum은 상수의 집합이기 때문에, 잘못된 상태 값을 사용할 가능성을 줄인다.가독성: 상태를 문자열로 처리하는 대신, Enum으로 정의하면 코드의 가독성이 향상된다.

MVC 모델이란 무엇인지 설명해주실 수 있을까요?

MVC(Model-View-Controller) 모델은 애플리케이션의 구조를 세 가지 주요 컴포넌트로 분리하여 관리하는 소프트웨어 디자인 패턴입니다. 이는 애플리케이션의 유지보수성과 확장성을 높이는 데 중요한 역할을 합니다. Model: 모델은 애플리케이션의 데이터와 비즈니스 로직을 관리합니다. 데이터베이스와의 상호작용, 비즈니스 규칙 처리 등이 모델의 책임입니다. 모델은 데이터를 변환하거나 가공하여 뷰에 제공할 준비를 합니다. View: 뷰는 사용자 인터페이스를 담당합니다. 사용자가 볼 수 있는 화면을 구성하며, 모델에서 제공받은 데이터를 기반으로 시각적인 출력을 생성합니다. 뷰는 사용자에게 데이터를 표시하고, 사용자의 입력을 컨트롤러로 전달합니다. Controller: 컨트롤러는 모델과 뷰를 연결하는..

기술면접 준비 2024.08.13

DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요?

DI(Dependency Injection)와 IoC(Inversion of Control)는 객체 지향 프로그래밍에서 소프트웨어 컴포넌트 간의 결합도를 낮추기 위해 사용하는 개념들입니다.  IoC(Inversion of Control, 제어의 역전): 전통적인 절차 지향 프로그래밍에서는 프로그램의 흐름을 개발자가 직접 제어합니다. 그러나 IoC는 이 흐름의 제어권을 프레임워크나 컨테이너가 대신 가지도록 하여, 개발자가 신경 써야 할 부분을 줄여줍니다. 대표적으로 Spring 프레임워크에서 IoC 컨테이너가 객체의 생성과 생명 주기를 관리합니다.  DI(Dependency Injection, 의존성 주입): DI는 IoC의 구현 방법 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식입니다...

기술면접 준비 2024.08.13

Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요?

Java 에는 Map 이라는 인터페이스 도구가 있다.대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. 각 Map 인터페이스들의 구조에 대해 정리해보자.  Map기본적으로 Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다.key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key 에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다.따라서, 중복된 key는 존재할 수 없다.  HashMapHashMap은 Hash Table 을 이용하여 만들어졌다.Hash Table은 key 와 value를 저장하며, key를 이용하여 빠르게 데이터를 찾기 위한 자료구조를 가지..

기술면접 준비 2024.08.13

Buyme TIL 240810 .env 파일 세팅하기

.env 파일이란? 프로젝트 바로 밑에 만들고, 비밀번호 등 민감한 정보를 .env 파일에 기록하여 민감 정보 유출 방지 .env 파일에 예 MYSQL_ROOT_PASSWORD=1234 라고 쓴 후, docker-compose.yml 파일에서 mysql_root_password 같은 민감 정보를 다음과 같이 표현할 수 있다. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 또한, .gitignore 에 반드시 .env 파일을 추가하여야 한다.

Buyme TIL240809 Dockerfile/DockerCompose 세팅 (intellij 로 실행한 환경과, docker로 실행한 환경은 다르다)

오늘은 Docker/DockerCompose 환경 구축을 하였다. 에러 1 => ERROR [app build 3/6] COPY build.gradle.kts settings.gradle.kts /app/ 0.0s------ > [app build 3/6] COPY build.gradle.kts settings.gradle.kts /app/:------failed to solve: failed to compute cache key: failed to calculate checksum of ref 327dbb8b-f7ef-45d8-92c0-8c553ef7f0db::1ey6bs0voi1gicus18fdcw4wu: "/settings.gradle.kt..

1-2 ERD

User - Order: 1 : M (비식별) - 한 명의 사용자는 여러 개의 주문 가능Order - OrderItem: 1 : M (식별) - 한 개의 주문은 여러 개의 주문 상품을 포함Product - OrderItem: 1 : M (비식별) - 한 개의 상품은 여러 주문 상품에 포함User - Wishlist: 1 : M (비식별) - 한 명의 사용자는 여러 개의 위시리스트 항목을 가질 수 있음Product - Wishlist: 1 : M (비식별) - 한 개의 상품은 여러 위시리스트 항목에 포함Order - Payment: 1: 1 (식별) - 한 개의 주문은 하나의 결제와 연결

Buy me If you can 프로젝트 개요

목표기본적인 E-commerce 서비스를 위한 회원 플랫폼을 개발사용자는 플랫폼을 통해 회원가입, 로그인, 로그아웃, 마이페이지 등의 기본적인 유저 관리 기능을 편리하게 이용커머스를 이용하기 위한 핵심 요소인 WishList, 주문내역, 주문상태 조회 등의 기능을 제공하여 사용자가 원하는 물품의 구매 및 진행 상태를 원할하게 인지할 수 있도록 함올바른 주문 및 결제/환불 등을 처리하기 위해선 회원의 개인정보가 저장 사용 기술 및 개발 환경Java or KotlinJWTHTTP Request / Response프로그래밍 언어: JVM 언어(Java/Kotlin) 버전 21 이상빌드 툴: Gradle프레임워크: SpringBoot 3.XXDocker / Docker Compose왜 Java 21 버전과 Sp..