반응형

분류 전체보기 20

[5주차] 키즈카페 조회 & 예약 사이트 만들기 - 결제 시스템 (문제해결 과정)

1. 성능 개선 / 코드 개선 요약결제 시스템 도입 및 예약과 연결: 결제 시스템을 도입하여 예약과 결제를 연동하고, 결제가 완료된 예약에만 리뷰를 작성할 수 있도록 했습니다. 결제 시스템을 구현하면서 발생할 수 있는 예외 처리 및 오류를 개선하고, 결제 완료 후에만 리뷰를 허용하도록 설정했습니다.리뷰 작성 시간 제한: 예약 후 일정 시간이 지난 후에만 리뷰를 작성할 수 있도록 제한을 두었습니다. 예약 시간에 맞지 않는 리뷰 작성을 방지하여 리뷰의 신뢰도를 높였습니다. 2. 문제 정의결제 시스템 도입: 예약 후 결제를 진행하고, 결제 후에만 예약이 확정되는 시스템을 도입해야 했습니다. 결제 전에는 리뷰를 작성할 수 없도록 하여, 결제 완료된 사용자만 리뷰를 작성하도록 했습니다.리뷰 작성 제한: 예약 시간..

스파르타 코딩 2024.12.27

[4, 5주차] 키즈카페 조회 & 예약 사이트 만들기 - 결제 시스템 (의사결정 과정)

1. 내가 구현한 기능결제 시스템 도입 및 예약과 연결: 예약 후 결제를 처리하고, 결제 완료된 예약에 대해서만 리뷰 작성이 가능하도록 시스템을 개선하였습니다. 이를 통해 예약과 결제의 상태를 일관되게 관리하고, 결제 후 일정 시간 이내로 리뷰 작성만 허용하는 기능을 구현했습니다.리뷰 작성 시간 제한: 예약 후 리뷰 작성은 예약한 시간 이후에만 가능하도록 제한하였습니다. 이를 통해 예약된 시간과 실제 방문 시간이 맞지 않는 리뷰 작성을 방지하고, 예약자의 신뢰도를 높였습니다. 2. 주요 로직결제 시스템 도입: 사용자가 예약을 진행한 후, 결제 시스템을 통해 결제를 완료해야만 예약이 확정됩니다. 결제 완료 후에만 예약 상태가 '결제 완료'로 변경되며, 이 상태에서만 리뷰를 작성할 수 있습니다.예약 시간 이..

스파르타 코딩 2024.12.27

[3주차] 키즈카페 조회 & 예약 사이트 만들기 (영수증 스캔, 카페 정보 크롤링)

1. [내가 구현한 기능]영수증 스캔 및 리뷰 연동OCR 기술을 이용해 영수증 이미지에서 텍스트를 추출하고, 이를 리뷰 작성 과정에 연동리뷰와 리뷰 이미지 데이터를 데이터베이스에 저장하며 유효한 영수증 인증 과정을 포함카페 정보 조회 및 크롤링 시스템네이버 API를 통해 기본 카페 정보를 수집하고, 부족하거나 상세한 데이터는 크롤링 시스템으로 보완수집된 데이터를 정제하여 데이터베이스에 저장하고 사용자에게 최신 정보를 제공2. [주요 로직]영수증 스캔 로직이미지 업로드 처리: MockMultipartFile 또는 실제 파일을 업로드받아 서버에 저장OCR 처리: Tesseract OCR 라이브러리를 활용해 텍스트를 추출영수증 유효성 검증: 추출된 텍스트에서 키워드(날짜, 상호명, 금액)를 분석해 실제 영수증..

스파르타 코딩 2024.12.20

[2주차] 키즈카페 조회 & 예약 사이트 만들기 (가격 정책, 회원 관리 & 조회)

1. 의사결정[내가 구현한 기능]가격 정책 추가 및 관리 기능카페에 대해 특정 요일이나 대상(사람, 룸 등)에 대해 요금 정책을 추가, 수정, 삭제할 수 있는 기능정책 등록 시 요일별 추가 요금이나 할인 정책을 유연하게 설정 가능회원 관리 기능사용자 프로필 조회, 수정, 삭제 기능 구현본인만 접근 가능한 데이터와 권한을 설정하고, 보안 강화를 위해 JWT 기반의 인증을 적용회원 조회(사장님 및 관리자)사장님이 본인의 카페를 즐겨찾기 한 회원 목록 조회관리자가 전체 회원의 데이터를 확인할 수 있는 기능[배경]전국 키즈카페 정보 및 예약 시스템은 사용자 편의성과 정보의 정확성이 핵심입니다. 특히 사장님과 관리자가 각자의 권한으로 필요한 정보를 효율적으로 관리할 수 있어야 하고, 일반 사용자는 본인의 프로필 ..

스파르타 코딩 2024.12.20

크롤링 키즈카페 단계

크롤링을 포함한 데이터 흐름 구조1. 크롤링 단계키즈카페 정보를 제공하는 웹사이트에서 데이터를 크롤링. 필요한 데이터를 파싱하여 데이터베이스에 저장. 크롤링 주기를 정해 데이터 갱신. 2. 데이터베이스 저장크롤링된 데이터를 정제하여 Cafe, Category, Image, Review 테이블 등에 삽입. 데이터베이스 구조는 위에서 제공한 ERD와 테이블 설계를 따름. 3. API 제공 단계클라이언트(예: 모바일 앱, 웹사이트)는 REST API를 통해 저장된 데이터를 조회. 필터링, 정렬, 페이징 등의 기능 제공. 크롤링 파이프라인 설계1. 크롤링 단계크롤링은 Java의 Jsoup 같은 도구를 사용하여 구현합니다. 2. 크롤링된 데이터 저장크롤링한 데이터를 API 백엔드 서버로 전송하거나 직접 데이터베이..

