1차 중간 프로젝트 회고

최경현·2024년 1월 5일
0

🍷 wine's
Wine's는 와인을 좋아하고 관심있는 사람들이 모여 정보를 공유할 수 있는 웹사이트입니다.

  1. 프로젝트 소개
    [기획배경]
    실제로 와인을 마셔본 사람들의 맛 평가와 먹어봤을때 어울리는 음식 등 이러한 리뷰들을 통해
    와인을 잘 알지못하는 사람들도 와인을 쉽게 접하며 즐길수 있도록 하면 어떨까? 라는 생각이 들어 프로젝트를 기획하게되었습니다.

🕰️ 프로젝트 기간
2023-12-08 ~ 2024-01-05

  1. 프로젝트 구조
    src
    ├── main
    │ ├── generated
    │ ├── java
    │ │ └── com
    │ │ └── std
    │ │ └── sbb
    │ │ ├── domain
    │ │ │ ├── answer
    │ │ │ │ ├── controller
    │ │ │ │ ├── entity
    │ │ │ │ ├── form
    │ │ │ │ ├── repository
    │ │ │ │ └── service
    │ │ │ ├── email
    │ │ │ │ ├── controller
    │ │ │ │ └── service
    │ │ │ ├── member
    │ │ │ │ ├── controller
    │ │ │ │ ├── entity
    │ │ │ │ ├── form
    │ │ │ │ ├── repository
    │ │ │ │ └── service
    │ │ │ ├── question
    │ │ │ │ ├── controller
    │ │ │ │ ├── entity
    │ │ │ │ ├── form
    │ │ │ │ ├── repository
    │ │ │ │ └── service
    │ │ │ ├── review
    │ │ │ │ ├── controller
    │ │ │ │ ├── entity
    │ │ │ │ ├── form
    │ │ │ │ ├── repository
    │ │ │ │ └── service
    │ │ │ ├── taste
    │ │ │ │ ├── entity
    │ │ │ │ ├── form
    │ │ │ │ ├── repository
    │ │ │ │ └── service
    │ │ │ └── wine
    │ │ │ ├── controller
    │ │ │ ├── entity
    │ │ │ ├── form
    │ │ │ ├── repository
    │ │ │ ├── searchType
    │ │ │ └── service
    │ │ └── global
    │ │ ├── imagesfile
    │ │ │ ├── config
    │ │ │ ├── controller
    │ │ │ ├── entity
    │ │ │ ├── repository
    │ │ │ └── service
    │ │ ├── initDate
    │ │ ├── jpa
    │ │ ├── rq
    │ │ ├── security
    │ │ └── standard
    │ │ └── utill
    │ └── resources
    │ ├── static
    │ │ └── images
    │ └── templates
    └── test
    └── java
    └── com
    └── std
    └── sbb

  2. 개발환경
    💻 Tech Stack 💻

🛠 Tools 🛠

  1. ERD 설계

  1. 시연 영상

  2. 트러블 슈팅

트러블 슈팅

이미지 업로드

  1. 이미지 업로드와 동시에 변환을 시키는데 경로 설정, 파일 변경, 전송 실패 등등.. 여러 문제가 발생하였다. 이미지 업로드 트러블을 해결하기 위해서 디버깅 및, 검색을 이용해 문제를 해결하였다.
  2. Ex )enctype="multipart/form-data" 문제나 public void addResourceHandlers(ResourceHandlerRegistry registry) 파일에서의 경로 설정 혹은, file handler에서의 파일 저장 방법 등.. 여러 문제를 해결하였다.

소셜 로그인

  1. 소셜 로그인을 진행 하면서 application 설정을 처음 만져보는 이유인지 여러 이유로 문제가 발생하였다.
  2. oauth2를 다루면서 소셜 로그인을 진행하였을 때 데이터를 집어넣는 notprod쪽에서 문제가 많이 발생하였고, application과 notprod를 잘 비교하면서 수정하였고, 문제를 해결하였다.


