이번 달에 보게된 책은 다음과 같다.

 

[한빛미디어] Machine Learning with Python Cookbook - 파이썬을 활용한 머신러닝 쿡북

 

 

 

주의할 점은

이 책은 입문자를 위한 책이 아니라

머신러닝에 대해 익숙한 개발자를 위한 책이라는 사실이다.

 

 

 

하지만, 그렇다고 해서 너무 겁먹을 필요는 없다.

 

친절하게도 numpy 기본에 대해서도

한 번 집어주는 등 나름 친절한 부분도 있으니

너무 무서워 할 필요는 없다.

 

 

 

 

 

 

Chapter 1 에서는 numpy에 대해서 알려주고 있고

 

 

 

Chapter 2 에서는 sklearn(사이킷런)을 이용한 샘플데이터 생성하기와

pandas(판다스)를 이용한 외부데이터 불러오기 등을 알려준다.

 

사실 이 정도면 거의 입문서라고 봐도 무방할 것 같다.

 

 

 

그리고, 더욱 더 친절하게도 옮긴이(박해선님)가

"덧붙임"이라고 추가적인 설명까지도 제공해주고 있다.

 

 

 

물론 그렇다고 해서 머신러닝에 대해서

한 번도 공부해보지 않은

말 그대로의 입문자에게

추천할 수는 없을 것 같다.

 

 

머신러닝에 대해서

한 번쯤 간략하게 살펴본

입문자는 아니고

초보자라고 불리울 정도의

수준에 있는 분에게 필요한 책으로 보인다.

 

 

 

그리고 개인적으로 마음에 드는 것은

흑백이 아니라 살짝 컬러가 들어가 있다 !!!

 

 

 

 

이 책은 표지에 써 있는 것처럼

사이킷런 중심으로 작성되어 있다.

 

뒷 부분에는 케라스로 작성된 내용도 있긴하다.

 

참고하면 될 것 같다.

 

 

 

 

이 책에 대한 정오표는 아래에서 확인할 수 있다.

 

https://tensorflow.blog/ml-cookbook/

 

 

 

그리고, 원서에서는 제공하지 않는 코드를 옮긴이가 별도로 제공해준다!!!

 

https://github.com/rickiepark/machine-learning-with-python-cookbook

 

 

* 이 책은 한빛출판네트워크의 '나는 리뷰어다' 이벤트를 통해 제공 받은 도서입니다.

반응형


앞에서 Visual Studio Code를 웹으로 사용하는 방법을 알아보았다.


Web based Visual Studio Code (Online VSCode)

https://www.whatwant.com/entry/Web-based-Visual-Studio-Code-Online-VSCode




그러면 이번에는 Python Code를 작성하기 위한 과정을 살펴보자.





아! 기본 운영체제는 Ubuntu 18.04 이다.






[ Python ]


Python을 설치하자.

2.x 와 3.x 모두 설치해버리자.


❯ sudo apt install python python-pip virtualenv

❯ sudo apt install python3 python3-pip python3-venv







[ Extension ]


VSCode를 실행하고...

왼쪽 제일 아래 아이콘을 클릭하면 VSCode의 Extension을 고를 수 있는 화면이 나온다.





검색어를 넣어서 검색을 해도 좋고,

보이는 것을 클릭해도 된다.


Python 관련 여러개의 Extension이 보이겠지만,

Microsoft에서 제공해주는 아이로 설치하자.


오른쪽에 나오는 화면의 "Install"을 클릭하면 된다.





설치가 되었지만, 바로 적용되는 것은 아니다.


"Reload Required"를 클릭해버리면 된다.








[ File ]


Python 파일을 만들기에 앞서서,

작업을 할 디렉토리가 먼저 준비되어야 한다.


미리 생성해놓을 수도 있고

VSCode에서 생성을 할 수도 있다.





원하는 디렉토리를 고르면 된다.





그리고, "New File"을 선택해서 파일 이름을 정해주면 된다.










[ Error ]


간단한 Python 파일을 만들고 실행을 해보기 전에,

어떤 버전의 Python을 사용할 것인지를 선택해보자.