카테고리 없음 2024.12.03

Redis 동시성 제어 과제 구현 방향

목표: Redis를 활용한 Lock 구현으로 동시성 이슈 해결1️⃣ 구현 방향 자료조사 및 단계적 진행1. 어플리케이션 기획콘서트 티켓팅 시스템으로 설정:특정 시간에 대규모 요청이 몰릴 가능성이 높은 도메인.좌석 선택 및 구매 과정에서 데이터 정합성 유지가 중요.요구사항:좌석은 단 1명만 구매 가능.동시 요청 시, 같은 좌석이 여러 사용자에게 배정되지 않도록 처리.2. 동시성 이슈 검증 테스트 코드 작성환경 설정:ExecutorService를 이용해 다수의 쓰레드에서 동일한 좌석 구매 요청.CyclicBarrier를 사용하여 쓰레드가 동시 시작되도록 구현.검증 코드 시나리오:여러 쓰레드가 동일 좌석을 동시에 구매하려고 시도.테스트 시 동시성 문제로 인해 데이터 정합성이 깨지는 상황을 확인.3. Redis..

카테고리 없음 2024.11.27

Spring 심화 주차 개인 과제 트러블슈팅

ScheduleService, UserService, CommentService 서비스 클래스에 @Transactional 추가1. 일관성 있는 데이터베이스 상태 유지 Service 클래스의 모든 메서드가 트랜젝션 내에서 실행되어 데이터베이스에 여러 작업이 하나의 트랜젝션으로 묶여 일관성을 보장할 수 있다.2. JPA의 더티체킹 활용 엔티티 수정 시 save() 메서드를 호출하지 않아도 자동으로 변경 사항이 감지되고, 데이터베이스에 반영된다.3. 조회 전용 메서드에는 @Transactional(readOnly = true) 적용 데이터 변경을 방지하고, 성능을 최적화 엔티티에서 DTO로 유효성 검사 어노테이션 옮기기>> 엔티티에 유효성 검사를 붙이면 영속화 시점에 유효성 검사가 일어남. 객체 생성 시점에..

스파르타 코딩 2024.10.31

일정 관리 앱 제작 트러블 슈팅

1. DTO 적용 문제초기에는 엔티티를 직접 반환하도록 설정하였으나, 엔티티를 그대로 반환하는 것은 데이터 노출과 관련된 보안 문제 및 확장성의 문제가 될 수 있어, DTO(Data Transfer Object)를 사용해 데이터를 반환하도록 변경하였습니다. 이 과정에서 서비스 계층에서 엔티티를 DTO로 변환하는 로직을 추가하였습니다. 컨트롤러와 서비스 계층에서 DTO로 변환된 데이터를 사용하도록 수정했으며, 각 메서드마다 적절한 DTO로의 변환을 구현하였습니다. 유저 생성, 모든 유저 조회, 특정 유저 조회, 일정 생성, 일정 조회 등의 기능에서 DTO를 사용해 반환하도록 수정하였습니다. 2. 필수 값 누락 및 엔티티 필드 문제일정 생성 시 userName 필드가 누락되거나 null로 저장되면서 데이터베..

스파르타 코딩 2024.10.17

[JDBC를 활용한 CRUD] 일정 관리 앱 만들기 과제 트러블슈팅

문제 1: author_id 외래키 추가 시 오류 발생발생 상황: author_id를 외래키로 추가하려고 했을 때, 이미 author_id가 schedule 테이블에 존재하여 오류가 발생.해결 방법: 외래키 제약 조건이 추가되지 않은 상황이었기 때문에 다음과 같은 순서로 해결.기존의 author_id를 제거하려 시도했으나, 외래키 제약이 설정되지 않았음에도 불구하고 제거할 수 없었음.ALTER TABLE을 사용해 먼저 외래키 제약을 제거한 후, author_id 컬럼을 삭제하고 다시 추가하면서 외래키 제약을 설정함.해결 코드:-- 외래키 제약 조건 제거ALTER TABLE scheduleDROP FOREIGN KEY fk_author;-- author_id 컬럼 삭제ALTER TABLE scheduleD..

스파르타 코딩 2024.10.04

자바로 숫자 야구 게임 만들기 과제 트러블슈팅

1-1. 정답 숫자 생성하기>> Set과 HashSet 대신 List와 Collections.shuffle을 사용한 이유?1. 코드의 간결성과 가독성 향상 Collections.shuffle을 사용하면 한 번의 메서드 호출로 리스트 전체를 무작위로 섞을 수 있다. 이를 통해 중복되지 않는 랜덤 숫자들을 손쉽게 얻을 수 있으며, 추가적인 중복 검사나 복잡한 루프가 필요하지 않다. 반면에 Set과 HashSet을 사용하면, 중복되지 않는 숫자를 얻기 위해 랜덤 숫자를 생성하고 중복 여부를 확인하는 반복문을 작성해야 한다. 이 방법은 코드가 더 길어지고 복잡해질 수 있으며, 가독성이 떨어질 수 있다. 2. 효율성 및 성능 향상 Collections.shuffle은 리스트를 한 번만 섞으면 되기 때문에, 고정된..

스파르타 코딩 2024.09.24
반응형