flask - json_encoder 지정하기

API 상에서 JSON 으로 응답을 내보내기 위해서는 데이터를 Json Serialize(직렬화)를 해야한다. 그런데 json 에서 표현할 수 있는 데이터는 한정이 되어 있어서 각 프로그래밍 언어에 있는 모든 타입을 지원하지는 못한다. Decimal 형도 그런 예 중 하나인데 파이썬에서는 json.dumps()를 통해서 주로 직렬화를 하고 그 함수의 기능 중에 cls 인자를 통해서 JSONEncoder 를 구현한… Read More

Python - 파이썬 범위 규칙에 대한 잘못된 이해

본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다. Common Mistake #4: Misunderstanding Python scope rules 파이썬 범위 규칙에 대한 잘못된 이해 파이썬 범위 해석은 LEGB(Local, Enclosing, Global, Built-in)에 기초하고 있다고 알려져 있다. 충분히… Read More

Python - 예외처리 블록에 대한 잘못된 파라미터 지정

본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다. Common Mistake #3: Specifying parameters incorrectly for an exception block 예외처리 블록에 대한 잘못된 파라미터 지정 try: l = ["a", "b"] int(l[2]) except ValueError, IndexError: # To… Read More

Python - 잘못된 클래스 변수의 사용

본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다. Common Mistake #2: Using class variables incorrectly 잘못된 클래스 변수의 사용 class A(object): x = 1 class B(A): pass class C(A): pass print A.x,… Read More

Security bugs on Windows servers: Flask 0.12.2 and Werkzeug 0.12.2 released

원문 : https://www.palletsprojects.com/blog/flask-werkzeug-0122-security-release/ Flask 0.12.2, Werkzeug 0.12.2 가 릴리즈 되었는데 이것들은 safe_join 함수에 대한 보안관련 버그수정을 포함하고 있다. 이 문제는 Windows 서버에서 application 을 운영시에 발생한다. Details David Lord가 이 버그를 발견했고, 개인 이메일로 다른 관리자에게 알렸다: While going through PR #2059 about safe_join, I… Read More

Python - 함수 디폴트인자의 잘못된 사용

본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다. Common Mistake #1: Misusing expressions as defaults for function arguments 함수 디폴트인자의 잘못된 사용 def foo(bar=[]): bar.append("baz") return bar print foo() print foo() print… Read More

git feature branch 모델 프로젝트 적용기

원래 사내에서 svn을 사용하고 있는데 자회사쪽과 작업을 하면서 그쪽 개발자를 구워 삶아서(홀려서) svn 이 아닌 git을 저장소로 사용하기로 하고, github 를 쓰고 싶었지만 작업자가 2명이라서 yona H2 embedded 버전을 사용하기로 했다. 오픈소스에 기여하거나 혹은 만들거나 할때 master 브랜치 외에 develop 브랜치 까지만 써보긴 했고, git feature branch 모델은 실제 업무에 사용해 본적은 없었다. 고도화… Read More

PROGRESSIVE WEB APP ROADSHOW 2017 KOREA

커리어가 웹의 백엔드와 프론트 언저리에 걸쳐져 있는데 확실히 프론트엔드 개발쪽은 변화가 굉장히 빠르게 일어나고 있다는 것을 느낀다. AMP, PWA 에 대해서 도데체 뭔지 그리고 지금 결제 관련 일을 하고 있기 때문에 WebPaymentAPI 에 대해서 좀 더 알고자 참가하게 되었다. 행사 준비 자체는 잘 되었던것 같다. 스타벅스 커피도 있었고, 오후에는 도넛을 나눠줘서 다들 즐겁게 먹으면서 봤던것… Read More

pycharm - 화면 모드

pycharm 에서는 3가지 화면을 다르게 볼수 있는 것을 제공하고 있다. 그래서 특정 상황에 맞는 화면모드를 사용 할 수가 있다. Full Screen Presentation Mode Distraction Free Mode FullScreen 은 말 그대로 전체화면으로 보기다. 이 모드를 선택하면 단순히 현재보는 화면에서 상태표시줄이나 맥의 경우 dockbar 가 없어지고 pycharm이 전체화면으로 보여지게 된다. Presentation Mode 는 기본 뷰에서 프로젝트 뷰나… Read More

pycharm - bookmarks 북마크

pycharm 에는 북마크 기능이 있다. 많은 파일과 소스 파일내에 특정 위치를 빠르게 이동하기 위해서는 북마크 기능이 필수적이다. F11(윈도우 기준) 키를 눌러서 현재 있는 위치에 북마크를 지정 할 수 있다. 중요한 점은 소스파일 뿐만 아니라 project 뷰 안에 파일을 선택한 상태에서도 F11을 통해서 북마크에 추가 할 수가 있다. Shift+F11 를 누르면 현재까지 북마크한 파일이나… Read More

늦은 저녁을 먹다.

퇴근을 해서 늦은 저녁을 먹었다. 밥상머리에 앉아서 아내가 차려준 저녁을 먹으면서 왜 늦게 퇴근을 한 것일까? 왜 내가 지금 밥을 먹고 있는지 생각하게 되었다. 오늘 오후, 우리는 장애를 맞이했다. 2시부터 일어났던 장애를 6시에 알게 되었고 롤백을 했고, 피해에 대한 수치적 자료를 수집했고, 이슈가 장애의 원인이 되는 코드에 대해서 리뷰를 했다. 리뷰 후, 장애를 맞이했을 때에… Read More

flask - jinja2 tojson 필터

flask 문서를 보다보니 standard filters 라는 항목이 있는데 tojson 이 그 내용이다.(기본적으로 제공하는 필터라는 내용) 간략하게 애기하자면, 어떤 랜더링할 변수에 tojson 이라고 jinja2 템플릿 상에서 | 를 이용해서 붙이게 되면 json으로 변환된 값을 랜더링해준다. 예를들어, user 라는 dict 객체에 데이터를 넣어서 전달한다고 할 때, @app.route('/') def hello_world(): user ={} user['name'] = 'ash84'… Read More

pycharm - settings.jar 개발환경 공유

사내 팀에서 pycharm 을 파이썬 개발 공식툴로 사용하고 있다. 처음에 커뮤니티버전에서 시작해서, 개인 프로페셔널을 쓰다가, 이제는 회사에서 라이센스를 끊어서(기업용) 사용하고 있다. 개인 개발용으로도 구입해서 사용하고 있는데, 회사와 내 개인용 컴퓨터(맥) 간의 pycharm 환경을 동일하게 맞추고 싶었다. 테마, 폰트, 색깔 같은 외향적인 부분이 가장 크게 맞추고 싶은 부분이었고 개인적으로 사용하는 서버나 그런것들도 다시 설정하기도… Read More

dev-meetup.github.io 개발기

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

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

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

[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