Programmings

[Python] 카카오톡 챗봇 오픈빌더를 활용한 사칙연산 계산기 구현

읽기 전 공지

  • 본 글은 2022년 11월 28일까지만 유효합니다. 무료 버전이 사라지기 때문에, 앞으로 어떻게 될지는 현재 글 쓰는 시점에서는 모릅니다. 이 부분에 주의해서 참고 하시기를 바랍니다.

개요

  • 카카오톡 챗봇 만들기를 Python + FLASK를 통해 간단한 튜토리얼을 만들어본다.

사전준비

  • OBT 참여승인을 받아야 한다.

기본설정

  • 카카오톡 챗봇 버튼 클릭 후, 봇 이름 생성
    • [봇 만들기] - [카카오톡 챗봇]

  • 카카오톡 채널 연결을 진행한다.

  • virtualenv를 활용하여 가상환경을 설정한다.

$ virtualenv venv
created virtual environment CPython3.9.7.final.0-64 in 6029ms
  creator CPython3Windows(dest=C:\Users\human\Desktop\heroku-kakao-chatbot\venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\human\AppData\Local\pypa\virtualenv)
    added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

Heroku App 구축

  • 간단하게 app 파일을 만들어 Heroku App URL을 확보해보자.
  • app/main.py
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello, World!'
  • wsgi.py 생성
    • app은 폴더를 말하고, main은 main.py를 말한다.
from app.main import app

if __name__ == "__main__":
    app.run(threaded=True, port=5000)
  • Procfile 파일 작성
    • 카카오톡 챗봇에서는 포트번호를 입력을 해줘야 한다.
      • localhost:5000 처럼 명시적으로 입력해주는 것으로 생각하면 된다.
web: gunicorn --bind 0.0.0.0:$PORT wsgi:app
  • runtime.txt
    • Python 버전을 업로드 한다.
python-3.9.7
  • Heroku login
    • Heroku 배포 전에 반드시 로그인을 해야 한다.
$ heroku login
  • Heroku Project 생성
    • 프로젝트 생성 시, 같은 이름이 있을 경우 다시 작성할 수도 있다.
$ heroku create heroku-kakao-chatbot
  • Heroku 배포
    • Heroku에 배포하기 위해서는 크게 아래 코드만 기억한다.
$ git add .
$ git commit -am "your_message"
$ git push origin main ## Github Repository에 업데이트
$ git push heroku main ## Heroku 코드 배포
  • 기존 Existing App과 연동하려면 배포 전 아래 코드를 선 실행 후, 배포를 진행한다.
$ heroku git:remote -a example-app
  • 실행하면 아래와 같은 결과물이 나타난다.

스킬 서버 구축 기본편

  • 스킬 서버에서 제공하는 2가지 API URI는 다음과 닽다.

Python Selenium Crawling Tutorial

강의소개

  • 인프런에서 Streamlit 관련 강의를 진행하고 있습니다.
  • 인프런 : https://inf.run/YPniH

개요

  • 크롬 드라이버를 활용하여 Selenium을 설치한다.
  • 네이버 평점에서 특정 영화(노트북)를 관람한 관람객이 영화에 댓글을 단 영화 수집

크롬 드라이버 설치

  • 자신의 크롬 버전과 같은 버전을 설치한다.
    • 오른쪽 상단에서 더보기를 클릭한다.
    • 도움말 > Chrome 정보를 클릭한다.

Untitled

django Web 개발 1 - 기본 설정

프로젝트 개요

  • Python Django로 To-do List를 만들어본다.

파이썬 설치

가상환경 설치

  • 파이썬 설치가 끝났다면, 해당 깃허브를 다운로드 받는다.
$ git clone https://github.com/dschloe/django_to_do.git
  • django_to_do 폴더에 진입 후 아래와 같이 실행한다.
$ cd django_to_do
$ virtualenv venv
created virtual environment CPython3.9.7.final.0-64 in 7884ms     
  creator CPython3Windows(dest=C:\Users\human\Desktop\django_to_do\venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\human\AppData\Local\pypa\virtualenv)
    added seed packages: pip==22.0.4, setuptools==62.1.0, wheel==0.37.1
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
  • 실제 실행 후 venv 폴더가 나타나는지 확인한다.
$ ls
README.md  venv/
  • 가상환경에 접속한다.
$ source venv/Scripts/activate
(venv)

환경 설정 Django

Installing Django

$ pip install django pytz

my_app 폴더 생성

  • 새로운 폴더 my_app 하나 생성 후 해당 경로에 접속한다.
$ mkdir my_app && cd my_app

djanog 개발 시작

  • 이제 django 프로젝트를 시작한다.
  • django 설치 후, todo_app 폴더와 manage.py가 실행되는지 확인한다.
$ django-admin startproject todo_app .
$ ls
manage.py*  todo_app/

초기 화면 실행

  • my_app 폴더에서 서버를 구동시킨다.
    • 접속 URL : http://127.0.0.1:8000/
$ python manage.py runserver