왼쪽 아래에 나오는 "Python 3.6.9 64-bit" 부분을 클릭했더니...

에러가 발생했다.


"command 'python.setInterpreter' not found"


필요한걸 찾을 수가 없단다.



지금 code-server로 구동되고 있는 VSCode와 Extension의 궁합이 맞지 않아 발생하는 에러로 보인다.

(이걸 알아내기 위해 정말 오랫동안 삽질을... ㅠㅠ)









[ Extension Downgrade ]


왼쪽 아래 아이콘을 눌러서 Extension 메뉴로 간 뒤에

왼쪽 Installed 항목에 있는 Python에서

기어(Gear) 모양의 버튼을 누르고

"Install Another Version..." 메뉴를 선택하자.





주르륵 나오는 버전 중에서

"2020.5.86806"

버전을 고르자





"Reload Required"

눌러서 재시작~





못보던 아래와 같은 화면이 나오면 성공~!!!











[ Select Linter ]



Python Coding Style을 검사할 엔진(?)을 고르는 것이다.


위에 나오는 화면에서 "Select Linter"를 선택하거나


[Ctrl + Shift + P]를 눌러서 나오는 화면에서 "Linter" 타이핑해서

"Python: Select Linter"를 선택하자.





개인적으로는 "flake8"을 선호한다.


그러면 끝~!!








[ Run ]


이제, 다시 진행해보자.


왼쪽 아래에 나오는 "Python 3.6.9 64-bit" 부분을 클릭해보자.





Python 2.x를 사용할지

Python 3.x를 사용할지

고르면 된다.


소스 코드에서

마우스 오른쪽 버튼을 누르고

메뉴 중에서

"Run Python File in Terminal"

클릭~





아래와 같이 실행 결과가

Terminal 윈도우에 나온다.





끝~




반응형


SW 개발자라고 하면 누구나 알고 있는 Stackoverflow


신기하게도 영어를 싫어하는 개발자들조차도

애용한다는 Stackoverflow


그러한 Stackoverflow에서 2019년 Survey를 발표하였다.




Developer Survey Results

2019



https://insights.stackoverflow.com/survey/2019




무려 9만여명의 개발자들의 응답 내용으로 만들어진 Survey라고 한다.




[ 주요 결과 ]



Python


   - 가장 사랑받고, 또 가장 원하는 언어로 뽑힌 Python 이다.

   - 가장 사랑받는 순위로는 2위이지만, 가장 원하는 언어로는 1위에 뽑혔다.



   - 가장 최악의 언어 순위가... Object-C, C, PHP, Ruby, R, C++, Java 등이 있는 것이 눈에 띈다.

   - 사랑하는 언어 1위로 뽑힌 Rust가 원하는 언어로는 6위에 있는 것 또한 특이하다.




DevOps / SRE


   - 업무에 가장 만족하며, 취업 안정성 측면에서도 가장 좋은 평가를 받고 있는 일자리는 바로 DevOps/SRE 분야인 것으로 나타났습니다.

   - 최근 서비스 SW 개발분야가 각광을 받는 배경때문이지 않을까 싶습니다.



   - 임금에 있어서도 manager에 이어 나란히 2/3위가 DevOps와 SRE이다.




Benefit of Stackoverflow


   - 60%의 개발자들은 평균 3회 정도 문제를 해결하기 위해 Stackoverflow를 방문한다고 한다.



   - 또한 이렇게 Stackoverflow를 통해 문제를 해결하는 것은 개발자에게 주당 30 ~ 90 분의 시간을 절약 해준다고 한다.





재미있는 다양한 설문 조사 결과를 볼 수 있어서 좋다.

전세계에 있는 9만여명의 개발자들에 대해서 볼 수 있는 기회가 흔하지 않기 때문이다.


더 많은 결과를 보고 싶으신 분들은 사이트에 방문하면~!! ^^


반응형


머신러닝에 대해서 공부를 한다고 하면,

예전에는 (아직도) R 등과 같은 수학에 맞춰진 언어를 소개하기도 하지만 대부분은 Python을 추천한다.


사실은 Python이라는 언어 자체가 중요한 것이 아니라

