분류 전체보기
Python으로 Slack App(Bot) 만들기 (2) - 서버 구축(ngrok, Flask)
Python으로 Slack App(Bot) 만들기 (2) - 서버 구축(ngrok, Flask)
2022.03.08자동으로 응답이 가능한 Slack App(Bot)을 만들기 위해서는 Slack App(Bot)과 통신할 수 있는 서버가 필요합니다. 하지만 우리가 개발한 PC의 경우는 외부에서 접속가능한 상용 서버가 아니기때문에 도메인을 구입하고 서버를 호스팅 받아 연결해야 합니다. ngrok 과 Flask를 이용하여 외부에서도 접속 가능한 네트워크 환경을 구축하고 Slack App에서 호출 할 수 있도록 하겠습니다. 1. 먼저 ngrok 계정을 만들고 설치가 필요합니다. ngrok 설치 안내를 참고하시어 설치하시기 바랍니다. 2. Flask 설치가 필요합니다. Flask 설치 안내를 참고하시어 설치하시기 바랍니다. 3. 먼저 간단한 Flask Server를 python을 이용하여 만들도록 하겠습니다. 아래 코드를 작성..
Python으로 Slack App(Bot) 만들기 (1) - Slack App 생성
Python으로 Slack App(Bot) 만들기 (1) - Slack App 생성
2022.03.08Python과 Slack API를 이용하면 슬랙의 특정 채널에 글을 올리거나 응답을 할 수 있는 Bot을 만들 수 있습니다.그러기 위해서는 먼저, Slack API 페이지에서 App을 생성하고, App 관련 권한 설정 작업을 진행합니다. 궁극적인 목표는 내가 원하는 응답을 할 수 있는 Bot을 만드는 것이지만 이번 포스트에서는 Slack App을 생성하고 Python으로 특정 채널에 메세지를 보내는 예제까지 설명하도록 하겠습니다. Slack App 생성 1. Slack api 사이트로 이동하여 [Create an App] 버튼을 클릭합니다. 2. 활성화 된 팝업창에서 [From scratch]를 클릭합니다. 3. 앱 이름을 작성하고, 슬랙 작업 환경을 선택한 후에 [Create App]을 클릭합니다. 4..
Flask(플라스크) 설치/시작하기
Flask(플라스크) 설치/시작하기
2022.03.07Flask(플라스크)는 Django(장고)와 파이썬으로 웹 애플리케이션을 개발 할 때 가장 많이 사용하는 웹 프레임워크입니다. Flask는 많은 사람이 ‘마이크로 웹 프레임워크’라고 부릅니다. 여기서 ‘마이크로(micro)’는 ‘한 개의 파이썬 파일로 작성할 수 있다’ 또는 ‘기능이 부족하다’ 와 같은 의미가 아니라 프레임워크를 간결하게 유지(Simple)하고 확장(Extensible)할 수 있도록 만들었다는 뜻입니다. 다시말해 Flask는 최소한의 구성 요소와 요구 사항을 제공하고 필요에 따라 유연하게 확장 할 수 있도록 설계되어 있습니다. 예를 들어 Django는 프레임워크 자체에 폼(form)과 데이터베이스(database)를 처리하는 기능이 포함되어 있지만 Flask는 없습니다. 포함되어 있지 ..
[ 오류 해결 ] slacker.Error: invalid_auth
[ 오류 해결 ] slacker.Error: invalid_auth
2022.03.07Slack의 정책 업데이트로 인해 2021.2.24 이후로 새로 생성된 bot은 slacker 라이브러리를 이용 할 수 없습니다. slacker.Error: invalid_auth 라는 에러가 발생하죠. slack.chat.post_message 을 대신 할 함수를 만들어서 문제를 해결 하실 수 있습니다. import requests def post_message(token, channel, answer): response = requests.post("https://slack.com/api/chat.postMessage", headers={"Authorization": "Bearer "+token}, data={"channel": channel,"text": answer} ) # slack.chat.p..
ngrok으로 외부에서 접속가능한 로컬 네트워크 환경 구성하기
ngrok으로 외부에서 접속가능한 로컬 네트워크 환경 구성하기
2022.03.07ngrok 이란 ngrok 사이트에는 Secure tunnels to localhost이라고 설명되어 있습니다. 간단히 방화벽 넘어서 외부에서 로컬에 접속 가능하게 하는 터널 프로그램입니다. 만약 통신을 할 수 있는 프로그램을 개발했다면 서버의 역할이 필요한데 개발한 PC의 경우는 외부에서 접속가능한 상용 서버가 아니기때문에 도메인을 구입하고 서버를 호스팅 받아 연결해야 합니다. 말그대로 로컬서버죠. ngrok은 이러한 로컬서버를 간단히 외부에서 접속가능한 환경으로 만들 수 있게 도와줍니다. 물론 이런 프로그램이 ngrok뿐인 것은 아니지만, 위에서 설명한 상황에서 유용하게 쓸 수 있게 최적화되어 있어서 아주 쉽게 사용할 수 있다. ngrok은 무료 플랜과 유료 플랜이 있습니다. 무료 플랜인 경우 기본적..
[ 오류 해결 ] MacOS + ngrok + Flask Access to subdomain.ngrok.io was denied (403 Forbidden)
[ 오류 해결 ] MacOS + ngrok + Flask Access to subdomain.ngrok.io was denied (403 Forbidden)
2022.03.07Mac OS에서 Python + ngrok + Flask 를 이용하여 간단한 응답 서버를 만드려고 하는데 ngrok으로 생성한 URL을 slack api 에 Request URL에 입력하면 "Your URL didn't respond with the value of thechallenge parameter." 이란 메세지가 나옵니다. ngrok에서는 403 Forbidden 으로 나옵니다. 이유는 최근 Mac os (mojave, monterey..) 에서는 flask의 기본 포트(5000)를 사용하는 문제가 있습니다. 이 문제를 해결하려면 시스템 환경설정 > 공유로 이동하여 AirPlay 수신기 체크를 해제하시면 됩니다. 또는 flask run --port=5002를 사용하여 기본 플라스크 포트를 50..
[ 오류 해결 ] Mac OS에서 While executing gem 오류 발생 시
[ 오류 해결 ] Mac OS에서 While executing gem 오류 발생 시
2022.03.03Mac OS에서는 기본 설치되어 있는 시스템의 Ruby를 사용하고 있기때문에 권한 문제가 발생합니다. ruby버전을 변경하기 위해 rbenv를 사용하여 사용 버전을 변경하도록 하겠습니다. Homebrew를 통해 설치하기 brew update brew install rbenv ruby-build rbenv install 확인 아래처럼 나온다면 설치가 완료된 것입니다. 그리고 현재 사용중인 버전은 맥북의 기본 system버전을 사용하고 있다는 것입니다. rbenv versions rbenv를 이용해서 특정 버전의 ruby 설치 아래 코멘드를 입력하면 설치 가능한 버전 리스트가 나옵니다. 현 시점에 최신 버전인 3.1.1 버전을 설치하겠습니다. rbenv install -l rbenv install 3.1.1..
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
[ OpenCV ] Basic 6 - 이미지 크기조정 (Resize)
2022.03.02Image Resize 고해상도의 이미지는 사람의 눈으로 보기에는 좋아 보이지만 컴퓨터가 연산하거나 이미지 파이프라인 처리에는 좋지 않을 수 있습니다. 이미지가 큰 경우 더 많은 데이터가 필요하기 때문에 알고리즘이 데이터를 처리하는 데 오래 걸리기 때문입니다. 이런 고해상도 이미지는 매우 디테일하지만, 컴퓨터 비전/이미지 처리 관점에서 볼 때 이러한 디테일한 사항보다는 이미지의 구조적 구성 요소가 더 중요하기 때문에 고해상도의 이미지를 다운샘플링하여 더 빠르고 정확하게 실행될 수 있도록 합니다. Import packages import cv2 import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시하고 ..
[ OpenCV ] Basic 5 - 이미지 상하, 좌우 대칭 (Flip)
[ OpenCV ] Basic 5 - 이미지 상하, 좌우 대칭 (Flip)
2022.03.02Image Flip x축 또는 y축을 가로질러 이미지를 뒤집는 방법을 소개하겠습니다. 다시말하자면 이미지를 수평 또는 수직을 기준으로 미러링 이미지로 변환하는 것입니다. Flip은 이미지 데이터를 부풀리기 위해서 사용되기도 합니다. Import packages import cv2 import numpy as np import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type..
[ OpenCV ] Basic 4 - 이미지 회전 (Rotate)
[ OpenCV ] Basic 4 - 이미지 회전 (Rotate)
2022.03.02Image Rotate 이미지를 특정 각도로 회전하는 방법에 대해 알아보겠습니다. 이미지를 회전할 때에는 회전할 지점을 지정해야 합니다. 대부분의 경우는 이미지의 중심을 기준으로 회전을 하지만 임의의 지점을 지정할 수도 있습니다. Import packages import cv2 import numpy as np import imutils import matplotlib.pyplot as plt Jupyter Notebook 및 Google Colab에서 이미지를 표시할 수 있도록 Function으로 정의 def img_show(title='image', img=None, figsize=(8 ,5)): plt.figure(figsize=figsize) if type(img) == list: if type(..
[ OpenCV ] Basic 3 - 이미지 이동 (Shift)
[ OpenCV ] Basic 3 - 이미지 이동 (Shift)
2022.03.02Image Shift OpenCV를 이용하여 이미지를 이동하는 방법에 대해 설명드리겠습니다. imutils를 이용하여 간단하게 이미지를 이동 할 수 있지만 기본이 되는 affine transformation matrix (cv2.warpAffine)을 사용하는 방법을 포함하여 설명드리도록 하겠습니다. affine transformation matrix 이라고 하는 2 x 3 행렬을 정의해야 합니다. 이 행렬은 이미지가 왼쪽 또는 오른쪽으로 몇 픽셀을 이동될 것인지, 또는 이미지를 위 또는 아래로 몇 픽셀이 이동할 것인지 정의합니다. 음수 t{x} 값은 이미지를 왼쪽 으로 이동 양수 t{x} 값은 이미지를 오른쪽 으로 이동 음수 t{y} 값은 이미지 를 위로 이동 양수 t{y} 값은 이미지 를 아래로 이동..
Covid-19 사회적 거리두기 측정
Covid-19 사회적 거리두기 측정
2022.02.24코로나19 이후, 즉 포스트 코로나(Post COVID-19) 시대의 세상은 지금과 완전히 다를 것입니다. 이미 각 국가의 고강도 사회적 거리두기 정책으로 인해 보금자리였던 집이 또 하나의 업무 공간으로 탈바꿈하였으며, 오프라인 사회에서 온라인 사회로, 나아가 디지털 사회로 전환하는 발판을 만들어 주었습니다. COVID-19 소위 뉴-노멀이라는 새로운 세상에서 IT는 지금보다 더 큰 역할을 할 것으로 예상됩니다. 언택트(Untact) 문화의 확산, 온라인 소비의 증가, 온라인 교육 등의 생활이 일상화되는 움직임은 국가 간 경계를 뒤로 한 채 전 세계적인 디지털 전환을 가속화할 것이기 때문입니다. 언제 어느 순간 나타날지도 모르는, 어쩌면 이미 다가와 있는 상상 가능한 미래에 사전적으로 대비하기 위해서는 ..