프로젝트 개발일지(진실의 방)

4 분 소요

업데이트:

프로젝트를 시작한지 기간이 좀 지났지만, 이번주부터라도 매일매일 뭘 했는지 남겨보려한다.

Week 3~4, May

05-25 이전

  • 프로젝트 주제선정 (약 1주 소모)
  • 주제 선정에 따른 교보재 신청
  • 프로젝트 docs에 md파일 작성(pandas, gitignore 관련)
  • django 기본 프로젝트 생성
  • django models.py 자동생성 및 swagger 설정
  • 데이터 전처리(데이터 : 국토교통부 실거래가 조회시스템)
    • 주소를 가지고 카카오 API를 이용해서 위도, 경도 저장
    • 계약년월, 일 칼럼을 계약년월일로 맞추기와 같은 컬럼 값 스키마에 맞춰 변경
    • 위도, 경도를 가지고 카테고리 별 데이터를 받아오는 함수 작성

시행 착오 1:
위도, 경도를 가지고 카테고리 별 데이터를 받아올 때 여러 페이지의 결과가 있을 경우,
페이지를 돌면서 데이터 명을 str로 다 받아서 붙였다.
-> API호출이 너무 많아서 일일 허용 트래픽을 넘김
-> 일일 허용량을 넘은 경우 에러가 남, 이때 try except로 에러코드를 저장하게 했는데
에러코드가 있는 데이터를 조회하려고 할 때, 몇몇 카테고리 데이터의 길이가 너무 길다보니 속도가 너무 느림(비효율적)
해결 1: 카테고리 별 데이터를 str로 받지말고 갯수만 int로 받자 !
장점, 페이지네이션을 돌지 않아도 되서 기존보다는 호출 횟수가 적음
(기존 : 1 row * 11카테고리 + a(페이지 수))
(개선 : 1 row * 11카테고리)

Week 5, May

2020-05-25(월)

  • 강의 듣기(인프런 : 공공데이터로 파이썬 데이터 분석 시작하기)
  • 전처리한 데이터프레임을 서버 데이터베이스에 저장
  • 전처리하면서 만든 ipynb파일들을 정리 및 깃에 업로드

2020-05-26(화)

  • 강의 듣기(오전엔 강의를 듣자..)
  • 이미지 수집을 위한 Selenium 코드 작성 및 코드 돌리기
  • 프로젝트 docs에 md파일 작성(Selenium관련)
  • 이미지 약 4000개 수집 !!

2020-05-27(수)

  • 강의 듣기
  • building 데이터에 ‘ho’칼럼(랜덤으로), image 수집한 내용 추가
  • building 데이터 다시 서버에 업로드
  • 취업 특강

2020-05-28(목)

  • 강의 듣기(1챕터 끝)
  • 개발일지 작성하기(오늘부터 시작)
  • 로컬 데이터베이스 환경에 데이터 저장하기 및 백업 데이터 생성
  • 전세, 월세, 매매 시각화를 위해 django에서 rest api 만들기(작업중)
    • 월세의 경우 보증금 + 월세를 같이 뿌려줄건지
    • 동 단위 결과 인덱스 값과 건물 단위 결과 인덱스 값이 다를 때 어떻게 뿌려줄건지
  • frontend에서 차트 실험용을 위한 테스트 페이지 제작 및 기본 차트 구성

2020-05-29(금)

  • 강의 듣기(2챕터 시작)
  • 시각화 끝(label 고정방식, 데이터가 없어도 그래프 뿌려줌, 월세의 경우 보증금,월세 라인 추가)
  • 데이터킷 배부(around 테이블을 위한 api를 db화 하는 내용, 일일호출량때문에 팀원들에게 지역별로 분배)

Week 1, June

2020-06-01(월)

  • serializer 생성
  • 지역(시도,시군구)과 선호 카테고리를 입력 받았을 경우 상위 6개 거래이력과 카테고리 값 보여주기
    • 거래 이력을 보여줄 때 어떤 거래이력을 보여줄지에 대한 값 계산이 필요
  • 나이대에 따른 거래 이력을 추천하기 위한 준비(views)
    • 선호 지역에 따른 필터링 추가 필요
  • 선호도를 저장하는 테이블 생성
  • 저번주 베스트멤버 당첨(너무 좋다 !!!)
    img

2020-06-02(화)

  • db 변경한 것 dump sql생성 및 django(models, serializers,,)에 적용
  • 서버 데이터베이스에 업로드 하기위해 노트북파일 일부 수정
  • 비회원인 경우 처음 메인에 전체 이력 랭킹 9개 보여주는 api
  • 회원인 경우 등록한 카테고리와 관심지역 기반에 따른 이력 전달하는 api
  • 나이, 성별, 카테고리에 따른 거래 이력을 카테고리 개수, 평점 순으로 보여주는 api

