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

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

마크다운 문서화 도입기

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

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

MS Community Open Camp 2016

오키나와 여름휴가를 마치고 이전에 신청해봤던 MS Community Open Camp 2016에 참가하게 되었다. 광화문이라는(언제 이사를 간 거야, MS) 먼 곳을 가기 위해서 많이 고민했지만, 가기를 잘했다는 생각이 든 세미나였다. Keynote 2: 마이크로소프트, 리눅스와의 어색하지 않은 동거, 김명신/임백준 build 2016 에 대한 요약이었다고 해도 과언이 아니지만, 사실 리눅스를 지원한다는 것에 대해서 어렴풋이 들었지 어떤 식으로… Read More

tailon 으로 로그파일 웹에서 보기

서버에 있는 로그를 웹상의 타인에게 보여줘야 할 경우가 있는데(가급적 이런 경우는 좋지 않은 상황인 경우이다.) 어떻게 할까 찾아보다가 python 으로 된 tailon 이라는 쉽게 커맨드 명령어로 띄울 수 있는 툴이 있어서 소개한다. https://github.com/gvalkov/tailon http://tailon.rtfd.org/ 특별한 새로고침 없이 자동으로 로그가 올라오고 GREP 이나 AWK를 항목이 UI상에 있기 때문에… Read More

Upstream and Syncing a fork

위와 같은 경우가 많이 발생을 한다. 하나의 github 프로젝트에서 내가 뭔가의 수정을 위해서 fork 를 하고, 수정을 해서 Pull Request 를 날린후, Merge 가 된다. 그리고 다른 사람이 원래의 프로젝트에 커밋을 하면 내가 fork 뜬 프로젝트에서는 해당 커밋들을 가져와야 한다. 그래야 최신 상태에서의 기여가 가능하니까. 어떻게 해야할까? 찾아 보니 Upstream 이라는 개념이 github 에 있어서… Read More

xcode without storyboard

이상하게도 난 여전히 스토리보드가 쉽지 않다. 코드를 통해서 UIViewController 를 만들어내고 호출하고 이동하는 것들이 자연스러운 구시대 유물인셈. storyboard 없이 프로젝트를 시작하려면 일단 simple view application을 선택하고, AppDelegate.m 에서 아래와 같이 코딩해주면 된다. 그리고나서 Info.plist 에 가서 "Main storyboard file base name", "Launch screen interface file base name" 항목 부분을 지워주면 된다. 그런데 이렇게하고… Read More

[ELK] logstash

개요 자바 기반으로 다양한 로그들을 수집하고 처리해서 내보낼수 있음. 다양한 플러그인(input, filter, output) 을 제공하고 있는 것이 최대의 장점. 기본 실행 logstash -f <conf file> Conf 파일 내 구조 input, output 은 필수파라미터, filter 는 옵션 input 은 데이터소스에서 가져오는 플러그인 filter는 해당 데이터를 원하는 대로 변경하는 플러그인 output 은 Data Destination… Read More

wakatime, Time tracking for programmers

트위터에서 다른 개발자분이 wakatime 을 적용해서 얼마나 코딩을 했는지에 대해서 측정하고 있다는 애기를 들어서 wakatime을 가입하고 적용을 해봤다. 일단 가입을 하고 나면 내가 사용하는 개발자툴, IDE에 해당 플러그인이나 세팅을 해야한다. 주로 내가 사용하는 툴들이 대부분 있었다. 적용한 툴들은 Pycharm, Notepad++ 이었고 두 개의 툴에 모두 세팅을 했다. Pycharm 으로 파이썬 웹 개발을 주로 개발을 하기… Read More

polyfill & modernizr

(adsbygoogle = window.adsbygoogle || []).push({}); 이렇게 정리하게 된 계기는 이전에 올린 console.log() 의 IE7에 대한 이슈때문에 시작이 되었다. @sh84ahn https://t.co/aOTeHRNAIJ 구버전 IE에서도 서비스를 사용한다면 이런 폴리필도 예비로 넣어두는 것도 좋을 것 같아요. 디버그 플래그를 같이 넣는다거나 번들링 도구로 제거하는게 가장 좋겠지만요 ㅎㅎ — 용균 (@haruair) 2015년 12월 22일 위와 같이 haruair 님이 폴리필에… Read More

celery states

아래는 celery 의 state 인데, 보통 celery-flower 조합으로 많이 쓰기 때문에 flower를 쓰다보면 조회 조건중에 states 가 있어서 아래와 같이 정리해본다. 즉시 실행하라고 명령하면 STARTED-SUCCESS 또는 FAILURE 로 표시되겠지만, countdown을 주어서 실행한 경우에는 즉, 어떤 예약을 거는 경우에는 해당 task가 RECEIVED 로 표시되게 된다. 그리고 flower상에서 RECEIVED 인 task들은 아직 미 실행 상태이기 때문에 REVOKED(… Read More

2015 되돌아보기

잘 한해를 정리하는 편이 아니다. 어느새부터 뭔가 그런건 낯간지럽기도 하고. 그런데 점점 더 나이가 들면 들수록 더 그렇게 되는것 같아서 의식적으로라도 글을 쓰면서 정리하고자 한다. 지극히 개인적이고, 나를 되돌아보는 글임을 밝힌다. 회사일 결제 관련 회사에 다니고 있고, 올해는 무난하면서도 결제관련 흐름에 대해서 조금 적응하게 된 시기가 아닌가 싶다. 하반기 프로젝트를 하면서 조금 답답하고 힘든 일이… Read More

github isometric contribution graph

1년동안 한 일에 대한 github contribution graph 를 보고 있는데 구글을 검색하다 보니 3차원? 틱한 그래프를 발견, 링크를 들어가보니 isometric graph 라고 한다. 일종의 플러그인, 익스텐션 같은것인데 아래의 링크에서 설치하고 나면, github 내 본인의 contribution graph가 있는 아이콘이 생기고 해당 아이콘을 누르면 아래와 같은 그래프 형태가 나온다. 설정해놔도 재밌을듯.… Read More