dev-meetup.github.io 개발기

개발자 세미나는 예전보다 훨씬 많이 자주 열리고 있다. 컨퍼런스 단위는 사실 1년에 많이 열리진 않지만, 어떤 단체나 회사에서 주도하기 때문에 홍보가 잘되고 많은 사람들이 참여하기 마련이다. 그렇지만, 밋업이나 세미나 그런 단위는 커뮤니티안에서만 주로 공유가 되고 외부 개발자가 알기가 어려웠다. 물론 찾는 노력을 하면 되지만, 모든 커뮤니티/사이트에 대한 워치독(watchdog)이 될 수는 없다. dev-meetup.… Read More

AWSKRUG 신년 콘퍼런스 - re:Invent 특집

올해 첫 세미나/컨퍼런스로 [AWSKRUG 신년 콘퍼런스 - re:Invent 특집] 을 선택했고, 다녀왔다. AWS 를 사실 회사에서나 개인 프로젝트를 할때에도 부담되는 부분이 있어서 사용하진 않고 있지만, 앞으로는(언젠가는) 더 AWS, AZURE 등을 도입하는 방향으로 갈 것이라고 생각했기 때문에 신청하게 되었다. AWS RE:INVENT 신규 서비스 정리 (윤석찬) 전반적으로 새로나온 서비스에 대한 간략한 소개가 주를… Read More

pipreqs - requirements 뽑기

virtualenv 를 사용하면 사실 좋긴 한데, 그게 아닌 경우에 대해서 개발 서버에서 작업했을때 requirements.txt 를 뽑기가 어렵다. requirements.txt 가 필요한 이유는 서버에 세팅시 pip install -r 옵션을 통해서 한번에 라이브러리를 설치할수 있기때문에 필수이다. pipreqs 를 사용하면 특정 프로젝트 하위에서 사용하는 라이브러리 리스트를 추출할 수 있다. virtualenv 를 도입하기 힘든 환경에서 사용하면 좋을 듯.… Read More

[Ghost] 블로그 연관포스트 기능 추가하기

ghost 블로그 툴을 선택해서 사용한지도 꽤 되어 가는데, 마크다운(markdown)을 이용한 글쓰기 툴을 제공한다는 점 그리고 서비스와 설치형이 모두 있다는 점에서 선택했지만, 기존에 사용했던 티스토리, 워드프레스에 비해서 몇몇 기능이 없는 것은 사실이다. 카테고리를 지정하거나, 사이드바에 있는 다양한 기능들은 사실상 ghost 블로그에서는 찾아 보긴 힘들다.(서비스 형에서는 어떤지 모르겠다.) 이번에 블로그에 추가한 기능은 해당 포스트와… Read More

친절한 미용사

밥을 급히 먹고 나오는데 주노헤어가 정면에 있었다. 동료들에게 머리를 자르고 들어가겠다고 얘기하고 미용실로 들어갔다. 찾으시는 디자이너가 있냐는 말에 그냥 머리 자르러 왔다고 했다. 한 디자이너가 나에게 와서 이것저것 묻는다. 나는 그냥 깔끔하게 잘랐으면 좋겠다고 얘기 했다. 지금 머리는 너무 길고 특히 앞머리가 길어서 눈을 찌른다고. 커트 가격 애기를 들었을 때 약간 후회했다. 원래 다니던 곳보다… Read More

(flask) jsonschema 를 이용해서 request.json 검사하기

API에서 파라미터의 유효성 검사는 필수적인 요소이긴 하지만, 개발자로서 여간 귀찮은 일이 아닐 수 없다. API의 양이 많을수록 할 일은 많아진다. 세세하게 체크할 부분은 해야하지만 기본적으로 파라미터 유무, 파라미터의 데이터 형을 체크하는 부분이 필요했다. API는 기본적으로 JSON 을 POST로 받는 식으로 구성되어 있어서 JSON을 검증하는 부분이 필요했다. JSON 검증을 위해서 jsonschema 를 활용할 수 있다는 것을… Read More

기술 링크 정리 #3 - 2016/12/28

