flask-mqtt : subscribe 시 qos 설정 이슈 수정하기

이번 프로젝트를 하면서 주문관련 부분을 기존의 폴링(polling) 을 하던 방식에서 중간에 브로커서버를 두고 주문하는 쪽에서 주문을 보내면 브로커 서버의 특정 topic 을 구독하고 있는 구독자가 해당 주문을 받는 형태로 구성을 했다. 그 과정에서 mqtt 를 이용했고, emqtt 브로커 서버를 선택해서 사용하고 있다. 주문을 하는 쪽에서는 flask 로 구성되어 있어서 별도의 paho client 라이브러리를 띄워서… Read More

jinja - {% break %} 사용하기

jinja template 는 강력한 형태의 for 문을 제공하는데, 당연히 일반적인 for 문 안에서의 continue 나 break 등이 가능할 것이라고 생각하지만, 기본적으로 제공하지는 않는다. 이런 기능을 사요하기 위해서는 jinja2.ext.loopcontrols 을 설치해야 한다. flask 에서 설치 하는 방법은 아래와 같이 app 객체내에서 jinja_env.add_extension 함수에 추가해 주면 된다. app.jinja_env.add_extension(… Read More

iftop 설치, 실시간 트래픽 확인하기

실시간 트래픽을 보고 싶을때가 있는데, 여러가지 툴들이 있겠지만 iftop 을 설치하면 좀 더 간단하게 볼 수 있다. 설치하기 # centos yum install iftop # ubuntu apt-get install iftop 사용하기 $ iftop 좌측에는 서버 IP 우측에는 클라이언트 IP 를 보여준다. 우측에 3컬럼은 각각 2초, 4초, 10초 동안의 평균 전송량을 보여준다. 그리고 하단에 나와있는 정보는 다음과 같은 의미를 가진다. TX… Read More

PyCurl 사용하기

페이스북 코리아에 requests 보다 pycurl 이 더 성능이 좋다는 stackoverflow 글이 공유되서 pycurl 이 몬지 requests 코드와 비교해 보면서 익혀보았다. 일단 아래의 코드는 실제 POST 요청을 보내고 json 데이터를 받는 API를 호출하는 코드이다. requests 는 홈페이지에도 써있듯이 Requests: HTTP for Humans 이라는 타이틀에 맞게 확실히 코드가 깔끔해 지는것 같다. 코드에 함수로 GET, POST 를 지정하고,… Read More

React Native App 시작하기

이 글은 React Native Getting Started 에 대한 삽질기입니다. node.js & npm 설치 https://nodejs.org/en/download/ 설치 진행 $ npm install -g create-react-native-app $ create-react-native-app toystory_app npm5 에 문제가 있다고 아직 지원을 못한다는 에러 발견 https://github.com/npm/npm/issues/16991 아래와 같이 npm 버전을 돌리는.. (몬지 몰겠음?) $ sudo npm i npm@… Read More

beaker_session MySQL server has gone away

매일 아침 와서 현재 개발중인 백오피스를 켜면 Internal Server Error 발생. 로그를 보니 아래와 같은 오류 발생 OperationalError: (pymysql.err.OperationalError) (2006, "MySQL server has gone away (error(32, 'Broken pipe'))") [SQL: u'SELECT beaker_cache.data \\nFROM beaker_cache \\nWHERE beaker_cache.namespace = %(namespace_1)s'] [parameters: {u'namespace_1': '17b85df148204386870d2de3b3beaf40'}] beaker_session github issue 로… Read More

flask-babel 로 다국어 대응하기

flask 로 다국어 서비스를 만드는 일을 하고 있는데 일단 생각해 볼 부분이 API 와 WEB 이다. API는 모바일에서 요청이 들어오는 형태인데, 이 경우 모바일의 사용자 언어 설정을 파라미터로 받고 API 레벨에서 DB 내에 다국어 컬럼 혹은 행이 있다는 가정하에 select 를 해서 response 를 내보내면 된다. WEB 의 경우 AcceptLanguage 를 이용할 수도 있고, GET… Read More

Deview2017 2일차 후기

언제부터인가 Deview 를 2일 모두가는건 축복 혹은 사치가 되어버렸다. 2일 연속 신청해서 선착순 혹은 당첨되기도 어렵고, 2일 연속 회사에서 가라고 등떠밀지도 않기에 쉽지 않은일이 되어버렸다. 개인적으로 몇번째 Deview 인지는 모르겠지만 올해는 팀의 20살 막내를 데리고 참가를 하게 되었다. 개인적으로 1일차가 좀더 맞았던것 같은데 2일차만 되서 참석하게 되었다. 들었던 몇가지 세션들에 대한 느낌은 이렇다. [232]mist… Read More

2017년 10월 파이썬 세미나 - Python & Data

파이콘에서 주최하는 세미나가 있어서 참석하게 되었다. 역삼동에 있는 페이스북 코리아에서 열리게 되었고 간단하게 들었던 부분을 남겨본다. http://blog.pycon.kr/2017/10/21/python-seminar/ 데이터 시각화를 통한 파이썬 입문기 - 이왕원 크롤링, konply, word-cloud 도시공학과의 파이썬 - 정겨울 도시공학 : 설계, 기후, 교통 학식알리미(python + flask) : 로그의 그래프화 matplotlib 라이브러리, plt.xkcd() 어디에 국공립 어린이집을 지으면… Read More

emqtt shared subscription

최근에 우아한형제들 기술블로그에서 mqtt 관련 글이 올라온것을 봤는데, 마침 새 프로젝트에서 mqtt 를 사용할 경우가 생겼다. mqtt의 여러가지 기능 중에서 Shared Subscriptions 기능이 필요했다. 이 기능이 필요한 이유는 하나의 토픽을 여러 클라이언트가 수신하고 있는 상태에서 여러 클라이언트 중 하나만 어떤 기능을 하기 위해서이다. 예를 들면, 주문상태가 변경되면 알림을 발송해야하는데 2개의 클라이언트가 수신하고 있다고할때, 두번 알림이… Read More