2020-06-03(수)

  • 기존 거래이력 단위에서 건물단위로 바꿈(ㅠㅠ설계의 중요성)
    • 추천, 찜, 최근 본 이력 등등 단위가 건물단위로 변경됨(건물 추천, 건물 찜, 최근 본 건물 ..)
    • 변경사항 : 메인 3개씩뿌려주는거, 검색서비스 …
  • django orm docs 작성
  • 추천모듈 개발을 위한 surprise탐색 중

2020-06-04(목)

  • content based system 연구
    • 유저가 평가를 한 항목이 없는 경우(신규유저일때) 어떤 것들을 보여줘야 할지,,
    • 선호도와 가중치를 어떤식으로 연산할지, 유저 정보 없이 아이템간의 유사도를 할지, 유저프로필을 생성해서 유사도를 찾을지..
  • ucc촬영 ~~~ 웹드라마출연하는 기분이었다. 너무 너무 좋아 ~!!

2020-06-05(금)

  • 백엔드랑 프론트 연동작업
    • 성별, 연령대, 선호도에 따른 랭킹을 보여줄 때 api 각각 날리는 부분을 1번 호출 시 결과 3개를 주는 것으로 변경
    • 해당 유저의 성별, 연령대와 같은 다른 유저들의 집합을 or로 묶지 않고 filter로 적용(속도 빨라짐, 함수 생성)
  • 데이터베이스를 로컬에서 서버로 옮김
  • 더미데이터(user, interest,favorite) 생성 후 적용

2020-06-07(일)

  • 오늘 새 칼럼이름 맞춰서 moels.py 조금 수정(favorite테이블)
  • user based model api 작업 나머지 처리
    • RMSE가 1 초반이여서 살짝 의심이 감..
  • 추천 api쪽 백엔드랑 붙이기
  • 더미데이터 더 생성 (유저 1000명에서 -> 2000명)
  • django backend AWS 배포(ubuntu를 Ubuntu로 썼다가 gunicorn fail을 겪고 원인을 알고난 후 눈물 1방울..)
  • around에 데이터 새로 넣는 API 작성(아무도 안해서.. 내가 만들었다..)

Week 2, June

2020-06-08(월)

  • 데이터 전처리에 썼던 노트북파일들과 파일에 대한 설명을 적은 readme 업데이트
  • 데이터베이스 백업파일 만들기
  • 발표자료 준비
    • 발표 스크립트 검토
  • 밤을 꼴딱 새버린… 시행착오
    • contract 데이터의 address부분에 ‘동’ 제거해야함(도로명 주소 자체로 검색이 불가, 이걸 이제알다니)
    • https 인증서를 끼니 vue에서 django 통신할때 mixed content가 뜸
    • 여러번 시도하다가 http로 하니까 cors가 뜸.. (왜지?)
    • vue에서 indexPython 파일에서 header 부분 제거

2020-06-09(화)

  • 프로젝트 발표

2020-06-10(수)

  • 데이터 수정
    • contract, around에서 주소칼럼에서 ‘동’ 제거
    • sd, sgg, emd 칼럼 제거
    • favorite 다시 생성(평점 1~5점 랜덤 -> 2,3,4점대의 비율이 더 높도록 수정)
    • contract랑 around랑 관계로 묶어줌(contract에 around fk를 가짐)
    • contract의 위도/경도를 around로 옮김
  • 데이터베이스 백업

2020-06-11(목)

  • 오전 강의듣기(2챕터 끝)
  • contract에 is_expired랑 created_at 컬럼 생성
  • 변경한 칼럼대로 테이블 새로 생성 및 어제 작업한 데이터 넣기
  • 데이터베이스 백업
  • views 수정

2020-06-12(금)

  • 오늘은 한게 없다.. 반성 ..
  • views.py 수정 완료
    • around 추가하는 api를 post로 변경(기존에 왜 get으로 했었을까..)
    • around 삭제하는 api 추가
    • 기타 다른 기존에 있던 api를 새로운 데이터베이스 형식에 맞춰서 변경
  • around에 등록되지 않은 주소의 상태이력이나 거래 이력을 등록할 시 시나리오 정립
1. 사용자가 이력등록할때 폼을 입력한다  
2. 프론트에서 입력받은 주소를 우선 python으로 요청 -> around 생성해 !  
3. python 백에서 around가 있으면 around id를 리턴한다  
  없으면 자료 만들어서 생성한 다음 around id를 리턴한다

4. 프론트에서 받아서 around_id + 사용자가 입력한 값으로 자바 백엔드로 등록 요청을 보낸다.
  자바백에서 등록이 성공하면 contract-id를 반환한다
  실패 시 -1 같은 실패의 결과를 보낸다
5. 프론트는 등록이 실패한 경우 python 백엔드로 해당 주소 around를 삭제하라고 요청을 보낸다
6. python 백엔드에서 삭제 요청을 받은 경우 생성한 around를 삭제한다  

댓글남기기