이번 주 개발 및 공부 정리 - 03/52

Reading time ~2 minutes

SW개발병을 도시과인 이유로 1점차로 떨어져서 후반부에 생활이 많이 틀어졌다. 지금은 다시 회복했지만 고민거리가 늘었다. 재밌는 책이 곁에 많아 독서가 늘 즐겁다. 새로운 라이브러리를 만드는데 첫 시도라 설레고 여러가지를 최대한 시도해보려한다.

공부 📖

  • 위험한 과학책, 사이언스 앤 더 시티, 내 문장이 그렇게 이상한가요? 를 읽고있다.
  • 위대한 매일 영어 쌩2 책으로 영어 공부를 시도하고 있다.
  • 좋은 API, 라이브러리를 만드는 법에 대해 탐구하고 있다.
  • chatterbox의 기반을 다지며 여러 시도를 하고있다. pipenv를 쓰고 travis-ci와 codecov를 수월하게 세팅했고 pytest, pylint를 tox로 돌리고있다. md만 써보다가 rst를 써보려했는데 영 써먹을 포맷이 아닌 듯 해서 다시 md로 회귀했다. setup.py도 처음 구성해봤는데 chatterbox가 이미 pypi에 등록이 되어있어서 곤란했다. 사실 만들기 전에 조사해봤어야 하는건데… 그래서 일단 chatterbox이되 이름은 chatterbox.py로 등록시켰다. 이번엔 TDD로 프로젝트를 채워보려한다.

개발 🖥

HaloNotebook Test case 추가하기

test_halo_notebook.py를 추가했다. jupyter widget을 직접적으로 테스트하는건 어려운지라 어떻게 하나 고심했다. HaloNotebook은 spinner를 표현하기 위해 ipywidget의 Output 클래스를 멤버 변수로 갖고 display메소드로 해당 컴포넌트를 보여주는데 이 Output 클래스는 내부적으로 outputs 튜플에 text를 쌓아가는 구조로 되어있다. 그래서 테스트 클래스의 _get_test_output 메소드를 적당히 바꿔 테스트 케이스를 많이 고치지 않고 초기 목적을 달성할 수 있었다. 이로써 HaloNotebook의 커버리지는 92%가 되었다. 프로젝트 오너가 바빠서 그런지 아직 어떠한 리뷰도 받지 못한 상태다.

chatterbox 구상

일단 초기에는 컨셉부터 구상했다.

  • 1번 컨셉 구상을 통해 state machine을 활용하기로 했다.
  • 2번 컨셉을 통해 Flask web app의 wrapper가 아닌 별개의 helper library로 방향을 잡았다. 이렇게 하면 Django와도 호환이 되지 않을까 기대한다.
  • 3번 컨셉으로 Web app이 request를 받았을 때 이를 helper function으로 어떻게 넘겨주는게 가장 깔끔해보일지 고민했는데 Flask처럼 Request를 통해 가져오기보다는 헬퍼 함수의 인자에서 명시적으로 선언해주는게 직관적이리라 생각했다. 또한 uwsgi나 gunicorn같은 게이트웨이를 통해 웹 앱을 띄울 때 worker가 2개 이상일 때 문제가 있을 것 같았다. helper function에서 카카오톡 자동응답 API에 명시된 json 객체를 반환해야 하는데 어떤식으로 반환하는게 좋을지 고민했다. 일단은 두 방식 모두 구현하고자 하고 Text() + Keyboard(), Message() 어느 방식으로 반환해도 동작하게끔 하려한다.
  • 4번 컨셉을 보면 어떤 방식이 좋을지 고민한 흔적이 여럿 남아있다. shared value 때문에 redis를 사용하기로 했고 home keyboard의 동작, request data의 unpack 방법, 특히 text input을 받을 때 state를 유지하고, 재입력 받는 부분에서 yield를 쓰려고 하는데 이게 제일 pythonic하지 않을까 싶다. 일단 이정도로 대충 얼개는 거의 다 잡혔는데 좀 더 세부적인 면을 고민해야겠다.

다음주 계획 📅

이사 때문에 바쁠듯하여 일단 없다.

텐서플로와 시퀀스 모델을 배우기 좋은 <딥러닝의 정석> 리뷰

본 게시글은 한빛미디어의 나는 리뷰어다 이벤트로 제공받은 [딥러닝의 정석](http://www.hanbit.co.kr/store/books/look.php?p_code=B5128867520) 책에 대한 리뷰입니다.![]({{ site.baseur...… Continue reading

기술 문서 정리 - 06

Published on March 24, 2018