찜 목록 구현

  1. 찜 목록을 구현하면서, 찜을 하는 순간 데이터가 전송이 안되는 문제와, 찜을 한 유저일 경우 찜한 상태가 유지되도록 구현하는데 문제가 많이 생겼다.
  2. 스크립트가 html에 전송이 되지않아서 클릭이 안되는 문제를 html안에 직접 넣어줌으로써 해결하였고, 데이터가 전송이 안되는 문제는 스크립트에서 csrf토큰을 같이 전송시켜 주면서 문제를 해결하였으며, 찜한 상태를 유지시키기 위해 클릭하거나 접속할 때 마다 로그인한 회원을 비교하기 위에 entity에 클릭할 때마다 비교하기 위한 생성자 함수를 만들어서 html에서 타임리프를 사용하여서 문제를 해결하였다.

이메일 전송 구현

  1. 이메일 전송을 구현하면서, 전송이 안되는 문제와, 전송은 되더라도 메일로 안받아 지는 문제 등.. 을 겪었다.
  2. 이메일 전송이 안되는 문제는 application에서 메일 설정을 잘못 하여서 전송이 안되었었다. 그래서 전송시키는 주최자 메일을 설정하여서 문제를 해결하였으며, 전송이 안되는 문제는 전송 시키기 전에 일단 회원가입 시 해당 메일로 회원가입이 완료되었다는 구문을 발송시키면서 예비작업을 완료하였으며, 그 다음에는 이메일로 인증을 시키기 위하여 이메일 등록을 하면은 해당 이메일로 랜덤 인증번호를 발송 시키기 위해 스크립트로 구현을 하였으며, 해당 인증번호를 받으면서 정확하게 입력하였을때, 회원가입이 진행되게 하도록 구현하였다.

카테고리 구현

  1. 카테고리를 구현하는 중에 저장된 wine값을 불러오기 위한 과정에서 문제가 많았으며, 카테고리가 되더라도 페이징이 안되는 문제를 겪었다.
  2. 카테고리를 구현하면서 페이징을 적용 시키기 위해 원래 wine리스트에서 페이징을 하는 곳에 직접적으로 불러오면서 동시에 null일 경우를 같이 처리하면서 문제를 해결하였다. 서비스에서 경우의 수를 만들어서 레포지토리에서 호출하였으며, 레포지토리에서는 쿼리문을 이용하여 값을 받아올 수 있도록 구현하였다. 구현은 하여도 페이징이 되지 않았었는데, 페이징을 시키기 위해서 html에서 GET형식으로 값을 요청하면서 th:with="kwBase = '?kw=' + ${param.kw != null ? param.kw : ''} + '&list=' + ${param.list != null ? param.list : ''} + '&country=' + ${param.country != null ? param.country : ''} + '&price=' + ${param.price != null ? param.price : ''} + '&food=' + ${param.food != null ? param.food : ''}" 이런식으로 직접 값을 추가해주면서 페이징을 구현시켰다.

wine의 4/4분면 구현

  1. wine자체 내에서 4/4분면 값을 저장시키는 도중에 문제가 많이 발생하였다.
  2. 문제를 해결하기 위해 이 값을 받는 entity를 따로 만들었으며, 라디오 버튼 값을 유지시키기 위해 유지시키는 스크립트 구문을 html에 추가하였다, 그리고 html의 복잡성을 해결하기 위해 4/4분면 라디오 버튼 html파일을 따로 만들었으며, 그 값을 불러오기 위해 id값과 name값을 따로 설정하였다.
  1. 회고록

이번 중급 1차 프로젝트를 진행하면서 여러 해보지 못한 신 기능들을 구현 해봤지만, 역시나 처음하는 경험이라 생각보다 순조롭게 풀리지는 않았다. 하지만 하면서 시간은 오래걸렸지만, 완성했을 때, 해내고 말았을 때의 쾌감은 잊혀지지 않았다. 팀원들 끼리의 소통도 원활하게 이루어져서 프로젝트를 진행하는데도 문제가 없었다. 다음 프로젝트 진행할 때는 이번 프로젝트 처럼 마찬가지로 해본 기능들은 수월하게 진행되도록 노력할 것이고, 새로운 기능들을 해볼 수 있으면 해볼 생각이다.

profile
ㅇㅇ

0개의 댓글