카카오톡 오픈 빌더 챗봇 만들기 1편

개요

  • 카카오톡 오픈 빌더 챗봇을 만드는 과정을 보여준다.
  • 회원가입이 필요할 수 있다.
  • 카카오톡 채널을 만든다.

등록하기

  • 구글 검색창에서 카카오톡 오픈 빌더를 검색한다..

Untitled

  • 로그인을 하도록 한다..

Untitled

  • 챗봇 관리자센터 OBT 참여 신청 메뉴가 나오는지 확인한다.

Untitled

카카오톡 채널 관리자 가입

  • 카카오톡 관리자 채널에서 새로운 채널을 만든다..

Untitled

  • 채널을 개설한다.
    • 프로필 사진, 소개글은 추후에 작성이 가능하다.
    • 작성이 끝나면 확인 버튼을 클릭한다.

Untitled

  • 이상이 없다면, ‘네, 입력한 정보로 개설하겠습니다.’ 버튼을 클릭한다.

Untitled

Visual Studio Code Oracle 연동

개요

  • VSCode에서 오라클을 연동하는 코드를 작성해본다.

Extension

  • Extension에서 Oracle을 검색 후, 설치를 진행한다.

Untitled

  • 설치 중간에 아래와 같은 문구가 나오면 해당 파일을 설치해야 한다.

Untitled

필수 설치 파일

Untitled

  • 위 그림에서 Install .NET Runtime for Windows x64를 클릭하면 아래 화면과 함께 설치 파일이 다운로드 된다.

Untitled

  • 설치 파일을 클릭하면 아래와 같은 설치 관리자가 등장한다.

Untitled

  • 특별하게 고려할 것은 없다. 정상적으로 설치가 되면 아래와 같은 화면이 나오면 설치는 종료가 된 것이다.

Untitled

PyCharm Oracle 연동

개요

  • PyCharm에서 Oracle과 연동하는 방법에 대해 작성한다.

Database Navigator 설치

  • Project 폴더에서 File - Settings - Plugins를 실행한다.
  • 검색창에 Database를 입력한다.
    • Database Navigator를 선택한다.
    • 설치가 완료되면, Restart IDE 창이 활성화가 될 것이다.
    • PyCharm을 재 시작한다.

Untitled

DB Navigator 실행

  • 상단 메뉴창에서 DB Navigator를 선택한다.

Untitled

  • 새로운 데이터베이스 버튼을 클릭한 후, Oracle을 선택한다.

Untitled

  • 필수 입력값을 입력 한 후, Test Connection을 실행하여 정상적으로 연동이 되었는지 확인한다.

Untitled

SQL 테스트

  • 이제 새로운 파일을 열고 쿼리 테스트를 진행해본다.

Untitled

SQL Developer with Git

개요

  • SQL Developer에서 깃헙과 연동하는 방법을 알려준다.
  • 깃허브 회원가입 및 깃 설치는 이미 된 것으로 가정한다.
  • 새로운 Repository를 만든다.
    • 필자는 oracle_lectures라는 Repository를 만들었다.

SQL Developer에서 필요한 작업

  • 이제 SQL Developer 프로그램을 연다.
    • 팀 - Git - 복제 순으로 순차적으로 연다.

Untitled

  • 아래 화면에서 다음을 클릭한다.

Untitled

  • 아래 화면에서 새로 생성한 URL, Username, Password를 순차적으로 입력한다.
    • 이 때, Repo 생성 시, Private으로 되어 있었다면 인증 에러가 생길 수 있다. 그런 경우 Public으로 변경한다.

Untitled

오라클 19c 기본 세팅

1단계 sqlplus 실행하기

  • 설치가 끝난 후, 윈도우에서 sqlplus 입력
  • 사용자명은 system, 비밀번호는 오라클 설치 시 (1234)]
  • 주의 : 관리자로 실행

Untitled

Untitled

2단계 : 테이블스페이스 생성하기

  • 테이블스페이스는 myts라는 이름으로 100MB 크기로 생성
  • 만약 데이터가 증가하면 5MB씩 자동 증가 옵션 추가
  • 생성 구문은 다음과 같음
SQL> CREATE TABLESPACE myts DATAFILE 'C:\oracle\oradata\MYORACLE\myts.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M;
테이블스페이스가 생성되었습니다.

Untitled

3단계 : 사용자 생성

  • 사용자를 생성하는 코드를 작성한다.
SQL> CREATE USER ora_user IDENTIFIED BY evan DEFAULT TABLESPACE MYTS TEMPORARY TABLESPACE TEMP;
사용자가 생성되었습니다.
  • 해당 사용자에게 롤(Role, 권한)을 부여해야 한다. 현 시점에서는 ‘ora_user’ 사용자에게 DBA라는 롤을 부여한다.
    • 이 권한을 부여받으면 오라클에서 제공하는 웬만한 기능을 모두 사용한다.
SQL> GRANT DBA TO ora_user;
권한이 부여되었습니다.

