-
2022-08-21
python static method vs. class method
사내에서 파이썬 코드를 짜다보면 static method와 class method를 혼용해서 사용하는 경우가 개인별로 있었는데 이 부분에 대해서 개인적으로 조사를 해서 전달할 기회가 있었다. 파이썬 책도 많이 봤고, 공식 레퍼런스도 봤지만 대부분 사용법에 대해서 애기가 대체로 있고, 언제 두개를 구분해서 사용해야하는 지에 대해서는 나와있지 않아서 몇개의 레퍼런스를 정리해봤다.
-
2019-10-19
python LDAP, ldap3 연동
LDAP 자체는 정보를 제공하는 시스템이라서 로그인, 토큰이라는 개념이 없어서 id, password 를 넣어서 정보를 조회하고, 조회가 되면 로그인이 되었다는 것으로 인식해서 이를 연동하는 시스템에서 자체적으로 토큰을 발급해야 한다. python 에서 LDAP 을 연동하는 방식은 python-ldap, ldap3 라이브러리를 사용하는 것인데, 아래와 같이 ldap3를 사용하면 된다.
-
2018-10-11
파이썬 부동소수점 링크
파이썬 부동소수점 관련 링크, 보면 이해가 된다.
-
2018-09-10
flask 파일업로드 검증하기
파일 업로드의 경우 주의할 점이(업로드를 당하는 입장에서) 악성파일 혹은 원치 않는 파일들이 들어올 수 있음을 항상 인지해야한다. 그래서 왠만하면 파일 업로드를 잘 안만들거나 내부에서 몇명의 인가된 사용자만 따로 업로드 메뉴를 보이게 해서 제공하거나 하는 식으로 하곤 했었다. 그래도 업로드가 필요할 경우 아래와 같은 방법으로 제한 할 수 있다.
-
2018-09-04
SQLAlchemy Join #3 One to One
**[One To One](http://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html#one-to-one)**
-
2018-08-31
SQLAlchemy Join #2 Many To One
**Many To One**
-
2018-08-29
PyconKR 2018 후기 2일차
# 2일차 후기
-
2018-08-21
PyconKR 2018 후기 1일차
몇년째인지 모르겠지만 참여하고 있다. 나이가 들어서 그런지 점점 같이 갔던 분들이 보이지 않거나 하는것 같은데 이 역시 개발자의 숙명이 아닐까 하는 생각이 든다. 나는 아내가 파이콘 가는것을 1년에 한번이기때문에 뭐라고 하지 않지만, 주말2일 평일1일을 세미나에 쓴다는 건은 솔직히 쉽지 않다. 아쉽게도 올해는 라이트닝 토크는 함께하지 못했다. 내년에는 아이가 둘이라서 한 아이를 아이돌봄에 맡기고 봐야할 것 같다.
-
2018-08-18
SQLAlchemy Join #1 One To Many
SQLAlchemy Join 에 대해서 막연하게 쓰다보니 여러가지 관계 테이블상황에서 제대로 사용하지 못하고 수박겉핣기식으로 쓰는 경우가 많았다. 그래서 공식 문서상의 Join 관련 부분(아래의 URL)을 따라하면서 막히는 부분을 풀어보고자 한다.
-
2018-07-30
SQLAlchemy autocommit 에 대해서
DB 상에서 autocommit 이란 데이터 변경 작업에 대한 SQL 자체가 바로 반영되는 것을 의미하는데 autocommit 이 아닌 상태에서는 여러줄의 명령을 하나의 트랜잭션으로 묶을수가 있다.(개별 DBMS 엔진이나 DB타입에 따라 다를수는 있다. 여기에서는 MYSQL InnoDB 기반으로 테스트를 진행하였다.)
-
2018-07-25
라이브러리 개발자를 위한 NullHandler
로깅에서 `FileHanlder`, `StreamHandler` 등의 핸들러는 로그를 어디에 남길것인지를 지정하는 역할을 하고, `Formatter` 는 로그를 남기는 형식을 지정할 수 있다. 그리고 `Filter` 는 그 로그 안에서 필터링 기능을 수행할 수 있다.
-
2018-07-18
dictionary view object
`dict.keys()`, `values()`, `items()` 과 기존의 python2 와는 다르게 변경 되었다. 기존은 아래와 같이 리스트형을 반환한다.
-
2018-07-13
ChainMap 사용법 정리
Python3.3 에서 처음 나온 ChainMap 은 익히 잘 알고 있는 collections 모듈에 위치해 있다. 3.3 에 나왔지만, 생각보다 많이 알려지지 않은 이유는 기존의 다른 방식의 코딩으로 대체가능한 영역이라서 인것 같다. ChainMap의 기본적인 역할은 quickly linking a number of mappings 이라고 소개하고 있다.
-
2018-02-23
pyinstaller 로 실행파일 만들기
암복호화 프로그램을 만들 일이 있었는데, 파이썬으로 작업을 하게 되면 *.py 파일 안에 암복화키가 보여지기 때문에 리눅스 실행파일로 만들수 있는 방법을 찾게 되었다. C/C++ 을 이용해서 실행파일을 만들까 싶다가 pyinstaller 가 있길래 사용해 봤는데, 사용법이 너무 간단하다.
-
2017-11-14
PyCurl 사용하기
페이스북 코리아에 [requests 보다 pycurl 이 더 성능이 좋다는 stackoverflow 글](https://stackoverflow.com/questions/15461995/python-requests-vs-pycurl-performance)이 공유되서 pycurl 이 몬지 requests 코드와 비교해 보면서 익혀보았다. 일단 아래의 코드는 실제 POST 요청을 보내고 json 데이터를 받는 API를 호출하는 코드이다.
-
2017-10-26
beaker_session MySQL server has gone away
매일 아침 와서 현재 개발중인 백오피스를 켜면 Internal Server Error 발생. 로그를 보니 아래와 같은 오류 발생
-
2017-10-21
2017년 10월 파이썬 세미나 - Python & Data
파이콘에서 주최하는 세미나가 있어서 참석하게 되었다. 역삼동에 있는 페이스북 코리아에서 열리게 되었고 간단하게 들었던 부분을 남겨본다.
-
2017-09-06
flask-sqlalchemy multiple databases
### **사용하기**
-
2017-09-04
python - db stored procedure 호출에 generator 활용하기
프로시저 호출은 몇 가지 제약을 가진다. 일단 프로시저명을 전달해야 하고 파라미터를 순서대로 전달해야 한다. 그리고 결과를 주는 방식이 하나의 결과를 줄 수도 있고 여러 결과를 줄 수도 있다. 프로시저당 하나의 호출 함수를 만들면 너무 많은 프로시저 호출 함수가 생기는 문제가 있다. 그래서 프로시저 이름을 받는 파라미터와 전달할 프로시저 파라미터, 그리고 insert, update, delete 의 경우 commit 을 해야하기 때문에 commit 여부를 위한 파라미터, 그리고 여러 결과를 반환하는 여부에 대한 파라미터를 추가한 호
-
2017-08-29
PYCONKR2017 을 다녀와서.
[파이콘2017](https://www.pycon.kr/2017/) 에 다녀왔다. [작년의 pyconApac 의 화려함을 뒤로하고](https://ash84.net/2016/08/24/pyconapac-2016/) 올해는 표제부터 Back to the Basic 이었다. 언제나 파이콘의 티켓 예약은 전쟁터였다. 나 빠른 점심을 먹고 들어와서 예약을 했고, 몇분후 예약을 못한 사람들이 속출하기 시작했다. 발표자 모집이 시작이 되었고, 발표를 하고 싶은 마음도 있었지만 올해는 한발자국 멀리서 지켜보게 되었다. 2-3주 정도 남았을 무렵
-
2017-08-28
python sorted 에 대해서.
sorted 에 대해서 질문을 받았고 잘 대답을 하지 못해서 복기차원에서 이 글을 쓴다. 대부분의 내용은 [Sorting HOW TO](https://docs.python.org/3/howto/sorting.html) 라는 글에서 가져왔음을 밝힌다.
-
2017-08-04
flask - request.script_root 이용하기
하나의 웹을 여러 path 에 올려야 할 경우가 있다. 예를 들면, 테스트를 위해서 `/web1`, `/web2` 이런식으로 구성해서 올릴 경우이다. 이런 경우 프론트단에서 URL로 지정해 놓은 값들을 수정해 줘야 한다.
-
2017-07-20
flask - render_template 어떻게 사용할까?
flask 를 사용하다보면 view 코드가 길어지는 경우가 있는데 그 중 하나가 views.py 에 route 함수가 많아져서 길어지는것 그리고 다른 하나는 `render_template()` 함수에 파라미터가 많아져서 길어지는 경우다. 전자의 경우 blueprint 로 분할하거나 resource 단위로 분할하면 해결할수 있다. (이건 다른 포스트에서 자세히 설명하겠다.) 후자의 경우에는 어떻게 해결 할수 있을까?
-
2017-07-12
pymssql nextset() 빈값 이슈
최근에 구현한 부분에서 이상한 경험을 했는데 같은 db 프로시저를 호출하는 코드를 쓰고 테스트를 했는데 어떤 조건으로는 데이터가 순서에 맞게 잘 나오고 안나오고 하는 경우였다.
-
2017-06-15
flask - json_encoder 지정하기
API 상에서 JSON 으로 응답을 내보내기 위해서는 데이터를 Json Serialize(직렬화)를 해야한다. 그런데 json 에서 표현할 수 있는 데이터는 한정이 되어 있어서 각 프로그래밍 언어에 있는 모든 타입을 지원하지는 못한다. Decimal 형도 그런 예 중 하나인데 파이썬에서는 `json.dumps()`를 통해서 주로 직렬화를 하고 그 함수의 기능 중에 `cls` 인자를 통해서 JSONEncoder 를 구현한 서브 클래스를 지정해 주면 해당 인코더로 json 문자열을 만든다.
-
2017-06-06
Python - 리스트 순회중 수정하는 문제
본 글은 Toptal에 올라온 [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다.
-
2017-05-30
Python - 파이썬 범위 규칙에 대한 잘못된 이해
본 글은 Toptal에 올라온 [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다.
-
2017-05-25
Python - 예외처리 블록에 대한 잘못된 파라미터 지정
본 글은 Toptal에 올라온 [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다.
-
2017-05-24
Python - 잘못된 클래스 변수의 사용
본 글은 Toptal에 올라온 [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다.
-
2017-05-22
Python - 함수 디폴트인자의 잘못된 사용
본 글은 Toptal에 올라온 [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다.
-
2017-04-17
pycharm - bookmarks 북마크
pycharm 에는 북마크 기능이 있다. 많은 파일과 소스 파일내에 특정 위치를 빠르게 이동하기 위해서는 북마크 기능이 필수적이다. `F11`(윈도우 기준) 키를 눌러서 현재 있는 위치에 북마크를 지정 할 수 있다. 중요한 점은 소스파일 뿐만 아니라 project 뷰 안에 파일을 선택한 상태에서도 F11을 통해서 북마크에 추가 할 수가 있다.
-
2017-04-03
flask - jinja2 tojson 필터
flask 문서를 보다보니 [standard filters](http://flask.pocoo.org/docs/0.12/templating/#standard-filters) 라는 항목이 있는데 `tojson` 이 그 내용이다.(기본적으로 제공하는 필터라는 내용) 간략하게 애기하자면, 어떤 랜더링할 변수에
-
2017-03-27
pycharm - settings.jar 개발환경 공유
사내 팀에서 pycharm 을 파이썬 개발 공식툴로 사용하고 있다. 처음에 커뮤니티버전에서 시작해서, 개인 프로페셔널을 쓰다가, 이제는 회사에서 라이센스를 끊어서(기업용) 사용하고 있다. 개인 개발용으로도 구입해서 사용하고 있는데, 회사와 내 개인용 컴퓨터(맥) 간의 pycharm 환경을 동일하게 맞추고 싶었다.
-
2017-03-07
pipreqs - requirements 뽑기
`virtualenv` 를 사용하면 사실 좋긴 한데, 그게 아닌 경우에 대해서 개발 서버에서 작업했을때 **requirements.txt** 를 뽑기가 어렵다. **requirements.txt** 가 필요한 이유는 서버에 세팅시 pip install -r 옵션을 통해서 한번에 라이브러리를 설치할수 있기때문에 필수이다. pipreqs 를 사용하면 특정 프로젝트 하위에서 사용하는 라이브러리 리스트를 추출할 수 있다. `virtualenv` 를 도입하기 힘든 환경에서 사용하면 좋을 듯.
-
2016-12-20
기술 링크 정리 #3 - 2016/12/28
####**파이썬 관련**####
-
2016-12-16
기술 링크 정리 #2 - 2016/12/20
####**파이썬 관련**####
-
2016-12-06
(flask) JSON 데이터 받기 및 예외처리
flask 에서 json 데이터를 받아서 처리할 때 reqeust.get_json() 혹은 request.json 을 이용할 수 있는데, mime type을 application/json 타입으로 보내는데, {} 없이 빈 JSON 문자열 조차도 안 보내는 경우가 있을수가 있다.
-
2016-12-06
기술 링크 정리 #1 - 2016/12/09
####**파이썬 관련**####
-
2016-11-18
(flask) jsonschema 를 이용해서 request.json 검사하기
API에서 파라미터의 유효성 검사는 필수적인 요소이긴 하지만, 개발자로서 여간 귀찮은 일이 아닐 수 없다. API의 양이 많을수록 할 일은 많아진다. 세세하게 체크할 부분은 해야하지만 기본적으로 파라미터 유무, 파라미터의 데이터 형을 체크하는 부분이 필요했다. API는 기본적으로 JSON 을 `POST`로 받는 식으로 구성되어 있어서 JSON을 검증하는 부분이 필요했다.
-
2016-08-24
SQLAlchemy with StoreProcedure
-
2016-08-23
PyconAPAC 2016 후기 슬라이드
-
2016-08-03
flask-runner
Flask 에서 개발을 할 때, Debug 옵션을 키고 app 에 기본 내장된 개발서버를 사용한다. 그런데 파일을 수정하면 재시작하는 기능은 좋은데, `host` 나 `port` 를 지정해 놓고 사용하다가 변경할때 귀찮은 부분이 있다. 특히 `port` 같은 경우 특정포트를 지정해두면 꼭 다음날에 누군가 쓰고 있어서 다시 수정해서 실행해야 하는 번거로움이 있다.
-
2016-07-27
Python flake8 사용하기
[pep8](https://pypi.python.org/pypi/pep8), [flake8](http://flake8.pycqa.org/en/latest/) 등의 툴이 파이썬 코드의 정적검사를 하는 툴이다.
-
2016-07-15
docxtpl 를 이용한 문서 자동화
엑셀의 경우, 백오피스나 CMS 등에서 import/export 에 사용하기 때문에 기능구현 할 때 [XlsWriter](https://github.com/jmcnamara/XlsxWriter) 를 이용해서 구현했던 적이 있었다. 그에 비해서 워드 문서를 생성해 내는 작업은 별로 없었다.
-
2016-06-03
[python] MySQL-Python 설치오류, mysql_config not found
-
2016-03-29
tailon 으로 로그파일 웹에서 보기
서버에 있는 로그를 웹상의 타인에게 보여줘야 할 경우가 있는데(가급적 이런 경우는 좋지 않은 상황인 경우이다.) 어떻게 할까 찾아보다가 python 으로 된 tailon 이라는 쉽게 커맨드 명령어로 띄울 수 있는 툴이 있어서 소개한다.
-
2016-01-11
celery states
아래는 celery 의 state 인데, 보통 celery-flower 조합으로 많이 쓰기 때문에 [flower](https://github.com/mher/flower)를 쓰다보면 조회 조건중에 states 가 있어서 아래와 같이 정리해본다. 즉시 실행하라고 명령하면 STARTED-SUCCESS 또는 FAILURE 로 표시되겠지만, `countdown`을 주어서 실행한 경우에는 즉, 어떤 예약을 거는 경우에는 해당 task가 RECEIVED 로 표시되게 된다. 그리고 [flower](https://github.com/mher/f
-
2015-12-10
powerline 설치후기

-
2015-09-23
mod_wsgi & Apache 2.4 setup script
개인적으로 만든 스크립트인데, centos 상에서 python 설치하고, Apache 2.4(httpd) 설치하고, mod_wsgi 세팅하는 작업에 대한 스크립트이다. 돌려보진 않았는데 제대로 될런지는.. **중요한 부분은 파이썬을 설치하는 옵션에 대한 부분과 mod_wsgi 를 설치하는 부분이다.** 참고하시길.
-
2015-09-03
python csv and encoding in csv file.
파이썬의 csv 모듈을 이용해서 MS Excel2010 에서 만든 csv 형식을 가져오는 코드이다. 별것 없는 코드를 올리는 이유는 단연 인코딩 때문인데 csv 모듈은 파이썬2.7 에서 다음과 같은 내용이 있다.
-
2015-07-16
euc-kr data in flask
### **파이썬에서의 unicode와 str**
-
2015-06-01
mod_wsgi libpython2.7.a could not read symbols bad value
-
2015-05-13
Python - Sum the elements for the indices of each list
리스트 안에 리스트가 있고 각 index 별로 합계를 구할일이 있어서 stack overflow 를 보고 짠 코드인데 원래 기존에 제공된 코드에서 None 이 있는 경우에 한해서 0 처리한것 뿐이다. 코드가 약간 길어진 느낌이 있는데 짧게 고쳐주실 분은 위의 gist에 들어가셔서 남겨주시면 감사(. .)
-
2015-04-22
Python: Tips, Tricks and Idioms
원문 : [Python: Tips, Tricks and Idioms](https://codefisher.org/catch/blog/2015/01/27/python-tips-tricks-and-idioms/?utm_source=Python+Weekly+Newsletter&utm_campaign=8416b188e6-Python_Weekly_Issue_176_January_29_2015&utm_medium=email&utm_term=0_9e26887fc5-8416b188e6-312692397 "Python: Tips, Tricks an
-
2015-04-17
Python3 adoption for pyimgdown
[pyimgdown](https://github.com/AhnSeongHyun/pyimgdown) 이라는 wand 를 이용한 이미지를 다운받고 썸네일을 만드는 라이브러리를 파이썬2 버전으로 pypi에 올린적이 있었는데, 사실 그전에 이미지 땡겨와서 썸네일 할때 만든 라이브러리였다. 올해 목표중에 하나가 Python3 를 사용해 보는것이었고 아직 회사에서는 Python2 를 사용하지만 몇개의 개인프로젝트들을 일단 바꿔 보기로 했다.
-
2015-03-27
[python] home(~) 경로 가져오기
#### python get user home path
-
2015-03-20
nginx-uwsgi 연동하기
### uwsgi – flask 기본 연동
-
2015-03-18
nginx 설치 및 구동
### 개요
-
2015-03-04
[번역] 6 Python Performance Tips
> 원문 : [http://blog.newrelic.com/2015/01/21/python-performance-tips/?utm_source=Python+Weekly+Newsletter&utm_campaign=c403fa901e-Python_Weekly_Issue_175_January_22_2015&utm_medium=email&utm_term=0_9e26887fc5-c403fa901e-312692397](http://blog.newrelic.com/2015/01/21/python-performance-tips/?utm_sourc
-
2015-02-17
CentOS 6.X Python 2.7 업그레이드
https://github.com/h2oai/h2o/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-exactly-for-centos-machine-only
-
2015-02-12
python json 기반 conf 파일 로드하기(object_hook)
conf 를 json 파일로 쓰는 경우가 있는데 주로 개인 프로젝트 할때 많이 쓰는 편인데 결국 conf 라는것을 환경설정 파일이기 때문에 파일로 가져와서 읽어야 하는 경우가 많다. 이 경우 json 을 바로 dict 으로 loads 해서 사용하게 되면 conf[“port”] 이런식으로 접근해야 하는데 object_hook 를 이용하면 객체의 형태로 접근할수가 있다. 좀더 코드가 깔끔해 진다랄까.
-
2015-02-02
python 3항 연산자
이걸 언제 쓰냐라고 생각했지만, 내가 오늘 이 글을 적게 될줄은 ‘나’조차도 몰랐다. 3항 연산자, 일명 if 축약 이라고도 하는데 사실 그리 쓸일이 많지는 않은데 flask 에서 유독 짜증나는 부분이 있어서 쓰게 되었다. flask 에서 함수를 구성하다 보면 초반에 하는 것중 하나가 request 객체에서 get 혹은 post 에 대한 데이터를 가져오는 작업이다. 일반적으로 get 의 경우 `request.args.get("id", None)` 이런식으로 가져오는데 get
-
2015-01-30
python response data for flask
flask 로 작업하는 경우가 두가지인데, view 를 만들거나 아니면 json 형태로 api 결과를 리턴하는 경우를 만들거나. 그런데 첫번쨰는 머 `render_template` 사용하는 거고, 두번째 api 결과의 경우 보통 공통적인 api 결과 형식/포맷을 만들어서 반환하기 마련이다. 여러가지 방식이 있겠지만, 선호하는 방식은 meta 와 data 로 나누는 것인데 meta 에는 code 가 들어가는데 http status code 혹은 확장할 경우 확장코드가 들어가고 message 는 보통 에러의 경우 상세 에러메시지가 들어
-
2015-01-29
python mysqldb DictCursor 이용하기
아무래도 제일많이 사용하는게 mysql 이고 python 으로 연동하기 위해서 MySQLdb 를 사용하는데 맨날 기존 cursor를 이용해서 데이터를 가져오곤 했다.
-
2015-01-21
python create excel, add sheet
파이썬에서 엑셀(csv 형식이 아닌) 파일을 만들고 시트를 추가하는 코드인데 openpyxl 을 사용하는 코드이다. 파라미터로 전송되는 구조에 종속적인 함수이긴 한데, 간단하게 사용법을 적어두는 목적이기에. 좀 애매한 부분들중 하나는 첫 시트를 지우지 않으면 시트 추가시 Sheet 라는 이름의 첫 시트가 남아 있는 문제가 있
-
2014-12-26
[svn] svn log with diff yesterday
다른 사람의 코드를 보면 아무래도 이해를 더 잘 할수 있도 특히 같은 프로젝트나 같은 팀이라면 언어가 다르더라도 보는것이 좋다고 생각하는데 엄청 많은 저장소를 일일히 뒤져가며 볼수는 없다. 아래의 스크립트는 하루전의 커밋로그와 함께 그에 대한 diff 를 떠서 보여주는 파이썬 스크립트이다. 파일은 저장소 이름별로 만들도록 했는데 하나의 파일에 만들어도 되긴 하지만 diff 를 뜨게 되면 양이 엄청 많아진다.
-
2014-12-18
flask logger decorator(데코레이터)와 함께 사용하기
###기본로그 세팅하기###
-
2014-12-02
python 리눅스 하드웨어 정보 가져오기
서버가 들어왔을때 처음으로 해야하는 작업이 서버 정보를 가져와서 남겨두는 작업인데, 솔직히 리눅스 명령어로 하는게 더 편하긴 하지만, 내가 그런 명령어에 익숙하지 않고, 파이썬이 더 익숙한 지라 아래의 파이썬 코드를 돌려서 수행하면 된다. 기타 리눅스 하드웨어 관련 정보 파이썬으로 가져올 경우 [http://amitsaha.github.io/site/notes/articles/python_linux/article.html](http://amitsaha.github.io/site/notes/articles/python_linux/
-
2014-12-01
flask file download
자주 까먹는지라, 서버에 파일두고 단순 다운로드시 `send_from_directory` 함수 사용.
-
2014-11-30
python Celery 기본 세팅
예전부터 써보고 싶었는데 관련 업무가 주어져서(정확히는 그냥 내가 쓰고싶은데 업무시간에 테스트 하고 싶어서) 정리해 본다. 그냥 아주 기본적으로 돌려보는 정도.
-
2014-11-29
python 1000 단위 쉼표 찍기
잡다하기 문자열 수 세서 찍을수도 있겠지만. ㅎㅎ
-
2014-11-27
리눅스에서 pyodbc 이용해서 mssql과 연동하기
일반적으로 python-mssql 라이브러리들은 윈도우를 기반으로 동작한다. 이때 pyodbc나 pymssql 들은 내부적으로 윈도우에 설치된 SqlClient 등의 라이브러리에 의존하게 된다.
-
2014-11-26
[python] 이메일보내기, unable to relay 문제 해결
파이썬에서 이메일 보내기에 대한 소스인데 아주 기본적인 코드다. SMTP 를 이용해서 지정된 다른 사용자에게 이메일을 보내는 소스코드인데 간단하게 사내에서 시스템에서 뭔가 발생이 되었을때 쉽게 서버관리자의 메일로 보낼수가 있다.(요즘은 메신저로 보내는게 일반적이어서)
-
2014-11-25
8.18. pprint — Data pretty printer — Python 2.7.8 documentation
# [8.18. pprint — Data pretty printer — Python 2.7.8 documentation](https://docs.python.org/2/library/pprint.html)
-
2014-11-25
[flask] robots.txt, sitemap.xml
static 디렉토리에 robots.tx, sitemap.xml 파일이 있다는 가정하에 사용하면 된다.
-
2014-11-24
Ansible 간단이해
#개요
-
2014-10-07
Python Weekly 159
파이썬 위클리에서 개인적으로 관심있는것들만 정리하였음.
-
2014-10-02
Deview2014 Review
9/29일(월) 9:00 ~ 18:00
-
2014-09-05
2014 제1회 파이콘 코리아(pyconkr)를 다녀와서.
신청할때는 갈지말지 일말의 여지가 없었지만, 문제는 그주에 여러가지 행사 예를들면 영종도에가서 드림카를 타본다는 등의 행사등이 있었지만 내가 선택한건 pyconkr 이었다.
-
2014-02-24
pypi 올리기 정리
올릴때 마다 고생하는데 간단 정리
-
2014-02-19
[python] Wand를 이용한 썸네일(Thumbnail)
이전 포스팅에서 [PIL](http://lab.ash84.net/1071) 을 언급하면서 혼자서 wand가 썸네일 만들기엔 더 편하다고 써놨는데, 한번 랩핑한 클래스이다. 공개하기도 민망하긴 한데.
-
2014-02-13
PIL(Python Image Library) 설치하기
간단하게 썸네일을 만들어야 하는 작업이 있어서 python image 관련 라이브러리를 찾던중에 [PIL](https://pypi.python.org/pypi/PIL) 이라는 것을 발견했는데 설치 해야하는 부분에 문제가 생겨서 코멘트를 남긴다.
-
2014-01-22
django-endless-pagination 을 이용한 페이징구현
페이징 기능은 사실 게시판에 있어서 필수적인 기능인데 구현하는데 있어서 겁을 먹게 되는것 같다. (나같은 초보 웹쟁이는 더 그렇지) django 에서 페이징 기능을 쉽게 추가할수 있는것이 있을까 싶어서 [djangopackages](https://www.djangopackages.com/) 에서 찾아 봤는데 pagination 이라는 단어로 검색했을때 search weight 가 78%인 [django-endless-pagination](http://django-endless-pagination.readthedocs.org/) 를
-
2014-01-13
(django) djangopackage.com

-
2014-01-06
(django) inspectdb, 기존 테이블을 models.py 로 가져오기
많은 장고(Django) 예제에서 models.py 를 먼저 만들고 syncdb 를 통해서 실제 데이터베이스에 구조를 잡게 되는데 사실은 실제 데이터베이스에 이미 데이터나 구조가 있는 경우가 더 많은것같다. 그럴경우 일일히 models.py에서 데이터 모델들을 잡아주는것이 번거로운데(테이블이 많으니까) 장고에서는 inspectdb 라는 기능을 통해서 settings.py에 연결되어 있는 데이터베이스에 대한 models.py의 내용을 가져올 수 있도록 해준다.
-
2013-12-26
python travis-ci 와 github repository 연동하기
별거 없다. 파이썬 기준으로 설명
-
2013-12-17
(Django) Aptana Studio3 Django Not found 오류 해결법
Django 프로젝트를 만들려고 하는데 pip install django 로 django를 설치했음에도 불구하고
-
2013-12-16
(python) daum_openapi 라이브러리 개발기
[Daum Open API](http://dna.daum.net/apis/dashboard) 중에서 데이터형 API 를 쉽게 쓸 수 있는 Python 라이브러리를 만들어서 pypi 에 등록을 하였다. 이미 Daum 쪽에서 python 으로 api를 호출할 수 있는 예제코드를 제공하고 있는데, 만들게된 계기는 아래와 같다.
-
2013-11-11
(flask) Pluggable View, Class 에서 요청처리하기
[Pluggable View](http://flask.pocoo.org/docs/views/?highlight=as_view) 라고 말이 어려운데, 간단하게 말하자면 flask 는 기본적으로 url 과 함수의 맵핑으로 이루어져있다. 아래의 Quick Start 에서도 보면 알겠지만, url “/ ” 는 hello_world() 라는 함수에 맵핑이 되어 있어서 / 로 들어오게 되면 hello_world() 함수로 들어오게 된다.
-
2013-11-04
(python) usage logging
flask 관련 작업을 하면서 로깅을 어떻게 할까 하는 생각이 있었는데 python 에 기본적으로 logging을 탑재하고 있어서 이렇게 사용법을 올린다. 별 다른 건 없고, basicConfig 라는 것을 통해서 filename, filemode, level 을 설정할수 있는데 file 관련 설정을 하지 않으면 stdout 으로 출력되게 된다. 자세한 사항은 [http://docs.python.org/2/library/logging.html](http://docs.pytho
-
2013-10-29
(python) try ~ except and trace
이상하게 파이썬을 빨리 빨리 뚝딱 만드는 언어로 많이 쓰는데(사실 나도 그렇게 쓴다.) 그런데 간호 pypi 에 올려서 욕을 안먹으려면 예외 처리를 해야한다. 당연한 애긴데. ㅎㅎ 아무튼 위의 소스코드를 보면 try: ~ except: 문으로 묶는 것이 기본이다. catch 에 해당하는 것이 except 라고 보면 되는데, Java 처럼 자세히 나
-
2013-10-28
(flask) jinja2 {% include %} 활용
대단한건 아니고, flask 는 기본적으로 jinja2 를 템플릿 언어로 사용하는데 사용하다 보면 하나의 template에서 공통적으로 사용되어 지는 부분이 있다. 예를 들면, 같은 css 나, 자바스크립트를 가져오는 header의 부분이나 상단의 navigation 부분, 하단의 footer 부분이 그러한데 일일히 모든 템플릿에 넣어 주기는 귀찮다. 그래서 jinja2 에서는{% include %} 를 통해서 하나의 html 에서 다른 html 을 가져올수 있도록 해준다.
-
2013-10-23
(flask) tornado 서버 적용
다들 아시겠지만 flask 내장 서버는 구리고, 사실 어쩔때는1번 이후에 접속이 안될때도 많다. 그래서 flask 문서에서도 배포에서는 사용하지 말라고 권장하고 있기 때문에 tornado 서버를 붙일수가 있다. 여타의 다른 서버를 붙일수가 있는데 링크를 확인하면 된다.
-
2013-10-06
(flask) static 파일 지정
gist 하나에 다 넣어서 설명하자면, main.py 에서 먼저 static_folder 를 static 으로 지정해 주고 실제 프로젝트 폴더 내에 static 을 만든다. 그리고 css, js 폴더를 static 하위에 만들고 관련 파일들을 배치한다. 그리고 html 내에서는 url_for 를 이용해서 지정해 주면 된다.
-
2013-09-06
(flask) http get url 처리
당연히 최근에는 오픈API나 혹은 간단하게 웹 서비스를 구성한다고 하면 Http Get 방식으로 데이터를 전달하는데 flask 에서는 다음과 같이 처리 할수 있다. `@app.route()`함수에서 어떤 메소드를 사용할 것인지 지정을 해주고 나면 `request.args.get()` 함수를 통해서 해당 url 로 넘어온 데이터를 가져올 수 있다.
-
2013-08-28
(python) image download conv base64
base64로 변환을 해야하는 이유부터 설명하자면 간단하다. 이미지의 경우, 파일서버에 저장하는 것이 최고의 방법이긴 하지만 다들 알다시피 서버의 용량 문제가 있어서 OpenAPI를 이용해서 데이터를 가져오게 되는
-
2013-08-08
(flask) helloworld.py
pip install flask
-
2013-07-16
(python) opengraph 라이브러리 리뷰
사실 [오픈그래프](http://ogp.me)라는 것에 대해서 알게 된것은 [전 포스팅](http://ash84.tistory.com/1000)에서 말했지만 우연한 기회였다. 난 그때만 해도 여전히 오픈그래프에 대해서 신기해하고 있던 터라 구글 검색을 해보았는데 파이썬 기반 오픈
-
2013-07-13
(python) html unescape
HTML 가져온 것을 화면에 보여주거나 할때 반드시 해야하는 작업중에 하나가 바로 언이스케이프작업(Unescape) 이다. HTML 안에 특수 문자들은 어떤 일련의 문자열로 표현이 된다. 예를 들면, ” ” 공백은 <, > 은 < > 이런식으로 말이다. 그렇기 때문에 저런 문자들이 원래 우리가 이해하는 특수문자로 바꿔주는 작업을 하는데 그것을 unescape 작업이라고 한다. 반대로 특수문자들을 일련의 약속된 문자열로 바꾸는것은 escape 작업이다.
-
2013-07-12
(python) 사전 정렬 dictsort.py
사전 구축작업 같은것을 있는데, 사실 정렬을 하고 뭔가 필터링 시에 이진탐색등의 방법으로 찾는것이 빠르긴 하다. 때문에 사전 구축작업시에 아무래도 정렬을 하는게 좋긴 한데, 사람손으로 하기엔 사전의 양이 많아지면 많아 질수록 힘들다. 아래의 코드를 보면 알겠지만, `-f file `또는 `-d directory` 등의 옵션으로 파일하나 혹은 사전이 있는 디렉토리 자체를 지정할 수 있도록 하였다.
-
2013-07-10
(python) webkit2png, webpage screenshot
원래는 이것을 찾으려고 한게 아니고, 웹 페이지에서 여러가지 정보를 가져오는 스크립트를 찾던중에 찾은 재밌는 일종의 툴인데, **파이썬 기반으로 지정한 웹 페이지의 스크린샷을 뜨는 작업**을 해준다.
-
2013-01-15
(Python) 간단하게 테스트 파일 만들기
업체 특성상 테스트 파일을 많이 만들어야 하는 경우가 있다. 그런데 일일히 다 만들기도 귀찮고 때로는 사이즈를 정해서 만들어야 할 경우가 있다. 예를들어, 1MB 단위로 10만개 데이터를 만들어서 넣어야 하는 경우가 있다. 내용 역시도 중요한 경우가 있다. 그냥 영문자만 가득 채워야 하는 경우가 아니라 완벽한 한국식 문장이 들어가야 하는 경우가 있다.
-
2012-12-26
[Python] newline과 tab 으로 split 문자열 파싱
파이썬 마을에서 조금씩 파이썬에 대해서 질답게시판에서 한번씩 생각해 볼수 있는 것들은 감이 녹슬지 않기 위해서 해결할 예정이다. 기존의 게시판 형태에서 Stack Overflow 의 형태로 변경이 되었다. 사이트 주소는 아래와 같다.
-
2012-12-14
[Python] base64 인코딩 디코딩
파이썬은 기본적으로 base64를 지원한다. 간단한게 올림.
-
2012-10-11
[Python] sqlite3 를 손쉽게 쓰도록 만든 클래스
파이썬(python)에서는 sqlite3 를 기본 라이브러리로 지원하고 있는 것은 누구나 다 아는 사실일텐데, 좀더 쓰기 편한 형태로 CRUD 에 대해서 클래스 랩핑을 해봤다. 함수에서 테이블 이름, Where 문, 혹은 컬럼이나 넣을 데이터 받으면 그에 따라서 쿼리 만들어서 쿼리 실행하도록 하였다. 별도의 예외처리는 안했기 떄문에 필요한 분들이 가져다가 커스텀해서 쓰시길 바란다.
-
2012-10-03
[Python] enum 정의하기
사실 파이썬에 다른 언어처럼 enum 이라는 타입은 딱 정의된 것은 없으나 찾아보니 다음과 같이 range 함수를 이용해서 숫자를 처음에 할당하는 방식으로 사용한다고 한다. 최근에 사용한 것은 실행인자로 어떤 문자열을 받아서 프로그램내에서 모드(mode) 를 정의 하였다.
-
2012-10-03
[Python] 한자 한글 변환 파이썬 소스
한자어가 섞인 글 안에서 한자어를 한글로 교체해서 반환하도록 하는 프로그램이다. 원래는 C로 작성된 모듈을 봤었는데 너무 복잡스럽게 되어있는 문제가 있어서, 좀더 쉽게 할수 있는 방법이 없을까 찾다가 파이썬(Python)으로 짜 보았는데 훨씬 간결하다. 부가적으로 qsort() 와 이진탐색을 사용한다면 좀더 빠르게도 가능하지 않을까 싶다.
-
2012-06-23
[Python] ImportError: No module named _sqlite3
파이썬에서 자주 사용하는것 중에 하나가 sqlite3 라이브러리인데, 해당 라이브러리를 사용하기 위해서는 파이썬 소스 첫 머리에서 import sqlite 문을 넣어 주어야 한다. 그런데 import 를 한후에 실행을 시켜보면, 다음과 같은 에러가 떨어진다.
-
2012-05-24
[Python] 특정로그 파일 이메일로 전달하기
엔진쪽에서 모듈을 개발하다보면 여러가지 일이 생기는데 그중 하나가 바로 엔진 재기동에 관한 부분이다. 엔진 재기동은 여러가지 경우에 일어나는데 주로 내부 모듈이 잘못된 동작을 수행하고 예외처리가 안되었거나 메모리의 잘못된 참조로 인해서 발생이 된다.
-
2011-12-23
[Python] 장고(Django) 설치 및 이클립스(eclipse) 세팅
일단 장고(Django) 의 개념이나 필요성에 대해서는 필자도 아직 초급자이므로 애기하지 않고 차후에 본 블로그를 통해서 해당 부분에 대해서 자세히 소개 하도록 하겠습니다. 그래두 일단 장고(Django) 를 설치해 보고, 유난히 파이썬(python) 관련된 쪽이 개발환경(IDE)가 잘 마련되어 있지 않은데, 장고(Djan
-
2011-12-20
[Python] 파일내용 찾기
특정 폴더 안에 있는 텍스트 파일을 읽어서 해당 내용을 검색하면 보여주는 파이썬 소스입니다. 기본적으로 스크립트처럼 대화형으로 만들었구요. !start 명령을 치시면 지정한 폴더내 파일을 읽어와서 검색을 시작할 수 있습니다. 소스는 간단하니까 보시면 금방 이해될것 같네요.^^ 추가적으로 폴더 지정을 한다던가 하는 부분을 추가하는 등의 확장에 대한 여지는 남아 있으니, 잘 활용하면 좋을것 같습니다.