개요
빈도분석 미니프로젝트의 후속 프로젝트로 이성용 박사가 작성한 FDM (Finite Differential Method)코드를 파이썬으로 포팅하여 배포하였다. 참고한 코드는 이성용 박사의 저장소에서 확인할 수 있다. 배포는 이전 프로젝트와 같이 now.sh
를 이용하였다.
결과물은 https://project.taegon.kr/fdm-std2/에서 확인할 수 있다.
작업내용
빈도분석 미니프로젝트에서 대부분의 문제를 해결하여 어렵지 않게 시작할 수 있었으나, 이번에는 모델을 구성하는 파이썬 파일이 4개라는 점과 자바코드를 포팅하는 과정에서 변수명과 함수명이 동일할 경우 파이썬에서는 서로 덮어쓰기가 가능하다는 점이 주요 이슈가 되었다. 모듈을 불러올때는 최상위 폴더를 기준으로 폴더명과 파일명, 즉 from fdm.FDM import Fdm
과 같은 형식으로 참조하였다. 여기서 fdm
은 최상위경로에 속한 디렉토리명이고, FDM
은 FDM.py
라는 파일명, 그리고 Fdm
은 class명이다.
변수명과 함수명이 겹치는 경우에는 멤버 변수와 로컬 변수의 이름을 수정하여 중첩이 되지 않도록 변경하였다.
GitHub와 프로젝트를 연결하면, commit되면 자동으로 배포가 실행된다. 이 때 url은 프로젝트이름-git-master.유저아이디.now.sh
가 된다. 따라서 본 프로젝트의 url은 rse-api-git-master.taegon.now.sh
이다. 또한 사용자가 직업 올리는 경우에는 rse-api.taegon.now.sh
로, 깃헙으로 올릴때는 전자와 후자 모두 alias 되므로, 테스트용 프론트엔드의 호출주소는 후자를 선택하였다.
(2019.05.07. 업데이트) 결과를 히트맵으로 보여주도록 작업을 수행하였다. API는 json으로 결과를 돌려주도록 수정하였고, 결과물을 plotly.js
를 이용하여 히트맵을 그렸다. 슬라이더바는 부트스트랩 슬라이더바 라이브러리를 이용하였다.
배운 점
로컬 작업환경을 갖추지 않고, github 푸시만으로 배포/테스트를 수행하니까, 깨지는 커밋도 많고, 주기가 너무 길어지는 문제가 있었다. 결국 로컬 환경에서 __main__
함수를 만들어서 테스트 후, now-cli
를 이용하여 배포하였다. 최종적으로 구동을 확인한 후 저장소에 푸시하였다.
now에 배포할 때, python-flask
예제의 now.json
파일은 모든 파이썬 코드를 빌드하도록 설정되어있는데, 웹에 공개할 코드만 빌드하면 된다. 본 프로젝트에서는 **/index.py
만 빌드하도록 설정하였다. 명시적으로 파일명을 적어두지 않더라도, 내부적으로 참조하는 파일은 문제없이 바인딩이 된다.
에러가 발생할 경우, 로그를 확인할 수가 없었다. 시간내서 로그 확인하는 방법을 알아두고, 정리해야겠다.
히스토리
- 2019.05.02. 최초버전 배포
- 2019.05.04. 최초버전 문서화
- 2019.05.07. 결과를 그래프로 도시
Comments