전체 글

전체 글

    [Slack Bot] Django에 슬렉봇 연결하기 (python slack bot)

    개발 중인 서비스에서 새로운 회원이 가입할 때마다 슬렉으로 알림을 받으면 좋겠다는 생각이 들었다. 이전까지는 DB에서 User를 조회하면서 얼마나 신규 유저가 있는지 체크를 했는데 단순 확인용도로 사용하기에 불편함이 있었다. 생각해보니 개발하는 멤버끼리 슬렉을 사용하고 있으므로 신규 유저가 가입할 때마다 슬렉 봇을 통해 자동으로 알림을 받도록 해보고자 한다. Slack API 사용 설정 Slack에 로그인 한 뒤 App을 생성한다. (https://api.slack.com/apps) 나는 처음부터 만들어 볼 것이므로 From Scratch를 선택했다. 간단히 App 이름을 입력하고 App을 사용할 Slack 워크스페이스를 선택한다. Bot을 선택하고 App 권한 설정을 위해 이동한다. 그 다음 아래에 있..

    [Django Channels] 실시간 채팅 구현하기 -2

    Message Model 작성하기 이제 메시지를 저장해야 하므로 Model을 작성했다. 원래는 Single App으로 가고 싶었으나, Chat 정도는 분리하는 것이 좋다고 판단해서 앱을 분리했다. from django.db import models from django.utils.formats import localize from rest_api.models import User, Study class Message(models.Model): user = models.ForeignKey(to=User, on_delete=models.PROTECT) study = models.ForeignKey(to=Study, on_delete=models.PROTECT) content = models.TextField..

    [Django Channels] 실시간 채팅 구현하기 -1

    들어가며 이 글은 내가 현재 만들고 있는 서비스에서 필요한 기능을 구현하며 적은 일지 같은 형태다. 고로... 깔끔하게 개발 흐름이 정리되지 않았으며 튜토리얼의 형태를 띠고 있지 않다. 열심히 한 방향으로 가다가 중간에 멈추고 다른 방법을 적용하기도 한다. 만약 당장 급하게 이 글과 같은 기능을 구현해야 한다면 전체 시리즈를 읽고 감을 잡은 후 부디 한 번이라도 삽질을 덜하면서 적용하길 바란다. Django Channels 살펴보기 개발 중인 서비스에서 실시간 채팅을 구현해야 할 타이밍이 되었다. 그동안 나중에 하자 나중에 하자 미뤄두었었는데, 이제는 미룰 수 없게 된 거지. 당연히 Web Socket과 비동기 방식을 이용해야 하니 기존 Django만 가지고는 힘들어 보였고 Channels라는 패키지를 ..

    [데이터사이언스] 데이터 전처리 대전

    '데이터' 라는 말은 이제 뭐랄까 포켓몬스터 중 하나인 '메타몽' 같은 존재랄까? 어디에 가져다놔도 이상하지 않은 단어가 되었다. 정말 그야말로 데이터의 시대다. 내가 어떤 직무에 있던지간에 데이터를 다룰 수 있는 사람과 아닌 사람은 시작점 부터가 다르다고 생각한다. 단순히 그런 분야가 있지가 아니라 한국에서 '영어'가 갖는 위치처럼 반드시 알아야하는 분야라고 생각한다. 내가 이 책을 고른 가장 큰 이유는 같은 로직을 수행하는데 R, Python, SQL을 함께 다뤘다는 점이다. 사실 이 세 언어는 각자 할 수 있는 일이 다르다. 단순히 기호에 맞게 선택하는 것이 아니라 내가 하려고하는 일에 맞는것을 선택해야한다. 그런데 그러려면 세 언어를 기본적으로 다룰수 있어야하는데 각 언어별 시중의 서적을 보면 내..

    [리액트 서적] Learning React (러닝 리액트)

    "JavaScript로 개발할 수 있는 모든 것은 결국 JavaScript로 개발하게 될 것이다." 자바스크립트를 이제 단순한 웹 동작을 구현하는 언어라고 하기엔 너무 다양한 역할을 할 수 있는 녀석이 되었다. 그리고 점점 성장하는 JS 생태계에서 리액트에 처음 관심을 가지게 된 것은 2015년 리액트 네이티브가 나올때였는데 리액트로 개발을 하면 웹 뿐만 아니라 모바일까지 한 번에 해결할 수 있기 때문이었다. 특히 Anriod와 IOS를 동시에 커버하며 개발할 수 있다는것 자체만으로 엄청난 메리트가 있었다. 지금하고 있는 일은 리액트를 사용하지 않지만 이번에 시작하려는 프로젝트가 리액트를 사용할 예정이었기에 빠르게 훑어볼 책을 찾다가 개발자라한 한 번쯤은 접해봤을 시리즈인 한빛미디어의 일명 '동물책'을 ..

    [딥러닝] 그로킹 딥러닝 :: 딥러닝 입문 추천 서적

    이번에 리뷰 해볼 책은 2019년 12월에 발행된 이다. 본 서적은 딥러닝 입문자를 대상으로 한 책으로 딥러닝의 기초부터 시작해서 다음 레벨로 가기전에 알아야할 사항들에 대해 자세한 예제와 함께 설명한다. 기존의 딥러닝 서적들은 딥러닝의 모델별로 챕터를 나누어 진행하는 방식이지만 이 책은 저자가 던지는 질문을 풀어나가면서 필요한 모델을 가져다 사용하는 방식으로, 어떤 문제를 딥러닝으로 해결하고자 할때 할 수 있는 생각들을 하나씩 따라가도록 구성 되어있는것이 특징이다. 입문자에게 어려운 수학에 대한 이해를 강요하지 않고, 발생 가능한 여러 경우를 예시와 적절한 예제를 통해 자연스럽게 쫓아올 수 있도록 걷기 편한 카펫을 깔아주고 있습니다. 이 책을 믿고 뛰어내리면 적당한 스릴과 긴장감을 느낄 수 있지만 머리..

    [Babel] 초간단 바벨(Babel) 사용법

    :: 바벨 (Babel) 이란? 바벨(Babel)은 자바스크립트를 위한 다목적 컴파일러로 자바스크립트 코딩을 할때 마술같은 여러가지 기능을 제공한다. 특히 바벨(Babel)은 여러 자바스크립트 표준에 맞추어 코드를 자동으로 변환해주는 트랜스파일러로 코드를 직접 바꾸지 않더라도 최신 표준에 맞추어 개발 할 수 있도록 도와준다. ( 엄청난 기능을 하는 Babel 플러그인이 많다 ) :: 바벨 (Babel) 사용법 Node.js가 이미 설치되어 있다고 가정한다. 1. 예제를 진행할 디렉토리를 하나 만들고 이동 mkdir babelTest cd babelTest 2. 프로젝트 초기화 및 Babel 설치 npm init -y npm install --save-dev babel-cli npm install --sa..

    [Numpy] 파이썬 벡터 표현

    NUMPY Numpy는 선형대수 문제를 파이썬으로 다룰때 사용하는 패키지이다. Numpy를 이용한 벡터(Vector)표현 벡터를 포현할 때는 열 개수가 하나인 2차원 배열 객체로 표현한다. 하지만 Numpy는 편의를 위해 1차원 배열 객체로 만들어도 벡터로 인정한다. 행처럼 보이지만 실제로는 열벡터라는 점에 유의해야한다. # 아래 두개는 같은 벡터이다. vec01 = np.array( [[1.1],[2.2],[3.3],[4.4]] ) vec02 = np.array( [1.1],[2.2],[3.3],[4.4] ) 벡터는 열의 수가 1인 행렬이라고 볼 수 있으므로 벡터를 다른 말로 열벡터(Column Vector)라고도 한다. 하나의 데이터를 벡터로 나타낼 때에는 하나의 열(Column)으로 표기하지만 여러..

    [GITHUB] Git Branch(브랜치) 삭제하기 (Local / Remote)

    Branch를 새로 만들어서 작업을 한 후 Main이 되는 Branch에 Merge까지 했다면 기존 작업하던 Branch는 삭제해야한다. Branch는 될 수 있는한 자주 만들어서 작업하는게 좋지만 중심 Branch를 제외한 Sub Branch 들은 저장소에 남아 있지 않을 수록 좋다. 자 아래와 같은 상태일 때, 내가 feature/1 이라는 Branch에서 작업을 끝내고 develop Branch로 merge 시켰다면 아래와 같이 된다. 이렇게 된다면 이제 feature/1 Branch는 할일을 다한 상태이므로 Local Repo와 Remote Repo에서 지워주어야한다. :: 로컬저장소에서 Branch(브랜치) 삭제하기 git branch -d [브랜치명] 실제로 삭제 되었는지 체크 해보려면, gi..