개요

빈도분석 미니프로젝트의 후속 프로젝트로 이성용 박사가 작성한 FDM (Finite Differential Method)코드를 파이썬으로 포팅하여 배포하였다. 참고한 코드는 이성용 박사의 저장소에서 확인할 수 있다. 배포는 이전 프로젝트와 같이 now.sh를 이용하였다.

결과물은 https://project.taegon.kr/fdm-std2/에서 확인할 수 있다.

작업내용

빈도분석 미니프로젝트에서 대부분의 문제를 해결하여 어렵지 않게 시작할 수 있었으나, 이번에는 모델을 구성하는 파이썬 파일이 4개라는 점과 자바코드를 포팅하는 과정에서 변수명과 함수명이 동일할 경우 파이썬에서는 서로 덮어쓰기가 가능하다는 점이 주요 이슈가 되었다. 모듈을 불러올때는 최상위 폴더를 기준으로 폴더명과 파일명, 즉 from fdm.FDM import Fdm과 같은 형식으로 참조하였다. 여기서 fdm은 최상위경로에 속한 디렉토리명이고, FDMFDM.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. 결과를 그래프로 도시

관련링크