Project/[약올림] Final Project 19

[초기 세팅 및 배포] Heroku 서버, DB 배포

직접 배포를 하기 전에 Heroku에 대해 간단한 사용방법을 공부하고 정리해두었었다. 그런데 역시나.. 직접 해보기 전까지는 절대 모른다 ㅎㅎㅎ HJ님이 도와주시지 않으셨다면 속이 터져 엉엉 울어버렸을 것이다. 서버 배포와 RDS 사용을 해본 것을 정리해보려 한다. 1. 준비 Heroku CLI설치 (Mac용) #터미널 brew install heroku/brew/heroku 코드상에서 배포환경으로 변경해주어야 할 것은 변경하기 예를 들어 app = create_app(os.getenv('BOILERPLATE_ENV') or 'prod') #'dev'를 'prod'로 2. 서버 배포 - Flask로 구현된 사이트를 Heroku를 통해 배포하기 위한 준비단계 ① 원래 사용하던 가상환경이나 아니면 배포만을 ..

[초기 세팅 및 배포] Flask-RESTX: MVC 폴더 구성 및 Flask REST API 구현하기

딥러닝을 활용한 이미지 처리기능이 있는 앱 서비스를 개발하기로 하고, DB스키마와 API들을 구성하니 우리 팀이 flask로 구현해야할 데이터베이스 모델은 약 5-6개, API는 27개 이다.. 이렇게 많은 API를 만들어야하고 모델도 파일을 분리하여 구현해야겠다고 생각하니 데이터베이스 모델을 한 파일이 아닌 여러 파일에 나누어서 짜되 다른 migrate = Migrate(app, db)시에는 db에 모두 불러올 수 있도록 하는 것 최대한 mvc 폴더 구성을 따라보려고 한 것 을 목표로 두고 방법을 찾아보았다. 나는 일단 MVC 패턴을 최대한 구현하여 각 요청에 대한 응답까지 받아서 잘 작동하는지 확인하고 싶었다. 그래서 복잡한 우리 프로젝트 스키마 전에 계속 예시(14. Python ORM - Flas..

[초기 세팅 및 배포] DB Setting

우리 프로젝트의 DB스키마는 위의 그림과 같다. (※ 현재 2020/12/13일, 프로젝트를 진행하면서 DB구조가 약간 수정되었다. 수정된 DB 스키마는 아래 를 클릭하면 볼 수 있다. ) 더보기 1. 각 테이블 설명 schedules_date: 각 알람 하나하나의 정보를 담고있는 테이블 scedules_common: 한 주기를 가지고 있는 알람 정보 테이블 users: 사용자 정보 테이블 (login 필드는 'social'이면 소셜회원가입을 한 것, 'basic'은 일반 회원가입으로 가입한 것을가 다 나타낸다.) medicines: 약 정보가 담긴 테이블 2. Relationship user 1 - schedule_date n (schedules_udate) user 1 - schedule_common..

[프로젝트 기획 및 준비작업] 마일스톤 정하기, UX/UI 디자인, 컴포넌트 리스트업

이번 프로젝트 역시 프로젝트 진척도 관리, 이슈 관리, 코드 작업, 코드 리뷰 모두 Github을 통해 이루어진다. 그래서 전체적인 방식은 첫번째 프로젝트와 동일하며, 이에 Github 활용과 Gitflow에 대한 내용은 1. [Basic] 프로젝트 Intro, 첫 번째 미팅 2. [Basic] 프로젝트 준비 - 프로젝트 협업을 위한 Gitflow 에 정리해 둔 바 있다. 1. Project관리를 위한 Issue카드 생성 및 마일스톤 정하기 다만 이번에는 마일스톤을 더 촘촘하게 짜고, 최대한 마일스톤 마감기한을 맞출 것을 팀 내 약속으로 정하였다. 그리고 이번에 SH님께서 front, HI님께서 Back, HJ님과 내가 Full stack을 맡게 되면서 기능 구현량이 많은 이슈카드에는 assinee에 미..

[프로젝트 기획 및 준비작업] API를 좀 더 RESTful 하게

프론트엔드와 백엔드가 소통하는 엔드포인트, RESTful API 꼭 정독해보자!!!! 아래는 약 4달전에 commonJS와 RESTful API에 대해 처음 배웠을 때 정리한 글이다. 21. Server & Node - CommonJS/RESTful API REST API를 쓴다고 정해놓고 RESTful 하게 디자인하는 것의 중요성을 많이 들어왔음에도 불구하고 솔직히 말하면 'RESTful'한게 대체 뭔지도 모르고 그냥 '써왔다.' 그러다가 어제 office hour시간에 아니나 다를까 API디자인에 대해 많은 피드백을 받았다. 우선 1. 한 API에 기능이 2개가 겹쳐있다는 것이었고 (예를 들어, 검색/삭제 기능이 순차적으로 이루어져야 할 때, 검색을 위한 API, 삭제를 위한 API로 나눈 것이 아니..

[프로젝트 기획 및 준비작업] 기능 플로우,DB schema

첫번째 프로젝트인 SAFU를 끝내면서 Final 프로젝트때에는 처음부터 이것들을 꼭 지켜봐야지 라고 생각하며 정리해 둔 글(아래 링크)이 있었다. 10. Final Project 때는... 이렇게 더 보충해 봐야지 그 중 첫 번째 프로젝트때 가장 손 가는 부분이 많았으며 커뮤니케이션이 가장 많이 이루어진 부분이 DB schema와 API이었고, 이 둘은 정말 프로젝트 진행 중에도 몇 번이나 수정된다는 것을 알고 있었기에 이번에는 처음부터 훨씬 더 꼼꼼하게 짜야겠다는 생각이 있었다. 이 글은 시기에 해당하는 주에 짠 DB schema, API 기획과 이후 피드백 및 프로젝트 진행 중 깨달은 점을 바탕으로 수정된 사항들을 포함하고 있다. 1. 기능 플로우 초기 기획된 기능 플로우는 를 클릭하면 볼 수 있다...

[프로젝트 기획 및 준비작업] 기술 스택 선정

첫 번째 미팅을 마치면서 다시 한번 구현할 서비스(약올림)의 기능들을 정리하고, 필요한 기술 스택을 '명확한 이유'와 함께 선정하는 시간을 가졌다. 우선 기본적으로 1st Project에서 해본 것들을 제외하고 새롭게 구현해야할 것들과 이를 위해 필요한 것들은 - 어플 서비스임을 감안하여 배포, 컴파일 방법 공부 - 데이터 베이스 세팅 - 크롤링 - 의약품(영양제(건강 보조식품)도 있으면 좋지만 우선 의약품을 우선 하기로 함) 관련 정보 API - 알약 이미지를 통해 품명을 잘 예측 할 수 있도록 이미지 처리 기계학습 - 배포 - 모바일 하드웨어 접근(카메라, 알람, 위젯) - 지도 API 사용법 등이 있다. 그 후 정해진 기술 스택들은 아래와 같다. ※ 아직 학습 중인 우리들이라 각 기술들의 심오한 배..

[프로젝트 기획 및 준비작업] 팀 구성 및 아이디어 선정 (Nov 8, 2020 회고)

팀 구성 및 아이디어 선정 (Nov 8, 2020 회고) 첫 번째 프로젝트였던 SAFU의 발표(Nov 6, 2020)를 마치고 이틀 후(Nov 8, 2020), Final Project의 팀원이 발표되었다. 그리고 Final Project의 아이디어를 나누는 시간을 가졌다. 최종 선정된 아이디어는 내가 제안한 '약 알람 및 정보제공 서비스' 이다. 그런데 이것 저것 하고싶은 것도 많고 구현하고 싶은 기능들도 많아서 일단 모두 적어보니 너무 이도 저도 아닌 느낌이 든다는 피드백을 받았고, 이야기가 진행되는 과정 속에서 해당 서비스의 핵심이 '약 복용 관리 서비스'이면서 '이미지 인식을 통안 약 정보 제공'은 부가적으로 편의기능으로 역할을 하는 것으로 정리가 되었다. 거의 6-7월 쯤 할머니의 수많은 알약들..

[Server] Get Monthly Checked API_String type to Date type (Dec 7, 2020회고)

주기 계산, 1일전, 8일전 등의 날짜 계산 등을 해야하는 일이 생기면서 기존의 DB의 schedules_date 테이블의 year, month, date로 나뉘는게 매우 비효율적이라는 의견이 제시되었다. 1일 전, 8일 전 year, month, date을 3번의 between을 걸어주는게 - 년도가 다를경우, 뒤의 월의 앞의 월보다 작은 경우, - 다음월로 넘어간 경우, 뒤의 날짜 일이 앞의 날짜 일보다 작은 경우 에 제대로 되지 않는 것이었다. HI님과 같이 구현하면서도 이런 점이 걱정된다고 얘기 나누었었고 마침 1일전, 8일전 등의 날짜 계산을 할 때도 그냥 Date 타입의 필드 하나만 있는 것이 좋을 것 같다는 생각을 하고 있었는데, HJ님께서 질문을 주신 김에 year, month, date ..