AWS Lambda와 AWS Api Gateway를 통해 serverless한 api를 운영할 수 있습니다. AWS Lambda가 무엇인지, AWS Api Gateway가 무엇인지에 대해서는 아래 글에서 자세히 설명하고 있습니다. [AWS]서버없이 Lambda와 API Gateway로 서버API 만들기 그리고 같은 블로그에서, AWS Lambda와 AWS API Gateway를 설정하는 방식에 대해서 잘 설명하고 있습니다. [AWS]Lambda의 시작 - 'Hello World' 출력하기 [AWS]API Gateway - RESTful API만들기 오늘 포스팅은 이 블로그들에서 설명되지 않은 부분들에 대한 보완적 느낌의 포스팅이라고 봐주시면 좋을 것 같습니다. 많은 AWS Lambda에 대한 포스트들이 ..
AWS Lambda로 간단한 Proxy를 만들게 된 경위는 이렇습니다. 밥대생 크롤링 서버는 openssl 1.0.2 버전, Python 3.5 버전에서 구동되고 있습니다. 하지만, 특정 학교의 홈페이지는 openssl 1.0.2 버전으로 요청할 시에제대로 된 응답을 하지 않았습니다. 계속해서 "handshake failure"라는 오류를 뱉었고, 이 사이트(https://www.ssllabs.com/ssltest/)에서의 확인 끝에 openssl 버전이 너무 높기 때문임을 알 수 있었습니다. 특히 Python3 내장 http request 라이브러리와 https의 행동 결과가다르다는 점은 저에게 있어 상당히 흥미로웠습니다.이 오류를 해결하기 위해서느 openssl 버전을 다운그레이드해야 하는데, 파이썬..
이전 글 : HWP로 올라오는 식단정보 크롤링하기(1/2) 자사는 이전 글에서 작성한 대로 개발을 완료했고, 어느 정도 잘 서비스를 운영하고 있었습니다. 하지만, 문제가 드러난 것은 iOS 지원에서였습니다.밥대생은 2016년 초까지만해도 iOS를 전혀 고려하지 않고 설계되었습니다. 밥대생 서비스는 안드로이드를 우선지원하는 것을 원칙으로 세웠고,모든 디자인 초이스는 안드로이드에 맞춰졌었습니다.그리고 iOS는 그 디자인 초이스에 맞춰지는 방향으로 개발해나갔습니다.그러다 보니 안드로이드보다 iOS에 없는 기능이 많았습니다. 하지만, 지난 1년동안 밥대생 서비스는 안드로이드 퍼스트가 아닌iOS 퍼스트 전략을 실행해야 함을 깨달았습니다. 안드로이드와 똑같은 기능, 오히려 더 적은 기능을 iOS에서 제공함에도 불구..
[2016년 4월 7일]에 개인 페이스북에 올렸던 글(https://www.facebook.com/yearnning/posts/991001780975369)을 재작성한 글입니다. 몇몇 학교에서는 식단정보가 HWP파일로 올라오고 있습니다.처음에 HWP파일로 올려주는 학교가 몇 개 되지 않아 HWP파일로 올리는 학교들은 배제하기로 결정했습니다. 하지만, 곧 HWP파일로 식단정보가 올라오는 학교들도 처리할 필요가 있었습니다. HWP파일 외의 형식의 파싱 방법에 대해서는 아래 포스팅을 통해 확인하실 수 있습니다.밥대생 식단정보 수집 방법 소개 하지만, HWP 파일의 경우에는 조금 문제가 있습니다. 우선, 텍스트로 파싱하는 것은 매우 힘든 작업입니다.텍스트로 파싱하기 위해서는 HWP 파일 포맷에 대한 이해가 필요..
오늘은 Flask + Nginx + Uwsgi로 프로덕션 서버를디플로이하는 방식에 대해 소개하고자 합니다. 간단히 요약하면 uwsgi가 flask 앱을 실행하고 있고, nginx로 들어온 요청을 소켓 파일을 통해 uwsgi가 받아서 flask 앱으로 전해주는 구조입니다. 차근차근 진행해 봅시다. 먼저 nginx와 uwsgi를 설치해야 합니다. $ sudo apt-get install nginx(venv) $ pip install uwsgi 여기서 중요한 건 uwsgi를 pip를 통해 virtual environment 안에 설치하는 것이apt-get을 통해 설치하는 것보다 설정하기 편하다는 점입니다.이는 여러 버전의 python이 동시에 설치되어 있는 경우가 많기 때문입니다. apt-get을 통해 uws..
$ sudo apt-get install libmysqlclient-dev (venv) $ pip install Flask (venv) $ pip install SQLAlchemy (venv) $ pip install Flask-SQLAlchemy (venv) $ pip install mysqlclient mysqlclient는 mysql과 SQLAlchemy를 연결해주는 역할을 하며 libmysqlclient-dev가 먼저 설치 되어야 설치할 수 있습니다. SQLAlchemy는 python으로 작성한 코드를 SQL문으로 변환하여 mysql에 전달합니다 Flask-SQLAlchemy는 Flask app에서 SQLAlchemy를 편하게 쓸 수 있도록 해줍니다. 기본적인 코드는 다음과 같습니다.from fl..
[2017년 1월 17일 업데이트] AWS EC2 instance ubuntu가 16.04 LTS로 업데이트 되었으며 python 3.5.2가 기본으로 설치되어있습니다. 아래 포스팅에서는 virtualenvironment를 셋팅하는 부분만 참고하시면 될 것 같습니다. AWS에 Ubuntu Instance를 만들면 기본적으로 Python 2.7.6, Python 3.4.3이 설치되어있습니다. 현재 최신 버전인 Python 3.5.1을 설치해봅시다. 먼저 기본 준비물은 다음과 같습니다. $ wget 로 .tgz파일을 다운받습니다. 그리고, $ ./configure $ make$ sudo make install 을 차례로 입력해준다. 기존에 다른 버전의 python들이 설치되어 있었으므로 다음과 같이 출력될 ..
왜 밥대생 팀이 아마존으로 서버를 이전하게 되었는지에 대해서는 아래 글을 참고해주세요! 왜 밥대생 팀은 아마존으로 서버를 이전하게 되었을까? 이제 아마존 무료 서버 이용 방법에 대해서 설명드리고자 합니다. AWS의 EC2인스턴스를 t2.micro로 설치하고, Ubuntu 서버를 무료이용하는 방법에 대해 소개해드리고자 합니다. 몇가지 주의할 점만 잘 숙지하면 1년간 결제 금액이 전혀 나오지 않습니다. ( 2.5 GHz Intel Xeon Family CPU, 1GB memory, 30GB SSD를 1년간 무료로 이용할 수 있습니다.)먼저 https://aws.amazon.com/ko/ 로 가서 계정을 생성하고, 해외 결제가 가능한 마스터나 비자 등의 카드를 등록합니다.이제 로그인 후 '콘솔에 로그인' 을 ..
밥대생은 현재 Picasso 라이브러리를 사용하고 있습니다.하지만, 이 라이브러리에는 약간의 문제가 있습니다. url에 "["이 들어 있는 경우 이미지를 로드하지 못하는 현상이 나타납니다. 구글링을 하다가 이런 페이지를 발견했습니다. utf-8 문자열이 있으면 로드하지 못한다는 것이었습니다. org.apache.commons.httpclient.util 에 있는 URIUtil.encodeQuery(ChineseURL) 를 쓰면 된다고 합니다.하지만, 이제 안드로이드에서 해당 라이브러리는 기본 제공되지 않는 것 같습니다. 찾다보니, 스택오버플로우에 이런 글이 있었습니다. String urlStr = "http://abc.dev.domain.com/0007AC/ads/800x480 15sec h.264.mp..
2015년 6월 15일. 밥대생 블로그 시작합니다.