[스파르타 코딩클럽] 개인 프로젝트 개발일지 #5

seungmi lee·2020년 8월 31일
1

Sparta Coding Club

목록 보기
5/5
post-thumbnail

🏃‍♀️ 스파르타 코딩클럽 8주차 후기

7월 12일부터 시작한 스파르타 코딩클럽이 8월 30일을 마지막으로 끝이 났다! 👏 벌써 두 달이라는 시간이 흘렀다니 시간 참 빠르고 그사이에 프로젝트 하나를 완성했다! 두 달 동안 물론 스트레스도 받고 현타도 왔지만 내가 무언갈 배우고 만들려 하고 노력하려고 했던 모습들을 생각하면 지금은 뿌듯할 뿐이다. 혼자였다면 못했을 것 같은데 썬🌞이랑 같이 다니면서 서로 의지하며 힘이 돼줬고 앞에서 이끌어 주는 튜터님 덕에 끝까지 할 수 있었다.



Mini Lotto에서 확인하세요!

http://minilotto.shop/


프로젝트 설명

보통 로또를 구매하면 내 당첨결과를 확인한 후 이번 회차 일등이 몇 명이 나왔는지, 한 사람에게 얼마만큼의 몫이 배분되는지에 대한 궁금증이 따르게 된다. 그래서 이렇게 내 당첨결과뿐 아니라 이번 회차 당첨결과들도 확인할 수 있도록 한 페이지 내에 정리해서 만들었다. 또한, 최다 당첨판매점의 위치를 파악할 수 있도록 지도를 연동해서 제공하고 있다.


프로젝트 녹화영상

Mini Lotto 완성본 기능 구현 녹화영상


구현 기술

  • 내 당첨확인 : 클라이언트에서 입력한 번호를 서버에 넘겨 서버에서 최신 회차의 당첨번호와 넘겨 받은 번호를 대조하여 새로운 리스트를 만들어 다시 클라이언트에게 전달해줌으로써 번호 일치여부 및 당첨결과를 나타냈다.
  • 회차별 당첨결과 : apscheduler을 통해 매주 지정된 시간인 토요일 밤 9시에 최신회차의 api를 끌어와 당첨정보를 업데이트 시켜주고 있다.
  • 최다 당첨판매점 : geocoding을 사용하여 판매점 주소를 가지고 위도, 경도 값을 구해서 구글맵에 마커를 찍어 위치를 표시해줬다.

어려웠던 점

처음에 투두리스트를 작성했을 때는 이 정도면 어느 정도 시간 안에 구현할 수 있지 않을까 싶었는데 막상 작업에 들어가기 시작하니까 생각보다 많은 시간이 걸렸고 생각지도 못한 변수가 생겼다.

  1. 로또 API는 회차별로 나뉘어있기 때문에 반복문을 사용해서 1회부터 마지막 회차까지 가져와야 했다. 이 부분을 작업할 때는 어떻게 마지막 회차인 걸 알 수 있을까 하는 고민에 빠졌었다.
    👉 while문을 사용해서 count를 +1씩 해주고 그로 인해 계속 회차를 늘려가다가 마지막 회차일 때는 반복문을 멈춰야 하기 때문에 if result['returnValue'] == 'fail': break 만약 value가 fail이라면 멈추도록 조치를 해줬다.

  2. 매주 토요일마다 최신회차 API로 업데이트를 해야 하기 때문에 while문을 통해서 API를 가져오던 함수를 스케줄에 걸었다. 그랬더니 다시 1회부터 마지막 회차까지 db를 쌓아 db가 중복이 되기 때문에 내가 원하는 최신 회차만을 가져오기에는 부적합했다.
    👉 처음 세팅할 때 1회부터 마지막 회차까지 한 번만 db에 저장할 용으로 run_one_db.py 파일에 while문을 사용한 코드를 넣어두었고, 이제 매주 최신 회차의 API를 불러올 코드는 따로 init_db.py에 넣어두었다. 이렇게 한 번만 저장할 용도, 매주 업데이트할 용도로 파일을 나눠줬다.

  3. 최다 당첨판매점 리스트와 지도에 마커를 찍어 연동하고 싶었는데 당첨판매점의 주소만을 db에 저장하고 있어서 따로 위도, 경도를 구해서 저장해줘야 했다.
    👉 구글 클라우드 플랫폼에서 프로젝트를 생성하여 키 값을 부여받고 Geocoding API를 활성화 시켜주었다. 그 후 작업하는 파일 안에 import googlemaps을 지정해두고 아래의 코드를 활용하여 주소를 입력하면 이 주소에 관한 정보가 리스트로 출력되었다. 그 리스트에서 위도, 경도의 값을 가져올 수가 있었다.
    gmaps =googlemaps.Client(key=Your Key)
    geo=gmaps.geocode('대한민국 서울특별시 강남구')
    print(geo)


추가하고 싶은 기능

기획안을 작성할 때는 현재까지 만든 프로젝트 버전을 1차로 정했고 2차로는 추가 기능을 덧붙이고 싶었다. 하지만 프로젝트를 완성하고 보니 기존 기능들도 엉성한 부분이 있어서 2차는 1차 버전을 디벨롭하는걸 목표로 하고 있다. 1차 버전은 내 번호를 입력하면 1등인지 아닌지 만의 결과를 알려주는데 2차 버전에서는 보너스 번호도 포함해서 1~5등까지의 결과를 알려주고 싶다. 3차 버전으로는 기능을 추가해서 CRUD를 전부 사용해보고 싶다.


스파르타 코딩클럽 후기

HTML, CSS, Javascript를 시작으로 JQuery, Ajax / Python, 웹 스크래핑(크롤링), mongoDB / API 만들기 / GET, POST 방식 요청 / AWS 등등... 8주 동안 꽤 많은 것들을 접할 수 있었다. 후반부로 갈수록 새로 접하는 것들이 나오면서 점점 어려워졌다.

스파르타의 장점은 질문을 언제든지 할 수 있었다는 점이다. 수업시간이 아닌 시간에도 튜터님께 연락해서 질문하면 답을 주셨고, 슬랙에도 질문을 올리면 스파르타의 여러 튜터님들이 답변을 해주셨다. 또한, 매주 금요일마다 오피스아워라고 거기 가서 공부 겸 숙제도 하고 질문도 하는 자리가 마련되어있어 혼자서 공부하는 것보다 더 좋았다.

수업에 관련된 자료 외에도 매주 과제 해설 영상도 올려주시고, 꿀팁이나 복습, 리뷰 특강 등 여러 정보도 제공해줘서 유용한 정보를 얻을 수가 있다. 아 그리고 수업이 끝나도 수업을 진행했던 노션을 볼 수가 있어서 언제든지 복습을 할 수 있어서 좋은 것 같다! 👍

사회적 거리두기가 2.5단계로 격상되어 마지막 수업이 온라인으로 대체돼서 조금 아쉬웠지만, 서로의 화면을 공유하면서 프로젝트 발표도 하고 색다른 재미도 있었다. 짧으면 짧고 길다면 긴 두 달 동안의 여정이 끝이 났는데 시원하기도 하고 섭섭하기도 하다. 스파르타에서 데이터 연동을 처음 배운걸 시작으로 앞으로도 계속 공부해나갈 예정이다!

profile
👩‍💻

0개의 댓글