머신러닝을 할 때 필요한 많은 기능(?)들을 제공해주는 라이브러리들이 중요한데

Pandas, Numpy 라이브러리가 워낙에 잘 되어 있어서 Python을 사용하라고 하는 것이다.

물론 Python이라는 언어 자체도 매력적이긴 하지만...



이에 대해서 공부를 하고자 하는 분들에게 드리는 좋은 정보~


Google에서 무려 한국어로 제공해주는 "머신러닝 단기집중과정" 온라인 강좌

https://developers.google.com/machine-learning/crash-course


그 중에서도 Pandas에 대해서 직접 실습해가며 배울 수 있는 정말 멋진 과정

- https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?utm_source=mlcc&utm_campaign=colab-external&utm_medium=referral&utm_content=pandas-colab&hl=ko



그런데, 위의 내용 말고도 좋은 강좌가 하나 더 있다.

머신러닝에 대해서 공부하다보면 누구나 알게 되는 Kaggle !!


 Kaggle에서도 Pandas에 대해서 친절한 강좌를 제공해준다.

https://www.kaggle.com/learn/pandas


4시간이면 끝낼 수 있단다~!! ^^ (필자는 멍청해서 4일은 걸릴듯... ㅠㅜ)




모두들 즐거운 머신러닝 공부시간 되세요~


반응형


Python version.2 지원이 끝난다고 하니

이제는 Python version.3 환경을 기본으로 사용해야할 것 같다.


Ubuntu를 설치하면 기본적으로 셋팅되어 있는 Python은 version.2 이다.


이를 변경하여 Python version.3 환경으로 꾸며 보고자 한다.




0. 기본 환경


    - Ubuntu 설치가 된 깨끗한(?) 환경이다.


$ lsb_release -a


No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 18.04.3 LTS

Release:        18.04

Codename:       bionic



$ python --version


Python 2.7.17




1. python3 상태 확인


    - 어?! 그런데, 살펴보면 python3도 이미 설치되어 있다.


$ python3 --version


Python 3.6.9


    - 뭐뭐가 있는지 한 번 보자


$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




2. python 3.7 설치하기


    - 추가로 Python 3.7 버전을 설치해보자


$ sudo apt-get install python3.7


Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7-minimal

Suggested packages:

  python3.7-venv python3.7-doc binfmt-support

The following NEW packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7 python3.7-minimal

0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.

Need to get 4,282 kB of archives.

After this operation, 22.5 MB of additional disk space will be used.

Do you want to continue? [Y/n]


    - 잘 설치되어 있는지 확인 !


$ python3.7 --version


Python 3.7.5



$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3.7

python3.7m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




3. Python 버전 등록


    - 기본적인 설정이 등록되어 있는지 확인하여 보자


$ sudo update-alternatives --config python


update-alternatives: error: no alternatives for python


    - 기본 정보를 차례대로 등록해보자


$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1


update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2


update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3


update-alternatives: using /usr/bin/python3.7 to provide /usr/bin/python (python) in auto mode




4. Python 버전 설정


    - 위에서 기본적으로 등록을 했으니... 실제 확인


$ sudo update-alternatives --config python


There are 3 choices for the alternative python (providing /usr/bin/python).


  Selection    Path                Priority   Status

------------------------------------------------------------

* 0            /usr/bin/python3.7   3         auto mode

  1            /usr/bin/python2.7   1         manual mode

  2            /usr/bin/python3.6   2         manual mode

  3            /usr/bin/python3.7   3         manual mode


Press <enter> to keep the current choice[*], or type selection number: 0



$ python --version


Python 3.7.5


    - 이제, "python" 이라는 이름으로 버전 확인을 하면 '3.7.5'가 나온다 !!!



그런데, 3.7 버전으로 했을 경우에.... 뭔가 신경써야할 것들이 많은 것 같다 !! (라이브러리 관리가 쉽지 않다는...)

Ubuntu에서는 현재 3.6 버전을 기본으로 제공하고 있으니 이를 따라서 3.6 버전으로 가는 것을 추천한다.



모두 수고하셨어욥~!!


반응형


컴퓨터 공학을 전공하긴 했지만,

