[Project] class101 프로젝트
class101 클론 프로젝트
클래스101은 사람들이 유료로 원하는 것을 수강할 수 있는 온라인 서비스이다. 다양한 분야의 클래스가 있으며 직접 클래스를 개설할 수도 있다. e-commerce 같은 웹 사이트이지만 유저가 직접 creater가 되어서 class를 개설할 수 있다는 특징이 있다.
개발 기간
2021.5.24 ~ 2021.6.4
개발 인원
프론트엔드 3명 , 백엔드 3명
기술 스택
언어: Python
Web Framework: Django
DB: My SQL, RDS, S3
라이브러리: Bcrypt, pyjwt
베포: EC2
Tools
Trello, Github, Notion, Postman
맡은 역할
- 클래스 리스트 호출
- 카테고리 별 분류
- 정렬(최신순, 좋아요 순, 리뷰 순)
- pagination
- 카테고리 목록 호출
- EC2 서버로 베포 및 RDS에 DB저장 후 연결
클래스101은 사람들이 유료로 원하는 것을 수강할 수 있는 온라인 서비스이다. 다양한 분야의 클래스가 있으며 직접 클래스를 개설할 수도 있다. e-commerce 같은 웹 사이트이지만 유저가 직접 creater가 되어서 class를 개설할 수 있다는 특징이 있다.
개발 기간
2021.5.24 ~ 2021.6.4
개발 인원
프론트엔드 3명 , 백엔드 3명
기술 스택
언어: Python
Web Framework: Django
DB: My SQL, RDS, S3
라이브러리: Bcrypt, pyjwt
베포: EC2
Tools
Trello, Github, Notion, Postman
맡은 역할
- 클래스 리스트 호출
- 카테고리 별 분류
- 정렬(최신순, 좋아요 순, 리뷰 순)
- pagination
- 카테고리 목록 호출
- EC2 서버로 베포 및 RDS에 DB저장 후 연결
클래스101 선정 이유
E-commerce에서 사용자가 상품을 등록할 수 있다는 특징이 있어 선정했습니다. 첫 프로젝트 였던 이케아는 E-commerce 웹이였습니다. 여기서 너무 다른 기능들이 많은 웹을 하는 것보다는 기존의 기능들을 보완해보고 추가적으로 상품을 등록하는 것까지 해보고 싶어 클래스101 프로젝트를 선정했습니다.
❓️Blocker
- 내가 쓴 코드에 애정을 쏟자
- Git rebase 무서워하지 말자
🔎️내가 쓴 코드에 애정을 쏟자
해봤던 코드라서 금방 할 수 있을거야!
- 내가 쓴 코드에 애정을 쏟자
- Git rebase 무서워하지 말자
해봤던 코드라서 금방 할 수 있을거야!
라는 생각으로 로직구현을 빨리 하고 다음 추가기능을 구현한다는 목표를 가졌습니다.
하지만 빨리빨리 라는 생각은 결국 실수를 만들었고 프로젝트 막바지에 로직을 수정하는 일이 발생했습니다.
course_list = course_list.annotate(like_count = Count('liked_user'))
course_list = course_list.annotate(review_count = Count('course_review'))
위 코드는 course(클래스)리스트에서 각 리스트 별로 눌린 좋아요 수(like_count), 댓글 수(review_count)를 annotate를 통해 가짜 주석을 만드는 코드입니다. 결과적으로 위에 작성된 코드는 틀린 방법입니다. 한 클래스가 좋아요 수가 5개, 댓글 수가 7개라면 두 변수를 따로 출력하면 둘 다 35가 나옵니다. 왜냐하면 annotate안에 Count라는 aggregate class는 독립적이지 않기 때문에 Count를 두 번 사용되면 중복되는 현상이 나타납니다.
해결방법 : distinct
course_list = course_list.annotate(like_count = Count('liked_user', distinct=True), review_count = Count('course_review', distinct=True))
다행히 구별할 수 있는 방법이 있습니다. Count 안에 distinct=True라는 값을 주면 구별됩니다. aggregate 클래스 중에서 인자로 사용할 수 있는 클래스가 있습니다. 이는 장고 공식 문서에 나와있습니다.
🔎️Git rebase 무서워하지 말자
rebase로 conflict을 해결하고 push를 했는데 github에서는 conflict이 해결되지 않았다고 나와요..
이 상황이 나온 순간 당황스러웠습니다. 분명 conflict을 해결하고 push를 했는데 conflict을 해결하라니.. 하지만 컴퓨터가 거짓말을 하지 않기 때문에 사람인 제가 실수를 했다고 마음을 다시 먹었습니다. 멘토분들에게 물어보니 git reset을 통해 다시 뒤로 가서 수정하고 push를 하면 된다고 했고 reset을 통해 push는 성공했지만 속은 찝찝했습니다.
Git에 대해 어느정도 아는 줄 알았는데 돌아가는 것도 못했던 나
git의 장점 중 하나는 버전관리라고 생각합니다. 버전관리를 한다는 뜻은 모든 일을 기록할 수 있어 예전 기록들을 보고 수정할 수 있는 것입니다. git에 대해 안다고 생각한 제가 git을 확실히 이해하지 못하고 사용했다는 것을 깨닫게 되었습니다.
나중에 안 해결방법은 git remote update
를 사용해서 remote를 최신화하는 방법이 있었습니다.
🤔️회고
- 구글 검색도 실력이다(내 문제를 정확히 파악)
- git 명령어 제대로 이해하자!
- 구글 검색도 실력이다(내 문제를 정확히 파악)
- git 명령어 제대로 이해하자!
annotate 때문에 스트레스를 받고 있을 때 멘토님에게 물어보았습니다. 멘토님은 1분만에 고민을 해결해 주었고 그 방법은 구글링이였습니다. 검색창에 annotate count two field
라는 간단한 검색을 했고 stactoverflow에 제가 고민하고 있는 코드가 정확히 나왔습니다. 1시간 동안의 고민이 1분만에 해결되니 스스로에게 화도 났지만 이를 통해 검색의 위대함을 알았고 무조건 내가 혼자 해결한다기 보다는 주변의 도움(구글, 동기, 멘토)을 받을 때 배우는 방법을 알게 된것같습니다.
git은 정말 이해했다고 생각하면 점점 멀어지는 것 같습니다.. 프로젝트에서 정해진 방법대로 버전관리를 하면 된다고 생각했지만 사람은 실수를 언제나 하기 때문에 실수했을 때 극복하는 방법을 배우려고 하지 않았던 것 같습니다. 이번 rebase 실수를 통해 배운 점이라면 git을 통해 원하는 커밋 메시지로 돌아가기! 입니다. 그리고 이번 실수를 통해 git 명령어에 대한 이해를 위해 공부를 해야겠다고 다짐했습니다.
Author And Source
이 문제에 관하여([Project] class101 프로젝트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tonic523/Project-class101-프로젝트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)