flask - request.script_root 이용하기

하나의 웹을 여러 path 에 올려야 할 경우가 있다. 예를 들면, 테스트를 위해서 /web1, /web2 이런식으로 구성해서 올릴 경우이다. 이런 경우 프론트단에서 URL로 지정해 놓은 값들을 수정해 줘야 한다. ajax 를 호출한다고 생각해 보자. 원래 /web/api/room 이런식으로 ajax 를 호출하는 경우가 있었다면 /web1, /web2 에 따라서 /web1/api/room, /web2/api/room 이렇게… Read More

pymssql nextset() 빈값 이슈

최근에 구현한 부분에서 이상한 경험을 했는데 같은 db 프로시저를 호출하는 코드를 쓰고 테스트를 했는데 어떤 조건으로는 데이터가 순서에 맞게 잘 나오고 안나오고 하는 경우였다. 데이터는 mssql 저장 프로시저에서 2개의 결과셋을 반환하는데 첫번째에서는 보여줄 데이터의 금액, 건수 합산 데이터를 보여주고, 두번째에서는 실제 보여줄 데이터가 나오는 것이었다. 그래서 generator 를 이용해서 g.next(), g.next() 이렇게 2번… Read More

flask - render_template 어떻게 사용할까?

flask 를 사용하다보면 view 코드가 길어지는 경우가 있는데 그 중 하나가 views.py 에 route 함수가 많아져서 길어지는것 그리고 다른 하나는 render_template() 함수에 파라미터가 많아져서 길어지는 경우다. 전자의 경우 blueprint 로 분할하거나 resource 단위로 분할하면 해결할수 있다. (이건 다른 포스트에서 자세히 설명하겠다.) 후자의 경우에는 어떻게 해결 할수 있을까? 뭐 이런식으로 길어지는 경우다. return render_… Read More

No Show 면접

말 그대로 노쇼(No Show)다. 면접자가 나타나지 않았다. 연락도 되지 않았다. 한 자릿수의 서류 통과자 중에 2명이 불참했다. (불참을 선언한게 아니다.) 한명은 전화를 받지 않았고, 다른 한명은 면접일자/시간을 변경해 줬음에도 불구하고 아무 말도 없이 오지 않았다. 오지 않는건 자유다. 그렇지만 못 간다는 애기를 전달해 주는게 예의가 아닐까? 왜 오지 않는지 묻지도 않는데 기다리는… Read More

MNIST Tensorboard 따라하기

실용주의 머신러닝 CNN MNIST TENSORBOARD from SeongHyun Ahn MNIST 에 대해서 그리고 CNN 을 이용해서 그것을 tensorboard 에 보여주는 방법을 정리한 내용이다. 스터디할 때는 tensorboard 시연이 제대로 되지 않아서 아쉬웠는데, mnist_cnn_tensorboard 를 참고하면 tensorboard 를 띄워서 이미지와 레이블이 데이터 포인트에 붙여진 것을 확인 할 수가 있다.… Read More

Azure Text Analytics 연동하기

지난 글에서 chatfuel을 이용해서 챗봇을 간단하게 만들어봤는데 MS Azure 에서 제공하는 Text Analytics API 를 연동해서 감정분석까지는 아니고 단순하게 텍스트에 대한 긍정부정을 알려주는 챗봇을 구성해 보기로 했다. https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/ 총 4가지 API를 제공하는데 DetectLanguage 랑 Sentiment API 를 이용하기로 했다. Detect Language 는 입력된 텍스트에 대한 언어를 감지해서 결과를… Read More

chatfuel 이용 간단하게 챗봇 만들기

실용주의 머신러닝 스터디 과제를 하면서 챗봇을 만들수 있는 여러 프레임워크나 도구들을 알게 되었는데 그 중 하나가 chatfule 이었다. bot framework 는 azure를 가입해야하는 부담감이, api.ai는 gcp를 이용해야 하는것 같았다. 기존에 쓰던 개인 서버에서 돌려보고 싶었고 비교적 간단한 chatfuel 을 이용하게 되었다. 일단 chatfuel 은 현재 페이스북 메신저와 텔레그램 봇을 지원하고 있는데, 페이스북 메신저로 연결했다.… Read More

서비스를 개발 할 수 있는 회사는 따로 있다.

몇번의 회사들을 옮기면서 느낀점이다. 내가 다녔던 회사들의 대부분은 솔루션이나 B2B 사업을 통해서 캐쉬카우를 확보한 회사들이었다. 그런 회사들은 이상하게 공통적으로 어떤 자체 서비스를 개발하고 싶어한다. 회원 가입을 하고 뭔가 기존 솔루션과 연관된 서비스를 제공하거나, 다른 서비스를 제공하고 돈을 받는. B2B 위주의 기업들이 B2C 를 하고 싶어 하는 것이다. 그런데 그런 회사들의 대부분의 서비스 개발 혹은 운영에… Read More

Python - 리스트 순회중 수정하는 문제

본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것 같다. Common Mistake #5: Modifying a list while iterating over it 리스트 순회중 수정하는 문제 >>> odd = lambda x : bool(x % 2) >>> numbers… Read More

flask - json_encoder 지정하기

API 상에서 JSON 으로 응답을 내보내기 위해서는 데이터를 Json Serialize(직렬화)를 해야한다. 그런데 json 에서 표현할 수 있는 데이터는 한정이 되어 있어서 각 프로그래밍 언어에 있는 모든 타입을 지원하지는 못한다. Decimal 형도 그런 예 중 하나인데 파이썬에서는 json.dumps()를 통해서 주로 직렬화를 하고 그 함수의 기능 중에 cls 인자를 통해서 JSONEncoder 를 구현한… Read More