사실 컴퓨터 잘알못에다가 겉멋만 든 실속없는 불량 프로그래머... 아니 불량 컴오타쿠인 글쓴이인데...


겉멋만 들었기에 한동안은 집에 있는 컴퓨터들도 전부 리눅스 환경이었었다.

물론 지금은 편한 것을 추구하기에 결국은 Windows7...


하지만,

회사에서 사용하는 컴퓨터의 Host OS는 Ubuntu 이다.

회사 시스템 접속을 위해서 VirtualBox에다가 Windows7 Guest OS도 사용한다.


집에서도 서버 구성은 최대한 리눅스 환경으로 구축하고자 노력은하는데...




이런 겉멋만 든 불량 컴오타쿠이기에 Python 코딩을 할 때엔 별도의 IDE를 사용하지 않고 있다.


차마 vi / vim 을 사용하기에는 너무 귀차니즘 아니 불편함이 많아서 (죄송합니다 vi 매니아 분들...)

nano editor를 이용하고 있다.






그러다가 최근에 Machine Learning 관련 교육을 받다가

정말 놀라운 신세계를 만나게 되었다.



Anaconda 라는 "Python Data Science Platform"이다.

데이터 사이언스에 필요한 라이브러리가 포함된 Python 배포판(?)인데,

그 안에 정말 멋진 에디터도 포함되어 있었던 것이다.


"Jupyter Notebook"이라는 이름인데...

실행하면 localhost로 웹서버(?)를 띄우고... 웹브라우져를 통해서 Python 코딩을 할 수 있게 해주는 에디터이다.

부분적인 실행도 가능하고, 다양한 단축키를 지원하며, 추천 기능도 아주 훌륭하다.

특히, 학습용으로 정말 훌륭하고 다른 사람들에게 내가 만든 코드를 설명하기에도 정말 훌륭한 수단이다.




개인적으로 정말 충격이었다.

아~ 세상은 내가 알지 못하는 것이 정말 많구나.... 컴퓨터 세상에서도...




하지만, 이것을 나의 Python Editor로 낙점하기에는 적합하지 않은 부분이 있었다.

웹브라우져 기반의 에디터라는 것이 장점이기도 하지만 단점이기도 하고...

속도(성능)도 좀 문제가 되었고

기본적인 파일 형태가 python 순수 코드가 아닌, 쥬피터 노트북 형식의 파일 타입이라는 것도...




그래서, Python Editor 인기 순위를 알아보았다.

최근 1년 내에 포스팅된 것들을 뒤져보니 대강 아래와 같았다.


 

www.slant.co

jaxenter.com

www.theindianwire.com 

www.it4nextgen.com 

 1

PyCharm 

PyCharm 

PyCharm 

Eclipse + PyDev 

 2

Vim 

Spyder 

Eclipse + PyDev 

PyScripter 

 3

VS Code 

Eclipse + PyDev 

Wing IDE 

Eric Python IDE 

 4

Sublime Text 

IDLE (and IdleX) 

Komodo IDE 

 PyCharm

 5

Spacemacs 

Atom 

Spyder 

 Wing IDE


흐음... PyCharm이 짱이군!!!




그런데, 일반적인 오픈소스 프로젝트는 아닌 듯 보인다.

jetbrains 라는 회사에서 만들고 있는 아이인가보다.



다행히, Community 버전을 배포해주고 있다.

아싸~~~~!!!



https://www.jetbrains.com/pycharm/download/#section=windows



그냥 설치하면 된다~~~~ Go Go~




내가 작성한 코드에서 사용하지 않는 것들도 알려주네 !?

(import 중에서 회색으로 된 부분~)




PyCharm 사용법은 뭐 아직 나도 잘 모르니....


최소한.... 타이핑을 하다보면 알아서 추천해주는 기능만으로도 충분히 만족한다.



PyCharm 이야기 쓰면서 정작 PyCharm 이야기는 별로 없는 이번 포스팅은 여기까지~

반응형


웹서핑을 하다가 무심코 알게된 왕 저렴한 호스팅 서비스...

    - https://www.clien.net/service/board/use/12730123?od=T31&po=2&category=&groupCd=