파이썬 관련 파이썬 코리아 격월 세미나 파이썬 코리아의 세미나는 자주 열리지 않는 편인데, 12/17일에 격월 세미나가 열렸었다. 다음번 격월 세미나를 기다려본다. 웹 개발, 왜 어려운가? 오픈소스 네이밍 특징들 파이썬을 만난지 100일♥째 Python 3.6.0 is now available! Python 3.6이 릴리즈 되었다. 관련해서 정리한 내용을 확인해보자. 기타 Git 100% 활용하기: 협업을 위한… Read More

(flask) JSON 데이터 받기 및 예외처리

(adsbygoogle = window.adsbygoogle || []).push({}); flask 에서 json 데이터를 받아서 처리할 때 reqeust.get_json() 혹은 request.json 을 이용할 수 있는데, mime type을 application/json 타입으로 보내는데, {} 없이 빈 JSON 문자열 조차도 안 보내는 경우가 있을수가 있다. from flask import Flask from flask import request app = Flask(__name__) @app.route("/test", methods=['POST']) def test(… Read More

기술 링크 정리 #2 - 2016/12/20

파이썬 관련 Python 3.6: A quick look 지난주 Python3.6.0 RC1 이 나왔다고 했는데, Pycharn 2016.3 버전에서 Python3.6을 어떻게 지원하고 있는지에 대해서 설명하고 있다. 특히 f-string 에 대해서 Pycharm에서 쓰기 쉽게 지원하고 있는것을 보여준다. PYCON PH 2017 CDO 파이콘 필리핀 2017의 티켓판매를 시작했다고 한다. 파이썬코리아 댓글에서 열리는 섬은 여행 금지구역이고 장소는… Read More

기술 링크 정리 #1 - 2016/12/09

파이썬 관련 Python 3.6.0 RC1 Python3.6.0 Release Candidate1 에 대한 내용을 담고 있다. 에 가면 좀더 자세한 내용을 볼 수 있다. CPython 구현 개선에 대한 내용이 있는데, dict 타입을 재구현해서 PyPy와 비교해서 더 빠르다고 하고, Python3.5 와 비교해서 20% ~ 25% 향상 되었다고 한다. 포맷 문자열이 아래와 같이 가능해진다. >>… Read More

audio5.js 를 이용한 음원 재생 및 제어

이번 프로젝트 하면서, 주문이 들어왔을 때 웹상에서 특정 소리로 사용자에게 알려줘야하는 부분이 있었는데, 음원 재생관련 라이브러리를 찾아 보다가 괜찮은 것이 있어서 예제코드를 남긴다. http://zohararad.github.io/audio5js/ 좀더 위의 링크에 들어가서 보면 세세한 조절을 할 수가 있도록 제공하고 있다. 예를 들면, seek 기능을 제공하고 있기도 하다. 위의 예제를 쓰고 나서 추가적으로 요청사항이 들어와서 특정… Read More

ModHeader를 이용해서 쉽게 Header 넣기

https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj 모바일 앱내 웹 뷰에 들어갈 웹 페이지에는 커스텀 헤더를 일부러 넣곤 한다. 예를 들면 다른 곳에서 호출하지 못하도록 특정 헤더값을 앱과 웹이 약속을 한채로 보내고 인증이 된 클라이언트에서만 보여지게 하기 위해서인데, 테스트/개발을 할때는 서버 개발자가 본인의 컴퓨터, 브라우저에서 해야하기 때문에 불편하다. 크롬의 ModHeaher 플러그인은 그런 불편한… Read More

마크다운 문서화 도입기

최근에 신규 프로젝트를 들어가면서 DB와 API 설계를 담당하고 있는데 일반적으로 DB 설계는 설계 후 산출물을 가지고 검토를 받고, API는 설계 산출물을 가지고 클라이언트 개발자(앱과 웹) 전달해서 연동할 때 사용하도록 하는 식으로 진행이 된다. 다이어그램이나 그런 것들도 있겠지만, 테이블 상세나 API 상세는 워드 문서(.docx)로 작성되고, 그것을 나 역시 받아서 구현하는 쪽에서만 사용했었다. 그러나,… Read More

SQLAlchemy with StoreProcedure

(adsbygoogle = window.adsbygoogle || []).push({}); 제목자체가 역설적이지만, 이렇게 써야 할때가 있다. 예를들면, 레거시를 다시 재개발하는 수준에서 특정 프로시저는 단순히 db를 조회하는 것 이상의 프로그래밍적인 기능을 가지고 있을때가 있다. 또한, 다른 이유로 ORM인 SQLAlchemy와 저장프로시저를 혼합해야할 때가 있는데, 그럴때 따로 저장프로시저용 코드를 쓰기 보다는 SQLAlchemy 를 이용해서 프로시저를 실행하고 값을 가져오는 것이 좋다. 개인적으로 SQLAlchemy를 써서 좋다고… Read More

PyconAPAC 2016 후기 슬라이드

Pycon APAC 2016 후기 from SeongHyun Ahn 파이콘 관련 글을 쓰고 있는 중인데, 위의 슬라이드는 회사에서 팀내에 공유한 내용이다. 별 다른 후기가 있는것은 아니고 이런 행사도 있다는 것, 그리고 어떤 행사, 어떤 특징을 가지고 있는지에 대해서 소개한 슬라이드이다. 팀내에서 이런 슬라이드를 가지고 공유한 이유는 가보지 못한 개발자들에게 좀더 이런 컨퍼런스들이 열리고 있고, 현재 어떤 주제들이… Read More

flask-runner

Flask 에서 개발을 할 때, Debug 옵션을 키고 app 에 기본 내장된 개발서버를 사용한다. 그런데 파일을 수정하면 재시작하는 기능은 좋은데, host 나 port 를 지정해 놓고 사용하다가 변경할때 귀찮은 부분이 있다. 특히 port 같은 경우 특정포트를 지정해두면 꼭 다음날에 누군가 쓰고 있어서 다시 수정해서 실행해야 하는 번거로움이 있다. flask-runner 는 커맨드라인으로 Flask 앱을 실행할 때… Read More

Letsencrypt & nginx ssl setting

Letsencrypt 를 적용해 보기로 하고 이 블로그는 Apache 로 운영되고 있어서 certbot-auto 을 이용해서 --apache 옵션을 주고 했는데 뭔가 이상하게 잘 안되었다. Apache 의 설정 문제인지 모르겠지만, 회사에서 가서 후임에게 물어보니 Nginx 는 잘 되었다고 해서 일단 nginx 로 바꾸고 certonly 옵션을 주고 인증서만 만들었다. 그리고 아래와 같이 /etc/nginx/sites-available 에 설정파일을 두고 설정을… Read More

Python flake8 사용하기

pep8, flake8 등의 툴이 파이썬 코드의 정적검사를 하는 툴이다. $ python -m pip install flake8 flake8 --count --exclude ./tests,./docs --ignore E501,F401 # --count : 위반 개수 표시 # --exclue : 특정 디렉토리 제외, 쉼표로 구분 # --ignore : 무시 규칙 명시, 쉼표로 구분 프로제트 디렉토리 상에서 flake8 명령어를 통해서 위와 같이 입력하고 수행하며 되는데, 특정 규칙을 제외하거나 특정 디렉토리를 제외할… Read More

docxtpl 를 이용한 문서 자동화

엑셀의 경우, 백오피스나 CMS 등에서 import/export 에 사용하기 때문에 기능구현 할 때 XlsWriter 를 이용해서 구현했던 적이 있었다. 그에 비해서 워드 문서를 생성해 내는 작업은 별로 없었다. 발단은 이렇다. 로그 분석을 해서 통계를 내고, 워드 문서파일의 보고서 형식으로 만들어서 올리는 작업을 매월 하고 있는데, 통계를 내는건 스크립트로 해결을 해왔는데, 그 시간보다 보고서를 작성하는 시간이… Read More

글을 못쓰는 변명

짧게 쓴다. 거의 글을 못 쓰고 있는데 개인적으로 바쁜일도 있고, 글을 써둔건 많은데 마무리가 안된건 많아서 금주 수요일 이후부터 다시 써놓은 글을 차례대로 올릴 예정이다. 글을 쓰는 것에 대한 부담이 있었는데, 이제는 좀 눈치 안보고 내 멋대로 예전처럼 써보고 싶다. 더이상 길게 쓰면 또 못 올릴것 같아서 이만. ps) 2일만 참자… Read More