팀장 : 김준섭, 팀원 : 석정원
전반적으로 백엔드, 프론트엔드 전 과정을 함께 진행하였습니다. 분담한 내역은 다음과 같습니다. 김준섭 : 프로필 페이지, 모집게시판, 무비페이지, 검색페이지 장르 필터링, 정렬 석정원 : 메인 페이지, 추천페이지, 리뷰게시판, 검색페이지 오타 필터링 검색제안, DB 재구성
메인 페이지 : 메인 페이지의 스크롤 이벤트와 애니메이션을 구상한 만큼 구현했습니다 검색 페이지 : 검색 페이지의 장르 필터링, 정렬, 오타 필터링을 구상한 만큼 구현했습니다 추천 페이지 : 추천 페이지의 알고리즘을 구상한 만큼 구현했습니다 리뷰 게시판 페이지 : 좋아요, 수정 기능을 제외하고 구상한 만큼 구현했습니다 모집 게시판 페이지 : CSS를 제외하고 구상한 만큼 구현했습니다 프로필 페이지 : 유저 정보 보기, 팔로우를 구상한 만큼 구현했습니다
사용자가 처음 가입할 때, 선호 장르 하나를 의무적으로 선택합니다. 좋아요 누른 영화가 있다면 좋아요 누른 영화들의 단어 정보들을 수치화합니다. 벡터화된 영화 정보들을 코사인 유사도를 통해 유사도를 측정하고 가장 유사도가 높은 순으로 정렬합니다. 그 후 가입할 때 선택했던 선호장르에 해당하는 영화에는 가중치를 준 후에 다시 정렬합니다. 이 중 상위 10개 영화를 사용자에게 제공합니다.
추천 기능 : 사용자의 선호 장르, 좋아요한 영화 등 사용자 정보를 기반으로 코사인 유사도를 측정하는 알고리즘을 통해 최적의 영화를 추천해줍니다. 검색 기능 : 장르 검색, 제목 검색, 정렬 기능이 비동기 중첩으로 가능합니다, 머신러닝을 활용한 유사도 측정으로 검색어 오타나 결과값이 없는 경우도 영화 정보가 제공됩니다. 모집 기능 : OTT 구독을 통해 영화를 보는 현대 소비 성향에 맞춰 OTT 별로 구독을 공유할 그룹을 만들고 참여할 수 있습니다. 프로필 기능 : 자신이 쓴 글, 댓글, 좋아요한 영화, 팔로워, 다른 사람의 프로필을 볼 수 있습니다. 프로필 사진을 변경할 수 있습니다
기초가 부족하다는 것을 느낄 수 있었고, 이번 프로젝트를 통해 기초를 다지게 된 것 같아서 좋았습니다. 모델과 시리얼라이저를 다루는 방법을 알 수 있었습니다. 뷰에서 비동기 처리를 하고 데이터를 올바르게 요청하는 법과, 필요한 정보가 누락되지 않도록 적절한 시기에 서버에 요청을 하거나, 모델링을 하여 데이터를 넣는 법을 배웠습니다. 생각보다 시간이 많이 걸려서 넣고 싶지만 못 넣은 기능들도 있었습니다. 보안 처리 등을 많이 신경 쓰지 못해 아쉽습니다. 그럼에도 불구하고 새롭게 배운 기능들이나, 꼭 필요하다고 생각하는 기능들이 많이 들어가서 좋았습니다. 변수명을 잘 정하고 잘 정리하는 게 중요하다는 걸 다시 느꼈습니다. 이번엔 바빠서 힘들었지만 다음 프로젝트에선 리팩토링을 많이 해보고 싶습니다. 페어 프로그래밍에 대해서는 언제나 느끼지만 디버깅에 특히 강력한 것 같습니다. 같이 하면 언제나 2명 이상의 시너지가 생기는 것 같아 협업의 중요성을 느낄 수 있었습니다.
rest-api를 이용하기 위해 serailizer를 구상하는 부분에서 애를 많이 먹었던것 같습니다. 프로젝트 설계를 마무리 하면서 모델과 serailizer의 구상을 디테일하게 접근해야 한다는걸 다시 한번 배웠고 코드를 구현하는 연습부터 다시 배워야겠다 생각이 들었습니다. css도 생각보다 디테일한 부분에 시간을 많이 빼앗기기 때문에 프론트와 백의 설계 시간을 잘 배분해야겠고 다음에는 디테일한 부분은 우선적으로 구현할 게 아니라 큰 틀에서부터 설계를 접근해야 될 것 같습니다.