본문 바로가기

Programming177

Telegrambot 만들기 seq2seq 모델을 이용해서 챗봇 모델을 학습했는데, 이를 테스트해 볼 환경이 필요했다. (shell에서 입력을 받게 할 수도 있지만.. 뽀대가 안나는 관계로..) 가장 쉬운 방법으로 메신저 서비스의 챗봇 API를 이용해 보기로 했다.카카오톡도 bot api가 있는데 엘로아이디를 발급받고 하는 절차가 너무 귀찮아서 telegrambot api를 이용하기로 했다. (telegram은 그냥 botfather만 찾으면 됨) 우선 텔레그램에 들어가서 bot의 아버지. BotFather를 찾자!! 텔레그램 검색창에서 @BotFather라고 치면 된다.BotFather를 찾았다면 이제 말을 걸어서 access_token을 발급 받자. /start 명령어를 통해 시작을 알리고, /newbot으로 새로운 봇을 등록한.. 2017. 5. 24.
오프라인에서 pip 패키지 설치하기 대부분 온라인 상에서 pip로 해당 저장소 python package를 가져와서 설치를 하는데, 부득이하게 폐쇄망 환경에서 python package를 설치해야 하는 경우가 발생했다. 과연 될까?? 했는데.. 역시나.. 구글신은 뭐든지 된다. 기본 로직은 우선 1. 온라인 환경에서 pip를 통해 패키지를 다운받기 2. usb 등을 통해 폐쇄망 환경으로 다운받은 패키지를 복사하기3. pip를 통해 패키지를 install 하기. 위의 순서로 진행된다. 1. pip를 통해 패키지 다운받기 $> pip install --download . tensorflow pip3 패키지를 받고 싶은 경우에는 pip 대신에 pip3이라고 명시해 주면된다.위와 같이 실행하면 해당폴더(위의 예제에서는 현재 폴더)에 whl 파일들.. 2017. 1. 5.
우분투에서 Django와 gunicorn + supervisor + nginx 연동 하기 요즘은 Django + Nginx 가 대세인가 보다. 구글에서 검색해 보니 많은 사람들이 이런 식으로 사용하는 것을 확인해 볼 수 있었다. 이번 기회에 나도 Django와 Nginx를 연동해 보기로 했다. 예전에 Django와 apache 연동할 때는 아파치 모듈 중에 WSGI 모듈을 설치한 다음에 conf 파일을 수정해 주었는데, 요즘은 gunicorn이라는 python package를 많이 사용하는 것 같다. WSGI 서버로는 uWSGI와 gunicorn, Apache/mod-wsgi를 많이 사용하는데, uWSGI 같은 경우에는 고성능 서버 성능을 지니고 있으며, gunicorn 같은 경우에는 보통 수준의 성능이지만 설치와 관리가 간단하다는 장점이 있다. (mod-wsgi는 별로인 걸로...) Dja.. 2017. 1. 4.
python에서 동영상 처리하기 동영상 처리를 위해 ffmpeg이라는 괜찮은 툴이 있지만, python script와 연동시에 불편함 점이 있다. (예를 들어 ffmpeg은 외부 모듈이기 때문에 프로그램 종료되는 시점을 정확히 알아야 된다든지의....) 그래서 찾아본 결과 moviepy라는 것이 존재했다. http://zulko.github.io/moviepy/# 내가 하려고 하는 작업은 하나의 동영상이 입력으로 들어왔을 때 그것을 초단위로 이미지를 추출하여 해당 이미지의 객체를 인식하는 것이다.(객체 인식 부분은 나중 포스트에...) 우선 moviepy를 사용하기 위해 moviepy를 설치하자. (sudo) pip install moviepy 설치가 완료되었다면 아래와 같이 import를 해보자. from moviepy.editor .. 2016. 12. 13.
python에서 Progressbar 표현하기 Python script를 실행하는데 이게 돌고 있는건지.. 아니면 멈춘건지 의구심이 들때가 간혹 있다. 언제 끝나는지 궁금하기도 하고... 그래서 python으로 progressbar를 표현할 수 있는게 없나 구글에서 찾아봄. http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console 위 그림과 같이 이쁘게 아주 잘 동작하는 것을 확인할 수 있다. 아래의 링크는 python에서 progressbar를 사용할 수 있는 패키지 https://pypi.python.org/pypi/tqdm 2016. 11. 19.
[Python] pillow로 이미지 처리하기 Deep learning에서 CNN은 학습하거나 TEST 하려는 이미지의 크기가 모두 동일해야 한다. 그래서 기존 crawling한 이미지들의 크기 규격을 맞춰줘야 할 필요가 있다. 이게 단순히 crop을 하면 이미지 개체 인식에 side-effect가 발생할 여지가 있고, 또 무작정 해당 사이즈로 resizing을 하기엔 이미지 비율이 깨지는 문제가 발생했다. 이를 해결하기 위해서는 해당 비율에 맞게 해당 크기로 resizing하는 기술이 필요하다. 이를 위해 pillow라는 python package를 사용해 보기로 했다. 설치는 아래와 같이 간단하다. $> pip install pillow pillow의 설치가 완료되었으면 이제 import 해서 이미지 처리 작업을 해보자. 내가 하고자 하는 방법은.. 2016. 5. 30.
구글 GCM 구현하기 서버로부터 push 서비스를 받기 위해서는 구글에서 제공하는 GCM(Google cloud messaging) 서비스를 이용해야 한다. 우선 구글 api 개발자 센터에 접속해서 GCM 서비스를 이용하기 위한 프로젝트를 만들자. 우측 상단에 API Project라는 메뉴를 클릭한 후 프로젝트 생성 메뉴를 클릭해서 프로젝트를 생성하자. 프로젝트를 생성하면 프로젝트 ID가 함께 생성되는데 이 ID 값을 google 측에 넘겨야 GCM ID를 받을 수가 있다. 이제 프로젝트를 클릭해서 사용 하고자 하는 API를 선택해야 한다. Google Cloud Messaging을 클릭한 후 사용 설정을 활성화 해주자. 이제 서버에서 gcm 요청 curl을 날릴 때 인증을 위한 서버키를 만들어야 한다. 사용자 인증 정보에서.. 2016. 4. 26.
Tail Recursion - Coursera 강의 ppt 번역 Review: Evaluating a Function Application f(e1, ..., en) 이라는 함수가 있다고 가정할 때, expression e1,...,en 의 결과 값은 v1,...,vn이 되며, 함수 f 안에 있는 e1,...,en을 v1,...,vn으로 교체해도 함수 f의 동작이 무방할 때 이를 substitution model이라고 한다.아래 코드는 위의 글을 프로그램적으로 다시 쓴 것이다. def f(x1,...,xn) = B; ...f(v1,...,vn)def f(x1,...,xn) = B; ... [v1/x1,..., vn/xn]B 여기서 [v1/x1,...,vn/xn]B이 의미하는 것은 expression B에 있는 모든 vi는 xi에 의해 교체될 수 있음을 의미하고, [v.. 2016. 1. 7.
Blocks and Lexical Scope - Coursera 강의 ppt 번역 Nested functions 많은 작은 함수 조각으로 분리해서 프로그래밍 하는 것은 좋은 functional programming style이다.그러나 sqrtIter, improve, isGoodEnough 와 같은 함수들은 sqrt의 구현 부분이지 도움말 같은 요소는 아니다. 게다가 사용자 역시 이러한 함수에 직접적으로 접근하지는 않는다.우리는 sqrt 내에 이러한 함수들을 집어넣음으로써 "name-space-pollution"을 피할 것이다. The sqrt Function, Take 2 def sqrt(x: Double) = { def sqrtIter(guess: Double, x: Double): Double = if (isGoodEnough(guess, x)) guess else sqrtIt.. 2015. 12. 29.