엄청난 지연 속도로 솔직히 우리나라에서 사용하기에 어려움이 많은 호스팅 서비스이지만,

뜬금없는 서비스 사용 장애를 보이기도 한다고는 하지만,

저렴한 맛에 공인 IP를 갖고 있는 리눅스 머신을 하나 갖고 싶다는 욕심에 과감히 질렀는데....



서버 하나 만들어서 Ubuntu 16.04 하나 올리고... locale 잡아주고 환경 설정 좀 해줬는데...


   "그런데, 이젠 뭘하지?"




그러다가 문득... 챗봇 하나 만들어볼까?!


예전에 텔레그램 챗봇 만든다고 AWS에서 lambda 서비스 같은거 가지고 장난해봤는데...

이번엔 "카카오톡"을 대상으로 하나 만들어보자! 라는 생각이 불끈(?) !!!




그런데... 자료를 찾다보니...

    - https://github.com/plusfriend/auto_reply



API형 스마트채팅 신규 등록을 2018년 11월 30일부터 중단한단다... 이런!

뭐 그래도 그 안에 등록을 하면 2019년까지는 사용할 수 있다니

지금 발견(?)한 것이 다행이다~!!! 1년간 재미있게 사용하면 된거지 뭐~!!







만들어보고자 하는 채팅 봇의 개발/운영 환경은 다음과 같다.


    - 채팅 봇이 위치할 곳은 "공인IP를 갖고 있는 Ubuntu 16.04 LTS 환경"

    - 채팅 봇은 Python 2.7.x 버전으로 구현

    - 가능한 기본 라이브러리로만 구현




이제 하나씩 해보자.





1. 플러스친구 앱 생성


    - 채팅 봇이라는 것이 결국은 한 명의 사람 역할을 하는 것이니만큼, 별도의 계정이 필요하다.

    - 그래서 카카오에서는 플러스친구라는 것을 제공해준다. 아래 링크에서 신규로 등록하자.


        . https://center-pf.kakao.com/


    - 내 비즈니스(?)를 위한 방을 하나 만들고, 그 안에서 실제 일을 할 플러스친구를 하나 만드는 것이다.



    - 음... 과금문제가 궁금했는데... 무료로 메시지 1000건은 보낼 수 있다보다.

    - 그런데... 보다보니 내가 생각한 메시지가 아닌가보다. push로 보내는 광고같은 메시지가 1000건 제한인가보다.

    - 대화는 그냥 막해도 되나보다~ 으음?! 좋은데?! 그런데, 카카오톡의 지명도에 비해 채팅 봇은 조용하지?!





2. 채팅 봇 등록 맛보기


    - 카카오톡에서는 "앱"이라는 이름으로 지칭하는 것 같은데, 난 내마음대로 "채팅 봇"이라고 지칭할거다!


    - 플러스친구 관리 페이지를 보면 왼쪽 메뉴 중에 "스마트채팅"이라는 것이 있다. 한 번 클릭해보자.



    - 우리는 대화형 "채팅 봇"을 만들 것이니 당연히 오른쪽의 "API형"으로 설정하면 된다.



    - 어!? 그런데... "앱 URL"엔 뭘 넣어야 하지?! "API테스트"는 또 뭐고?!


    - 상태를 보아하니.... 일단 뭘 만들고 난 이후에 여기에 등록을 해야할 것 같다. 친절하지 않은 카카오 !!!






3. 기본 코드 만들


    - "앱 등록"을 위한 기본적인 python 코드를 만들어보자.


#!/usr/bin/env python

#-*-coding: utf-8-*-


import os

from flask import Flask, request, jsonify


app = Flask(__name__)


@app.route('/keyboard')

def Keyboard():


    contents = {

        "type"     : "buttons",

        "buttons" : [ "살아있어" ]

    }


    return jsonify( contents )



if __name__ == "__main__":

    app.run( host = '0.0.0.0', port = 7000 )


    - 위 코드를 저장한 다음에 실행을 하고자 하면 에러가 나올 수도 있다.


Traceback (most recent call last):

  File "./whatwant.py", line 5, in <module>

    from flask import Flask, request, jsonify

