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

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

celery states

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

python csv and encoding in csv file.

파이썬의 csv 모듈을 이용해서 MS Excel2010 에서 만든 csv 형식을 가져오는 코드이다. 별것 없는 코드를 올리는 이유는 단연 인코딩 때문인데 csv 모듈은 파이썬2.7 에서 다음과 같은 내용이 있다. Note This version of the csv module doesn’t support Unicode input. Also, there are currently some issues regarding ASCII NUL characters. Accordingly, all input should… Read More

euc-kr data in flask

파이썬에서의 unicode와 str 유니코드는 평문이고, str은 암호화된 유니코드라고 생각하자. charset 은 str 을 만들기 위한 키이다. 즉, unicode 에서 str 을 만들려면 charset이 필요하고, str에서 unicode 를 만들려면 charset이 필요하다. - 문제점 : str 상태의 문자열은 어떤 charset 으로 인코딩 되었는지를 알수 없다. - 때문에 개발자는 encode, decode 함수를 이용할경우에는 반드시 charset 을 알고 있어야 한다.… Read More

mod_wsgi libpython2.7.a could not read symbols bad value

(adsbygoogle = window.adsbygoogle || []).push({}); centos 에서 python을 설치하지 않아도 되지만 2.7 이상의 버전을 사용하기 위해서는 소스설치를 해야한다. 여기(댓글을 잘 보시길) 읽으면 할수 있을텐데, mod_wsgi 를 사용해서 apache와 연결해서 서버를 띄우고 나서 해당 url로(wsgi 와 연결된 url) 호출시 아파치의 에러로그에 아래와 같은 메시지가 나올수 있다. libpython2.7.a could not read symbols… Read More

Python - Sum the elements for the indices of each list

리스트 안에 리스트가 있고 각 index 별로 합계를 구할일이 있어서 stack overflow 를 보고 짠 코드인데 원래 기존에 제공된 코드에서 None 이 있는 경우에 한해서 0 처리한것 뿐이다. 코드가 약간 길어진 느낌이 있는데 짧게 고쳐주실 분은 위의 gist에 들어가셔서 남겨주시면 감사(. .)… Read More

Python: Tips, Tricks and Idioms

원문 : Python: Tips, Tricks and Idioms 번역 까지는 아니고(번역할 내용도 별로 없기에.) 눈에 띄는 몇가지만 주관적인 의견을 붙여서 적어본다. enumerate – index 와 같이 출력하기 위해서 i 등의 변수를 ++ 하는 형태로 for문을 돌리지말고 enumerate 를 사용하면 간단하게 해결이 된다. set – set 은 사실 잘 사용하지 않는데, 해당 요소가 unique 해야 한다는 제약이 있다. 아래의 소스를… Read More

python json 기반 conf 파일 로드하기(object_hook)

conf 를 json 파일로 쓰는 경우가 있는데 주로 개인 프로젝트 할때 많이 쓰는 편인데 결국 conf 라는것을 환경설정 파일이기 때문에 파일로 가져와서 읽어야 하는 경우가 많다. 이 경우 json 을 바로 dict 으로 loads 해서 사용하게 되면 conf[“port”] 이런식으로 접근해야 하는데 object_hook 를 이용하면 객체의 형태로 접근할수가 있다. 좀더 코드가 깔끔해 진다랄까.  2015/… Read More

python 3항 연산자

이걸 언제 쓰냐라고 생각했지만, 내가 오늘 이 글을 적게 될줄은 ‘나’조차도 몰랐다. 3항 연산자, 일명 if 축약 이라고도 하는데 사실 그리 쓸일이 많지는 않은데 flask 에서 유독 짜증나는 부분이 있어서 쓰게 되었다. flask 에서 함수를 구성하다 보면 초반에 하는 것중 하나가 request 객체에서 get 혹은 post 에 대한 데이터를 가져오는 작업이다. 일반적으로 get 의… Read More

python response data for flask

flask 로 작업하는 경우가 두가지인데, view 를 만들거나 아니면 json 형태로 api 결과를 리턴하는 경우를 만들거나. 그런데 첫번쨰는 머 render_template 사용하는 거고, 두번째 api 결과의 경우 보통 공통적인 api 결과 형식/포맷을 만들어서 반환하기 마련이다. 여러가지 방식이 있겠지만, 선호하는 방식은 meta 와 data 로 나누는 것인데 meta 에는 code 가 들어가는데 http status code… Read More

python mysqldb DictCursor 이용하기