4단계 : 사용자 계정으로 DB에 접속하기

  • ora_user로 접속한다.
SQL> connect ora_user/evan
연결되었습니다.
  • 접속 후, select user from dual을 입력하면 현재 로그인한 사용자 이름이 출력된다.
SQL> select user from dual;
USER
--------------------------------------------------------------------------------
ORA_USER

SQL Developer 실행

  • 설치 :
  • 새 접속 화면이 나타나면 접속 이름, 사용자 이름을 ora_user로 입력, 비밀번호는 입력, SID 항목에는 처음 설치 시 이름인 myoracle을 입력하고 테스트를 실행한다.

Untitled

오라클 삭제 - Windows

개요

  • 오라클 설치가 제대로 안되는 경우가 왕왕 있다.
  • 이럴 경우, 삭제 후 재설치하는 것을 권장한다.

1단계 : 오라클 서비스 중지시키기

  • 제어판 - 시스템 및 보안 - 관리도구 - 서비스 메뉴를 실행해 Oracle로 시작되는 모든 서비를 중지시킨다.
  • 또는 윈도우 검색창에서 서비스를 검색해도 앱에 접근할 수 있다.

Untitled

2단계 : 삭제 시동 파일 실행하기

  • 오라클 설치 폴더 - deinstall 폴더에서 deinstall.bat 파일을 관리자 권한으로 실행한다.
    • 이름 목록 지정화면에서 설치 시 지정했던 전역데이터베이스 이름을 입력하고, 계속하겠습니까? 질문을 계속 한다면 Y를 입력한다.
    • 또한, 사용된 저장 영역 입력 시 : FS를 입력한다.

Untitled

Spark Tutorial - Web UI on WSL

개요

  • 간단하게 Spark Tutorial을 활용하여 Web UI를 가동한다.
  • Spark Submit을 활용한다.

파이썬 가상환경

  • 파이썬 가상환경을 작성한다. (필자의 경로는 pyskt_tutorial)
$ pwd
/mnt/c/hadoop/pyskt_tutorial
  • 가상환경을 생성한다.
evan@evan:/mnt/c/hadoop/pyskt_tutorial$ virtualenv venv
  • 생성된 가상환경에 접속한다.
evan@evan:/mnt/c/hadoop/pyskt_tutorial$ source venv/bin/activate
(venv) evan@evan:/mnt/c/hadoop/pyskt_tutorial$

PySpark 설치

  • pyspark를 설치한다.
(venv) evan@evan:/mnt/c/hadoop/pyskt_tutorial$ pip install pyspark
Requirement already satisfied: pyspark in ./venv/lib/python3.8/site-packages (3.2.1)
Requirement already satisfied: py4j==0.10.9.3 in ./venv/lib/python3.8/site-packages (from pyspark) (0.10.9.3)

데이터 생성

  • 가상의 데이터를 생성한다.
  • 소스파일과 구분 위해 data 폴더를 만든 후, 마크다운 파일을 하나 만들 것이다.
(venv) evan@evan:/mnt/c/hadoop/pyskt_tutorial$ mkdir data && cd data
(venv) evan@evan:/mnt/c/hadoop/pyskt_tutorial/data$ vi README.md
  • README.md 파일에서 영어 텍스트 아무거나 추가한다.
    • 필자는 Spark 설명구문을 추가했다.
This program just counts the number of lines containing ‘a’ and the number containing ‘b’ in a text file. Note that you’ll need to replace YOUR_SPARK_HOME with the location where Spark is installed. As with the Scala and Java examples, we use a SparkSession to create Datasets. For applications that use custom classes or third-party libraries, we can also add code dependencies to spark-submit through its --py-files argument by packaging them into a .zip file (see spark-submit --help for details). SimpleApp is simple enough that we do not need to specify any code dependencies.

We can run this application using the bin/spark-submit script:

SimpleApp.py 작성

  • 다음과 같은 파일을 작성한다.
    • 구체적인 코드 설명은 생략한다.
    • 중요한 코드 중 하나는 input( ) 이다. 사용자가 입력을 하지 않으면 spark 세션은 계속 열린상태로 남게 된다. (일종의 Trick)
from pyspark.sql import SparkSession

logFile = "data/README.md"  # Should be some file on your system
spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
logData = spark.read.text(logFile).cache()

numAs = logData.filter(logData.value.contains('a')).count()
numBs = logData.filter(logData.value.contains('b')).count()

print("Lines with a: %i, lines with b: %i" % (numAs, numBs))

input("Typing....")

spark.stop()

Spark-Submit 제출

(venv) evan@evan:/mnt/c/hadoop/pyskt_tutorial$ $SPARK_HOME/bin/spark-submit --master local[4] /mnt/c/hadoop/pyskt_tutorial/SimpleApp.py
  • 실행하면 아래와 같은 메시지가 뜰 것이다. 이 때, 주소를 복사한다.
    • Using 172.17.233.202 주소를 복사한다. (이는 각 컴퓨터마다 다를 것이다!)

Untitled