ImportError: No module named flask 


    - 귀찮더라도 추가 패키지 설치를 해주자.


$ sudo apt-get install python-flask


    - "채팅 봇"을 운영하기 위해서는, 웹서버 역할을 할 아이가 필요하다.

    - 별도로 웹서버를 띄우면 번거로우니, flask로 간단히 해결하고자 하는 것이다.






4. 앱 등록하기


    - 이제 등록하자 !!!


    - 위에 만든 코드를 일단 실행하자.


$ chmod +x ./whatwant.py


$ ./whatwant.py

 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)


    - "앱 URL"에 python이 실행되고 있는 서버의 주소를 써주고선 "API 테스트"를 클릭해보자.



    - 제대로 값이 리턴된 것을 확인할 수 있다. 앗싸~!!!

    - 일단 등록까지는 마쳤다!!!








5. 스마트채팅 시작하기


    - 실제 카카오톡에서 정상적으로 동작하기 위해서는 등록된 앱을 시작시켜줘야 한다.



    - 오른쪽에 있는 API형을 시작하면 된다.

    - 카카오톡에서 등록된 플러스친구를 찾아 1:1 채팅을 하면 뭔가 나오는 것을 볼 수 있을 것이다.









6. 미세먼지 정보를 얻어오기 위해서


    - 음... 개인적인 목적으로 우리 동네의 미세먼지 정보를 불러오는 아이를 만들고 싶었다.

    - 그래서 찾아본 미세먼지 정보 API를 제공해줄 수 있는 곳...


        . https://www.data.go.kr


    - 아래와 같이 공공데이터포털의 오픈 API 부분을 보면 원하는 것을 찾을 수 있다.



    - 회원가입 후, 로그인을 하고...



    - 위와같이 대기오염정보 조회 서비스를 찾을 수 있다.



    - "활용신청"을 누르면 공짜로 즉시 승인되어 API를 사용할 수 있게 된다... 하지만...



    - Chrome에서 들어가려고하니... 위와 같이... 이런! 파일 다운로드는 하지 않을건데... 그럼에도... 결국은 IE에서...




    - 개발을 목적으로 하는 것과 운영을 목적으로 하는 것을 구분하는 것 같다. 개발용도로도 24개월간은 지원해준다.



    - 마이페이지를 통해서 등록된 서비스를 볼 수 있다. 즉시 승인이라고는 하는데...

    - 서버에 실제 등록되기까지에는 시간이 좀 걸리는 것 같다. (즉, 바로 사용이 안된다)



    - "일반 인증키" 발급 신청을 하면 위와 같이 일반 인증키가 나오는데, 이걸 이용해서 API를 사용할 수 있는 것이다.

    - 미리보기를 이용하면 샘플처럼 결과를 확인할 수 있는데, 필자 같은 경우 1시간 정도 후에 가능했다.





7. 뭔가 그럴듯한 코드 만들기


    - 미세먼지 정보를 얻어올 수 있는 API까지 확보를 했으니 코드를 만들어 보자.


    - 위에서 만든 코드 파일을 개선시켜보겠다.


#!/usr/bin/env python

# -*- coding: utf-8 -*-


import os

import requests

from flask import Flask, request, jsonify


app = Flask(__name__)



@app.route('/keyboard')

def Keyboard():


    return jsonify( {"type" : "text"} )





@app.route('/message', methods=['POST'])