아무래도 제일많이 사용하는게 mysql 이고 python 으로 연동하기 위해서 MySQLdb 를 사용하는데 맨날 기존 cursor를 이용해서 데이터를 가져오곤 했다.  ((2L, ‘test’, ‘Test’, ‘{test}’, datetime.datetime(2015, 1, 6, 13, 26, 45), (..)) 그러다 보면 위의 결과처럼 튜플(tuple)의 형태로 나오게 되는데 사실 컬럼명이 필요한 경우들이 있다. 예를들면, 공통적으로 저장프로시저를 호출하고 결과를 리턴하는 함수를 만들때는 프로시저에… Read More

python create excel, add sheet

파이썬에서 엑셀(csv 형식이 아닌) 파일을 만들고 시트를 추가하는 코드인데 openpyxl 을 사용하는 코드이다. 파라미터로 전송되는 구조에 종속적인 함수이긴 한데, 간단하게 사용법을 적어두는 목적이기에. 좀 애매한 부분들중 하나는 첫 시트를 지우지 않으면 시트 추가시 Sheet 라는 이름의 첫 시트가 남아 있는 문제가 있어서 Sheet 라는 이름을 찾아서 지우고 있다. 레퍼런스를 찾아서 첫 시트를 이름을 바꾸어서… Read More

[svn] svn log with diff yesterday

다른 사람의 코드를 보면 아무래도 이해를 더 잘 할수 있도 특히 같은 프로젝트나 같은 팀이라면 언어가 다르더라도 보는것이 좋다고 생각하는데 엄청 많은 저장소를 일일히 뒤져가며 볼수는 없다. 아래의 스크립트는 하루전의 커밋로그와 함께 그에 대한 diff 를 떠서 보여주는 파이썬 스크립트이다. 파일은 저장소 이름별로 만들도록 했는데 하나의 파일에 만들어도 되긴 하지만 diff 를 뜨게 되면 양이… Read More

flask logger decorator(데코레이터)와 함께 사용하기

기본로그 세팅하기 로그에 대한 부분이 늘 걱정이긴 한데, 사실 따로 python logger 클래스를 사용해서 로그는 남기는 클래스를 만들고 만드는 프로젝트 마다 붙여서 사용하는 식으로 했었는데 이번에 flask 에 있는 logger 를 이용해 보기로 했다. 기본적으로 다음과 같은 몇개의 핸들러를 제공하고 있다.  FileHandler  – 로그 메시지를 파일에 남긴다.  RotatingFileHandler – 로그메시지를 파일에 남기고, 특정수 이상이면 다음파일로 넘겨서 로그를… Read More

python 리눅스 하드웨어 정보 가져오기

서버가 들어왔을때 처음으로 해야하는 작업이 서버 정보를 가져와서 남겨두는 작업인데, 솔직히 리눅스 명령어로 하는게 더 편하긴 하지만, 내가 그런 명령어에 익숙하지 않고, 파이썬이 더 익숙한 지라 아래의 파이썬 코드를 돌려서 수행하면 된다. 기타 리눅스 하드웨어 관련 정보 파이썬으로 가져올 경우  http://amitsaha.github.io/site/notes/articles/python_linux/article.html 을 참고하면 된다.… Read More

python Celery 기본 세팅

예전부터 써보고 싶었는데 관련 업무가 주어져서(정확히는 그냥 내가 쓰고싶은데 업무시간에 테스트 하고 싶어서) 정리해 본다. 그냥 아주 기본적으로 돌려보는 정도.  Broker 세팅(Redis) – redis.io 에서 설치하면 끝  – 홈페이지에 나와있는 별도의 세팅은 redis.conf에서 하는것이 아님.  Task 만들기 – 하고자 하는 일을 정의하는데 @app.task 라고 써둔다.  – 위의  코드에서 보면 add와 insert_log 같은 task… Read More

리눅스에서 pyodbc 이용해서 mssql과 연동하기

일반적으로 python-mssql 라이브러리들은 윈도우를 기반으로 동작한다. 이때 pyodbc나 pymssql 들은 내부적으로 윈도우에 설치된 SqlClient 등의 라이브러리에 의존하게 된다.  문제 : 리눅스 환경에서는 SqlClient 와 같은 라이브러리가 없는데 어디에 의존해야 할까? pyodbc 를 기준으로 설명하자면, 리눅스 환경. CentOS, Ubuntu, MAC OSX 등의 환경에서는 unixODBC 와 FreeTDS 라는 라이브러리가 필요하다. unixODBC  – non winodws platform 상에서 표준 ODBC를 사용할수… Read More