Giter Club home page Giter Club logo

project_wouldyouci's Introduction

πŸš€μš°λ¦¬ μ£Όλ³€ μ”¨λ„€λ§ˆ

SSAFY 심화 ν”„λ‘œμ νŠΈ

μ‹€μ‹œκ°„ μœ„μΉ˜κΈ°λ°˜ μƒμ˜ μ˜ν™” 정보 쑰회 μ„œλΉ„μŠ€

πŸ›’ Table of Contents

  • [μ„œλΉ„μŠ€ μ†Œκ°œ](#μ„œλΉ„μŠ€ μ†Œκ°œ)
    • 기획 μ˜λ„
    • μ£Όμš” κΈ°λŠ₯
  • [ν”„λ‘œμ νŠΈ μ†Œκ°œ](#ν”„λ‘œμ νŠΈ μ†Œκ°œ)
    • μ„€μΉ˜ 및 μ‹€ν–‰ 방법
    • 기술 정리 λ¬Έμ„œ
  • [νŒ€ 정보](#νŒ€ 정보)

μ„œλΉ„μŠ€ μ†Œκ°œ

🍿기획 μ˜λ„

  • λŒ€ν˜• 3사 μœ„μ£Όμ˜ μ˜ν™” μƒνƒœκ³„

    • λŒ€ν˜• 3μ‚¬μ˜ 경우, μ–΄λŠ μ˜ν™”κ΄€μ—μ„œ μ–΄λ–€ μ˜ν™”λ₯Ό μƒμ˜ν•˜λŠ”μ§€μ— λŒ€ν•œ 정보λ₯Ό 많이 μ œκ³΅ν•˜κ³  있으며, μ‚¬μš©μžλ“€μ€ 이에 λŒ€ν•œ 정보λ₯Ό μ†μ‰½κ²Œ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν•˜μ§€λ§Œ 쀑, μ†Œν˜• κ·Ήμž₯의 경우 μ‚¬μš©μžλ“€μ—κ²Œ μƒμ˜ 정보λ₯Ό μ•Œλ¦¬λŠ” 것이 쉽지 μ•Šμ„ 뿐만 μ•„λ‹ˆλΌ, μ‚¬μš©μžλ“€λ„ ν•΄λ‹Ή 정보λ₯Ό μ–»κΈ°κΉŒμ§€ λ§Žμ€ 번거둜운 단계λ₯Ό 거쳐야 ν•©λ‹ˆλ‹€.
    • 이 λ•Œλ¬Έμ— μ €ν¬λŠ” λŒ€ν˜• 3μ‚¬λΏλ§Œ μ•„λ‹ˆλΌ 쀑, μ†Œν˜• μ˜ν™”κ΄€μ˜ μƒμ˜ μ •λ³΄κΉŒμ§€ μ‚¬μš©μžλ“€μ΄ νŽΈν•˜κ²Œ μ œκ³΅λ°›μ„ 수 μžˆλ„λ‘ μ„œλΉ„μŠ€λ₯Ό κΈ°νšν–ˆμŠ΅λ‹ˆλ‹€.
  • 넀이버 μ˜ν™”μ˜ λΆˆνŽΈν•œ UI

    • 넀이버 μ˜ν™”λŠ” μ‚¬μš©μž μœ„μΉ˜λ₯Ό 기반으둜 μ£Όλ³€ μ˜ν™”κ΄€κ³Ό μ˜ν™”μ˜ 정보λ₯Ό μ œκ³΅ν•˜κ³ λŠ” μžˆμ§€λ§Œ, μ‚¬μš©μžλ“€μ΄ μ‚¬μš©ν•˜κΈ°μ— λΆˆνŽΈν•˜λ©° UI도 μ˜ˆμ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • λ˜ν•œ, 넀이버 μ˜ν™”μ˜ 경우, 남은 μ’Œμ„ 수 λ“±μ˜ μ •λ³΄λŠ” 보여주지 μ•ŠκΈ° λ•Œλ¬Έμ— μ‚¬μš©μžλŠ” 근처의 μ˜ν™”κ΄€ μ€‘μ—μ„œ μ–΄λ–€ μ˜ν™”κ΄€μ˜ μ˜ν™”κ°€ κ°€μž₯ λ§Žμ€ μž”μ—¬ μ’Œμ„μ„ 가지고 μžˆλŠ”μ§€ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. (운이 μ—†λ‹€λ©΄ μ˜ˆλ§€ν•˜λ € ν•˜λŠ” μ˜ν™”κ°€ 맨 μ•žμ€„λ°–μ— 남지 μ•Šμ•„ μ‚¬μš©μžλŠ” 맨 μ•žμ€„μ„ 선택해야 할지도 λͺ¨λ¦…λ‹ˆλ‹€.)
    • μ΄λŸ¬ν•œ λΆˆνŽΈν•¨μ„ ν•΄μ†Œν•˜κΈ° μœ„ν•΄ μ €ν¬λŠ” μ΅œλŒ€ν•œ μ‚¬μš©μžμ˜ μž…μž₯μ—μ„œ νŽΈν•˜κ²Œ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ μ™€μ΄μ–΄ν”„λ ˆμž„μ„ μž‘μ„±ν•˜μ˜€μœΌλ©°, μ˜ν™”κ΄€λ“€μ˜ μœ„μΉ˜, λΉ λ₯Έ μƒμ˜μž‘, ν•΄λ‹Ή μ˜ν™”μ˜ μ‹€μ‹œκ°„ μž”μ—¬ μ’Œμ„μˆ˜ λ“± μ˜ν™”λ₯Ό μ„ νƒν•˜λŠ”λ° μžˆμ–΄ μ€‘μš”ν•œ 정보듀을 λͺ¨λ‘ μ‚¬μš©μžμ—κ²Œ ν•œ λ²ˆμ— μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

πŸŽμ£Όμš” κΈ°λŠ₯

우리 μ£Όλ³€ μ”¨λ„€λ§ˆ (μš°μ£Όμ”¨)

maintitle

  • μœ„μΉ˜ 기반

    • μ‚¬μš©μžλŠ” ν˜„μž¬ μžμ‹ μ˜ μœ„μΉ˜λ₯Ό 기반으둜 μ£Όλ³€μ˜ μ˜ν™”κ΄€λ“€μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
    • μš°μ£Όμ”¨λŠ” μ˜ν™”κ΄€μ„ 클릭할 λ•Œλ§ˆλ‹€ ν˜„μž¬ μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ κ°€μž₯ λΉ λ₯Έ μƒμ˜μž‘λ“€μ„ λ³΄μ—¬μ€λ‹ˆλ‹€.
    • μ΄λ•Œ, μ œκ³΅λ˜λŠ” 정보듀은 제λͺ©, ν¬μŠ€ν„°, μƒμ˜κ΄€, μƒμ˜μ‹œκ°„, μ‹€μ‹œκ°„ μž”μ—¬μ’Œμ„μˆ˜, 전체 μ’Œμ„μˆ˜, μ‹œμ²­ λ“±κΈ‰ 등이 μžˆμŠ΅λ‹ˆλ‹€.
    • μ‚¬μš©μžλ“€μ€ μ§€λ„μ—μ„œ ν•΄λ‹Ή 정보듀을 비ꡐ해가며 μ‰½κ²Œ μ˜ν™”κ΄€ 및 μ˜ν™”λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ§ˆμ§€λ§‰μœΌλ‘œ μ§€λ„μ—μ„œ μƒμ˜μž‘μ„ λˆ„λ₯΄λ©΄ 예맀 νŽ˜μ΄μ§€λ₯Ό λ„μ›Œ μ‚¬μš©μžκ°€ 보닀 νŽΈν•˜κ²Œ 예맀 ν•  수 μžˆλ„λ‘ μš°μ£Όμ”¨λŠ” μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • μ‹œκ°„ 및 μž₯μ†Œ μ˜΅μ…˜

    • μš°μ£Όμ”¨λŠ” κΈ°λ³Έμ μœΌλ‘œλŠ” μœ„μ—μ„œμ²˜λŸΌ ν˜„μž¬ μ‚¬μš©μžμ˜ μœ„μΉ˜λ₯Ό 기반으둜 정보λ₯Ό μ œκ³΅ν•΄μ€λ‹ˆλ‹€.
    • ν•˜μ§€λ§Œ μ‚¬μš©μžκ°€ κΌ­ μ§€κΈˆ μœ„μΉ˜μ—μ„œ, μ§€κΈˆ μ‹œκ°„μ˜ μ˜ν™”λ₯Ό κΆκΈˆν•΄ν•œλ‹€λŠ” 보μž₯이 μ—†κΈ° λ•Œλ¬Έμ—, μ‹œκ°„κ³Ό μž₯μ†Œ μ˜΅μ…˜μ„ λ”°λ‘œ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
    • μ‚¬μš©μžλŠ” μ‹œκ°„μ„ μ„ νƒν•˜μ—¬ ν•΄λ‹Ή μ‹œκ°„ 이후에 μƒμ˜ν•˜λŠ” μ˜ν™” λͺ©λ‘λ“€λ§Œμ„ λ³Ό μˆ˜λ„ 있고, 지도λ₯Ό λ“œλž˜κ·Έ ν•˜μ—¬ κΆκΈˆν•œ μ§€μ—­μ˜ μ˜ν™” 및 μ˜ν™”κ΄€ 정보λ₯Ό μ œκ³΅λ°›μ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
  • μ˜ν™”/μ˜ν™”κ΄€ 검색 및 정보 곡유

    • μ‚¬μš©μžλ“€μ€ μžμ‹ μ΄ λ°©λ¬Έν•œ μ˜ν™”κ΄€ ν˜Ήμ€ κ΄€λžŒν•œ μ˜ν™”μ— λŒ€ν•΄ λŒ“κΈ€κ³Ό 평점을 남길 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ˜ν•œ μ‚¬μš©μžλ“€μ΄ 남긴 λŒ“κΈ€μ„ 보고 μ˜ν™”κ΄€κ³Ό μ˜ν™”μ— λŒ€ν•œ 정보λ₯Ό 얻을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
    • μš°μ£Όμ”¨λŠ” μ‚¬μš©μžλ“€μ˜ 보닀 μ‰¬μš΄ 검색을 μœ„ν•΄ 검색어 μžλ™μ™„μ„± κΈ°λŠ₯도 μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • μ’‹μ•„μš” κΈ°λŠ₯κ³Ό μ°œν•˜κΈ°

    • μ‚¬μš©μžλ“€μ€ μœ„μ˜ 검색 κΈ°λŠ₯을 λ°”νƒ•μœΌλ‘œ μžμ‹ μ΄ μ’‹μ•„ν•˜λŠ” μ˜ν™” 및 μ˜ν™”κ΄€μ— λŒ€ν•΄ μ’‹μ•„μš” λ²„νŠΌμ„ λˆ„λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ˜ν•œ, 아직 κ°œλ΄‰ν•˜μ§€ μ•Šμ€ μ˜ν™”μ— λŒ€ν•΄μ„œλŠ” μ’‹μ•„μš” λ²„νŠΌ λŒ€μ‹ μ— μ°œν•˜κΈ° λ²„νŠΌμ΄ μ œκ³΅λ©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ 아직 κ°œλ΄‰ν•˜μ§€ μ•Šμ€ μ˜ν™”λ₯Ό μ°œν•˜λ©΄, 이후에 ν•΄λ‹Ή μ˜ν™”μ— λŒ€ν•΄ μ˜ˆλ§€κ°€ 열렸을 λ•Œ μš°μ£Όμ”¨κ°€ μ‚¬μš©μžλ“€μ—κ²Œ push μ•ŒλžŒμ„ 톡해 μ˜ˆλ§€κ°€ μ‹œμž‘λ˜μ—ˆλ‹€λŠ” 것을 μ•Œλ €λ“œλ¦½λ‹ˆλ‹€.
    • μ’‹μ•„μš”μ™€ μ°œν•œ λͺ©λ‘λ“€μ€ μœ μ €νŽ˜μ΄μ§€μ—μ„œ ν•œ κΊΌλ²ˆμ— λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 빅데이터 뢄석 및 μΆ”μ²œ

    • μ‚¬μš©μžκ°€ μ΅œμ†Œ 10개 μ΄μƒμ˜ μž‘ν’ˆμ— λŒ€ν•΄ 평가λ₯Ό 남기면 κ·Έ ν‰μ μœΌλ‘œ μš°μ£Όμ”¨κ°€ μ‚¬μš©μžμ˜ μ·¨ν–₯을 λΆ„μ„ν•©λ‹ˆλ‹€.
    • μš°μ£Όμ”¨λŠ” λΆ„μ„ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ ν˜„μž¬ μƒμ˜μž‘ μ€‘μ—μ„œ μ˜ν™”λ₯Ό μΆ”μ²œν•΄μ£ΌκΈ°λ„ ν•˜κ³ , μ˜›λ‚  μ˜ν™”μ— λŒ€ν•΄μ„œλ„ μΆ”μ²œμ„ ν•΄μ€λ‹ˆλ‹€.
    • λ˜ν•œ, μš°μ£Όμ”¨λŠ” μ˜ν™” 상세 νŽ˜μ΄μ§€μ— 갔을 λ•Œ, ν•΄λ‹Ή μ˜ν™”κ°€ λ‚˜μ˜ μ·¨ν–₯κ³Ό μ–Όλ§ˆλ‚˜ μΌμΉ˜ν• μ§€μ— λŒ€ν•΄ μΌμΉ˜λ„λ₯Ό μ œκ³΅ν•΄μ£Όκ³  μžˆμŠ΅λ‹ˆλ‹€.
  • PWAλ₯Ό ν†΅ν•œ μœ μ € 편의 κ·ΉλŒ€ν™”

    • μœ μ €λ“€μ€ PWAλ₯Ό 톡해 μš°μ£Όμ”¨λ₯Ό λ‹€μš΄λ°›μ•„ 마치 APP 처럼 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ APP보닀 훨씬 적은 μš©λŸ‰μ„ μ°¨μ§€ν•˜λ©° APPκ³Ό 같은 μ‚¬μš© κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
    • 이 덕뢄에 μš°μ£Όμ”¨λŠ” μ‚¬μš©μžλ“€μ—κ²Œ push μ•ŒλžŒμ„ 톡해 μ€‘μš”ν•œ 정보λ₯Ό μ œκ³΅ν•΄μ€ŒμœΌλ‘œμ¨ μ„œλΉ„μŠ€ μž¬μ‚¬μš©μ„ μœ λ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • 이제 μ‚¬μš©μžλ“€μ€ 예맀 μ˜€ν”ˆμ„ 기닀리며 μ˜ν™”κ΄€ ν™ˆνŽ˜μ΄μ§€λ₯Ό 듀락날락할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€!

ν”„λ‘œμ νŠΈ μ†Œκ°œ

πŸƒβ€β™‚οΈ μ„€μΉ˜ 및 μ‹€ν–‰

λ°±μ•€λ“œ

  1. κΈ°λ³Έ μ‹€ν–‰

    • ./wouldyouci_back

    • venv κ°€μƒν™˜κ²½ μ„€μ • - python 3.7
      
      touch .env 
      
      pip install requirements.txt
      
      python manage.py runserver
      
    • μš°μ£Όμ”¨λŠ” λ°±μ•€λ“œ μ„œλ²„λ₯Ό μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•΄ Redis, Elastic Search 의 μ„€μΉ˜ 및 싀행이 μš”κ΅¬λ©λ‹ˆλ‹€. Redis, Elastic Search κ°€ μ„€μΉ˜ 및 μ‹€ν–‰λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ Djangoλ₯Ό μ‹€ν–‰ μ‹œν‚¬ 수 μžˆμœΌλ‚˜ 일뢀 κΈ°λŠ₯이 μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

    • env νŒŒμΌμ—λŠ” Django 의 secreat key 와 MySQL 연결을 μœ„ν•œ 정보가 λ“€μ–΄κ°‘λ‹ˆλ‹€.

  2. 빅데이터 트레인 파일 μ—…λ°μ΄νŠΈ

    • 배포 버전은 트레인 피클 파일이 ν•¨κ»˜ μ—…λ‘œλ“œ λ˜μ–΄ 있기 λ•Œλ¬Έμ— λ”°λ‘œ ν•™μŠ΅μ‹œν‚€μ§€ μ•Šμ•„λ„ λ˜μ§€λ§Œ, μƒˆλ‘œμš΄ μ˜ν™” 데이터에 λŒ€ν•œ 뢄석 및 μœ μ €μ˜ μ·¨ν–₯ λΆ„μ„μ˜ 정확도λ₯Ό λ†’μ—¬μ£ΌκΈ° μœ„ν•΄ 주기적으둜 피클 νŒŒμΌμ„ μ—…λ°μ΄νŠΈ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

    • ./wouldyouci_back/utils 의 νŒŒμΌμ„ shell 둜 μ‹€ν–‰μ‹œν‚΅λ‹ˆλ‹€.

      from utils.update_train_data import *
      get_genre_info()
      get_genre_train_data()
      get_movie_train_data()
      KNN_train()
      
  3. Elastic Search 인덱슀 μ—°κ²°

    • 검색 κΈ°λŠ₯을 μœ„ν•΄ Movie Model 을 Elastic Search 와 μ—°κ²°ν•˜μ—¬ 인덱싱 ν•©λ‹ˆλ‹€.

    • Elastic Searchλ₯Ό μ‹€ν–‰μ‹œν‚¨ λ’€, λ°±μ•€λ“œ 폴더 상단 (manage.py κ°€ μžˆλŠ” μœ„μΉ˜)μ—μ„œ 인덱슀λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

      python mange.py search_index β€”rebuild
      

ν”„λ‘ νŠΈμ•€λ“œ

  • ./wouldyouci

  • npm install
    
    touch .env
    
    npm run serve
    
  • env νŒŒμΌμ—λŠ” Google API 와 Kakao API λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ key 정보가 λ“€μ–΄κ°‘λ‹ˆλ‹€.

πŸ“• λ¬Έμ„œ λͺ©λ‘

  • ν”„λ‘œμ νŠΈ κ΄€λ ¨ λ¬Έμ„œλŠ” doc ν΄λ”μ—μ„œ λ”μš± ꡬ체적으둜 ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 각 λ¬Έμ„œμ— ν•˜μ΄νΌλ§ν¬λ₯Ό λ‹¬μ•„λ†“μ•˜μœΌλ‚˜ κΉƒλž©μ—μ„œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 기획 (doc/project/)

λ°±μ•€λ“œ (doc/back/)

ν”„λ‘ νŠΈμ•€λ“œ (doc/front/)

  • ν”„λ‘ νŠΈμ•€λ“œ : ν”„λ‘ νŠΈμ•€λ“œμ—μ„œ ν™œμš©ν•œ μ£Όμš” κΈ°μˆ μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. λͺ©μ°¨λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

    1. vue.js / vuex.js / vuetify.js
    2. PWA(Progressive Web App)
    3. google Maps JavaScript API
    
  • Wireframe : κΈ°νšλ‹¨κ³„μ—μ„œ κ΅¬μ„±ν•œ μ™€μ΄μ–΄ν”„λ ˆμž„ ppt νŒŒμΌμž…λ‹ˆλ‹€.

νŒ€ 정보

A406

project_wouldyouci's People

Contributors

jaehyunkim94 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.