def message():


    content = request.json['content']


    if( u"안녕" in content ):

        contents = { 'message': { 'text' : u"안녕하세요" } }


    elif( u"사랑" in content ):

        contents = { 'message': { 'text' : "저도 사랑해요" } }


    elif( u"뭐야" in content ):

        contents = { 'message': { 'text' : "저도 제가 뭔지 모르겠어요" } }


    elif( u"미세먼지" in content ):

        url  = "http://openapi.airkorea.or.kr/openapi/services/rest/"
        url += "ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
        url += "?serviceKey=1234"
        url += "&numOfRows=10&pageSize=10&pageNo=1&startPage=1"
        url += "&dataTerm=DAILY&ver=1.3&_returnType=json"
        url += "&stationName=%EB%8F%99%ED%83%84"

        r = requests.get( url )

        contents = { 'message': { 'text' : "죄송합니다만, 미세먼지 정보를 확인하지 못했어요!" } }
        if( r.status_code == 200 ):

            items = r.json()
            if( 'list' in items.keys() ):

                item  = u"%s 측정된" % items['list'][0]['dataTime']
                item += u"\n동탄의 미세먼지는"
                item += u"\npm10=%s, pm25=%s 입니다" % (items['list'][0]['pm10Value'], items['list'][0]['pm25Value'])
                item += u"\n24시간 예측값은"
                item += u"\npm10=%s, pm25=%s 입니다" % (items['list'][0]['pm10Value24'], items['list'][0]['pm25Value24'])
                item += u"\n입니다."

                contents = { 'message': { 'text' :  item } }

    else:
        contents = { 'message': { 'text' : content + u"가 무슨 말이야?" } }

    return jsonify( contents )


if __name__ == "__main__":
    app.run( host = '0.0.0.0', port = 7000 )


    - button 등을 이용한 대화법도 있지만, 그냥 사람같은 대화를 원해서 위와 같이 해봤다.


    - 서버에 채팅 봇을 계속 띄워놓기 위해서는 다음과 같이 실행하면 된다.


$ ./whatwant.py &


    - 제대로 서비스 하려면 log도 남겨야 할 것 같고 뭐 기타 등등 해야할게 많을 것 같다.

    - 하지만, 지금은 그냥 그럴듯하게만 하면 되는게 목표니 여기까지만~^^






8. 테스트 하기


    - 스마트폰 화면 캡쳐가 귀찮아서.... 말로 떼우기.... ^^


    - "채팅 봇"을 껐다 켰다가 하면 카카오톡에서 대화할 때 대화를 계속 입력할 수 없을 수도 있다.

    - 이럴 때엔 대화방 나갔다가 다시 1:1 채팅걸면 된다.


    - flask를 이용해서 웹서버처럼 돌리다보니 python 에러메시지가 잘 나오지 않는다.

    - 가능하면 별도로 코드 테스트를 한 뒤에 채팅 봇에 코드 넣는 것이 좋다.

    - 아니면 중간에 계속 print 찍어야 할 수도....


    - 일단 위와 같이 하면 아래와 같이 잘 된다~ ^^


끝~ ^^


반응형

삼성 스마트TV를 제대로 사용해보기 위해서 AllShare 기능을 설정해보고자 했다.
최근에는 삼성링크라는 이름으로 제공해주고 있는 서비스다.

그러나 사실 원하는 만큼의 깔끔함이나 원활한 기능을 제공해주고 있지는 못하고 있고
더군다나 최근에는 거의 버린 서비스라는 느낌이 확~

음... 내가 이런 말을 하면 안되는데.... 음... 안되는데...

뭐 여하튼...

그래서 해당 기능을 서버에서 제거해버렸는데 여전히 남아있는 흔적이 있었다.
동영상 파일마다 삼성링크가 만들어낸 [ *.mta ] 파일들이 바로 그것이다.


해당 파일들을 찾아서 지우는 일을 하고 싶어서... Python을 이용해보려 했다.


1. Windows 환경에서 Python 실행하기

   - http://whatwant.tistory.com/703 
 

2. 스크립트 만들기

   - 아래와 같이 간단한 스크립트로 찾아서 지웠다.


#!/usr/bin/python

# -*- coding: utf-8 -*-


import os

import sys


EXT = '.mta'


if __name__ == "__main__":


        if len(sys.argv) < 2:

                sys.exit('Usage: %s path' % sys.argv[0])

        if not os.path.isdir(sys.argv[1]):

                sys.exit('ERROR: %s was not found!' % sys.argv[1])

        PATH_TARGET = sys.argv[1]


        for root, dirs, files in os.walk( PATH_TARGET ):


                for file in files:

                        ext = os.path.splitext( file )

                        if EXT == ext[1]:

                                os.remove( os.path.join(root,file) )


        exit()



   - 예외 사항 등에 대한 고려가 없었기에 위험한 코드일 수도 있다. 주의!!!

 
반응형

+ Recent posts