하지만 메일 하단에 본 초대로 인해 발표 확정이 된 것은 아니라는 말에 뭐 내가 되겠어? 라는 생각으로 신청을 해버렸고
뜨아아아아아아!!!! 발표는 대학교 때도 못했고 하는 것을 좋아하지도 않았던 내가 발표라니…
준비를 빡세게 해야겠다.
독서모임
4주만에 가는 독서모임이다
이번 책은 얆은 시집 ‘지금 알고 있는 걸 그때도 알았더라면’ 과 셰익스피어의 ‘오셀로’ 2권이었다. 독서모임 전에 회사에 잠깐 들렀다가 진영님과 언제나처럼 코코이찌방야에서 카레를 먹고 솔라스로 향했다.
언제나처럼 독서모임에서 많은 이야기를 나누고 왔다.
지금 알고 있는 걸 그때도 알수는 없다. 다만 지금 알고 있는 걸 기반으로 현재에 최선을 다하자
회사
위에서 말한 것처럼 독서모임 가기 전에 잠깐 회사에 놀러갔다. 휴직상태에서 회사에 놀러가는 것은 색다른 경험이었다. 가자마자 모두가 반겨줬고, 빨리 돌아와서 일하라는 농담도 들었다.(전혀 부담되지는 않았다.) 원경님과 헌재님께 발표에 관해서 조언도 듣고, 헌재님한테 청첩장도 받았다 헤헤
언넝 회사에 가고 싶기도하네.
운동
요가를 갔는데 넘나 좋았다. 헬스장은 역시 꾸준히 가는 것이 참 힘든 것 같다.
4주차
휴직의 마지막 주라 그런가 많이 놀러다녔다. 사실 더 놀고 싶었지만 갑작스럽게 다가온 발표덕분에 마냥 놀지는 못한것이 아쉽다 ㅠ
일본라면!
평소에 가보고 싶었던 일본라면 집을 가봤다. 멘야하나비, 라멘트럭, 하카다분코 평일 점심에 먹으러가니 별로 안기다리고 먹을수 있어서 매우좋았다. 헤헤 라멘트럭과 하카다분코에서는 스티커도 얻어왔다. 노트북에 붙여야지
발표 준비
매;ㅈ댜롲매댜;곱;ㅐㅈ댜ㅡㄹ;ㅁㄴ야ㅓ채먄;ㅇ러 망할것같다…
운동
거의 안갔다고 한다…
그래서 한달동안
정말정말 잘 놀고 잘 쉬고 왔다.
사실 휴직이라는 경험을 쉽게 할 수 있을까 생각을 했다. 그것도 단 한달동안.
사실 말이 한달 휴직이지, 한달동안 휴가를 준것이나 마찬가지 아닌가!(물론 무급휴가이긴하지만)
난 정말 좋은 회사에 다니고 있다는 생각을 쉬면서 많이 했다.
쉬고 싶다고 말을 꺼내는 것조차 어려운 분위기의 회사가 있을텐데, 지금 다니는 회사는 그런 면에서는 정말 좋은 분위기가 조성되어 있는 회사인것 같다. 나같은 소심이도 휴직한다고 말을 하다니… 정말정말 직원을 더 많이 생각해주는 회사가 아닌가 싶다. 그렇다고 해서 내가 말을 꺼내기 쉬웠다는 것은 아니지만
작년 이맘때 구직할 시기에 속으로 오래 다니고 싶은 회사에 가고싶다고 생각했는데 정말 오래 다니고 싶은 회사에 와버렸다.
이제 열심히 해야지 일.
급하게 휴직이 결정되서 원래 하기로 했던 태스크들은 다른 분들에게 분배가 되었는데 정말 미안했다. 그래도 다시 출근하고 그 태스크를 가져가서 요즘 하고 있는데 아직 휴직 버프가 남아서 그런가 일이 재밌다.
그리고 지나고보니 정말 공부는 별로 안한 것 같다. 이제 공부도 열심히 합시다. 상반기 동안 Go언어 공부를 해보자. Let’s Go!
$ sphinx-quickstart > Root path for the documentation [.]: > Separate source and build directories (y/n) [n]: > Name prefix for templates and static dir [_]: > Project name: TIL > Author name(s): Yunseop Song > Project version []: 1.0 > Project release [1.0]: > Project language [en]: > Source file suffix [.rst]: > Name of your master document (without suffix) [index]: > Do you want to use the epub builder (y/n) [n]: > autodoc: automatically insert docstrings from modules (y/n) [n]: > doctest: automatically test code snippets in doctest blocks (y/n) [n]: > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: > coverage: checks for documentation coverage (y/n) [n]: > imgmath: include math, rendered as PNG or SVG images (y/n) [n]: > mathjax: include math, rendered in the browser by MathJax (y/n) [n]: > ifconfig: conditional inclusion of content based on config values (y/n) [n]: > viewcode: include links to the source code of documented Python objects (y/n) [n]: > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]: > Create Makefile? (y/n) [y]: > Create Windows command file? (y/n) [y]: n
Finished: An initial directory structure has been created.
You should now populate your master file ./index.rst and create other documentation source files. Use the Makefile to build the docs, like so: make builder where"builder" is one of the supported builders, e.g. html, latex or linkcheck.
$ make html Running Sphinx v1.6.5 making output directory... loading pickled environment... not yet created building [mo]: targets for 0 po files that are out of date building [html]: targets for 1 source files that are out of date updating environment: 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done writing output... [100%] index generating indices... genindex writing additional pages... search copying static files... done copying extra files... done dumping search index in English (code: en) ... done dumping object inventory... done build succeeded.
Build finished. The HTML pages are in _build/html.
그리고 _build/html/index.html을 열면 다음처럼 깔끔한 페이지를 볼 수 있다.
하지만 이 상태라면 마크다운 문서는 보여지지 않는다. Sphinx에서 마크다운을 사용하려면 문서에 나온대로 recommonmark라는 패키지를 사용해야한다.
일단 recommonmark를 설치하자.
1
$ pip install recommonmark
그리고 conf.py 파일을 수정하자.
1 2 3 4 5 6 7
from recommonmark.parser import CommonMarkParser
source_parsers = { '.md': CommonMarkParser, }
source_suffix = ['.rst', '.md']
그리고 Sphinx에서 바라보는 master_doc인 index.rst에 toctree를 추가해야한다. index.rst에 toctree를 추가하는 이유는 Markdown에서 지원을 하지 않기 때문에 약간의 편법…(사실 어떻게 하는지 잘 모르겠다.)
1 2 3 4 5 6 7 8
.. toctree:: :caption: TOC: :glob: :titlesonly:
mysql/* python/* vim/*
이렇게 추가를 하고 다시 make html을 하면 TOC가 제대로 추가된 것을 확인할 수 있다.
배포를 해봅시다.
Sphinx를 사용해 TIL 페이지는 완성되었다.
이제 배포만 남았는데 어디로 어떻게 배포할 지를 결정해야 했는데 구글링을 해보던 중 아주아주 좋은 것을 발견했다.
Python WSGI Application을 배포하기 떄문에 코드의 변경없이 Django, Flask와 같이 WSGI Application을 그대로 배포할 수 있다.(내 생각에 이게 가장 큰 장점이 아닐까 싶다.)
서버리스로 가기 위한 최소한의 셋팅을 다 알아서 해준다. 프로젝트를 압축하여 Lambda에 배포하고 API Gateway에서 Lambda를 사용할 수 있게 알아서 설정해준다. 또한 몇가지 설정만 추가한다면 다른 AWS의 서비스도 사용가능하다.
API Gateway의 Stage를 구성하기가 매우 쉽다. 그냥 설정파일에 stage용 설정을 추가하기만 하면 끝이다. 도메인까지 설정해서 쓰면 요긴하기 쓸 수 있다.
하지만 뭐든 그렇듯 물론 장점만 있지는 않다. 내가 생각하는 Zappa의 단점은
모니터링이 힘들다. New Relic을 붙여서 사용하려고 했더니 뭔가 로그가 불규칙적으로 들어온다. 문제가 뭔지 잘 모르겠다.(해결방법을 아시는 분 있다면 공유좀…)
그래서 AWS X-Ray를 쓰려했더니 Node.js, Java, .Net만 지원하다고 한다. 그래서 찾아보니 xrayvision이라는 프로젝트가 있어서 사용 중이다. 하지만 X-Ray가 모니터링 하기에 뭔가 부족한 느낌의 서비스인 것 같다.
아직 성숙한 프로젝트가 아니다. 그렇다고 막 버그 투성이인 프로젝트는 아니다. 그럼에도 단점에 적은 이유는 Zappa로 배포하고 테스트를 진행하던 중 뭔가 안되는 부분이 있었는데, 알고보니 아직 지원을 안하는 것이었다. 하지만 다행히(?) 내가 삽질하던 그즈음에 누군가 PR를 보냈고 머지 되어 지금은 잘 사용하고 있다. 이런것을 보면 오히려 좋은 오픈소스 프로젝트에 기여할 기회가 많다 고 생각할 수도 있다.
Zappa is a system for running server-less Python web applications on AWS Lambda and AWS API Gateway. This `init` command will help you create and configure your new Zappa deployment. Let's get started!
Your Zappa configuration can support multiple production stages, like 'dev', 'staging', and 'production'. What do you want to call this environment (default 'dev'):
AWS Lambda and API Gateway are only available in certain regions. Let's check to make sure you have a profile set up in one that will work. Okay, using profile default!
Your Zappa deployments will need to be uploaded to a private S3 bucket. If you don't have a bucket yet, we'll create one for you too. What do you want call your bucket? (default 'zappa-8wjmc0weu'):
What's the modular path to your app's function? This will likely be something like 'your_module.app'. Where is your app's function?: app.__init__.app
You can optionally deploy to all available regions in order to provide fast global service. If you are using Zappa for the first time, you probably don't want to do this! Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]: