항해 미니 프로젝트 1주차(3일)

황지성·2022년 11월 17일
0
post-thumbnail

20221116 TIL(Today I learn)


미니 프로젝트 구현을 완료했다. 어렵진 않지만 사람들과 협업하면서 프로젝트를 진행하니 재밌고 집중도 잘되어 생각보다 일찍 마무리하게 되었다.

프로젝트를 내 직접 구현했던 내용들을 정리해봤다.

1. 카운트 기능

1.1 쿠키 수신 및 유저 정보 확인

수신한 JWT에 담긴 사용자 정보를 통해 유저 정보를 우선 확인했다. 이전에는 보안적인 측면을 고려해 통신을 한 적이 없었기에 JWT는 굉장히 재밌게 수업을 듣고 수업을 들었다.
JWT에 대한 내용은 따로 정리할 필요가 있을 듯하다.

1.2 날짜 데이터 생성 및 정제

사용자들의 카테고리별 랭킹을 구하는 기능이 있다. 기간별 랭킹을 구하기 때문에 데이터가 등록된 날짜가 필요했다. python의 datetime 모듈을 통해 날짜를 받아온 후, 필요한 포맷에 맞춰 정제했다.

1.3 클라이언트 데이터 수신

Ajax를 통해 클라이언트(웹)으로부터 JSON 형식의 데이터를 수신했다. JSON형식의 데이터를 주고 받은 적은 많은데 개념에 대해서 자세히 알고 사용했던 적은 없었다. 이번 프로젝트를 계기로 확실하게 개념을 이해할 수 있었다.

1.4 수신 데이터 DB 적재

수신한 데이터를 mongodb에 적재했다. 수신한 데이터의 사용자가 DB에 존재한다면 UPDATE, 존재하지 않는다면 INSERT를 통해 데이터를 적재했다.

2. DB 적재

2.1 쿠키 수신 및 유저 정보 확인

1.1에 작성한 내용과 동일하다.

2.2 날짜 데이터 생성 및 정제

1.2에 작성한 내용과 동일하다.

2.3 DB 데이터 추출

처음 기획 당시 일일 랭킹으로 이해했었다. 처음엔 일일 랭킹으로 이해해 일일 데이터를 추출 후 랭킹을 갱신했지만 일일이 아닌 특정 기간별로 나누어 랭킹을 매기는 것이 좋다는 의견이 있었고 해당 방향으로 수정을 했다.

기존에 사용해왔던 Oracle과 같은 RDBMS가 아닌, Nosql의 한 종류인 mongodb를 사용했다. 기존에 사용해오던 Query가 아닌 mongodb에서 Query의 역할을 하는 여러 함수들을 통해 데이터를 추출하려고 하니 익숙하지 않아 어려움을 겪었다. 이전에도 특정 조건의 데이터 추출에 어려움을 겪었기 때문에 머리가 좀 많이 아팠지만, 구글링을 기반으로 함수를 설정했고 원하는 데이터를 추출할 수 있었다.
mongodb의 함수들을 정리할 필요도 있을 듯하다.

2.4 데이터 정렬

python을 사용할 때 마다 느끼지만 python은 정렬에 있어 강력한 장점을 가지고 있다고 생각한다. 서버를 python의 Flask를 사용해 만들었기에 데이터 추출 후, 정렬하는 과정에선 쉽게 할 수 있었다. 해당 부분은 추출했던 데이터를 key값에 맞춰 역순 정렬하는 것이다.

profile
성장하는 개발자

0개의 댓글

관련 채용 정보