SlideShare a Scribd company logo
1 of 62
Download to read offline
PHP로 Slack Bot 만들기
전창완
PHP로 어디까지 개발해봤니
전창완

- Oponiti & Allbus 서버 개발자

- Wandu Framework
발표자 소개
Slack Bot
Slack?
Slack Bot
1.슬랙은 회사 업무용 메신저.

2.이 안에 다양한 API를 제공.

3.그 중에 Bot을 위한 RTM(Real Time Messaging) API가 존재.
Slack Bot?
Slack Bot
Slack Bot?
Slack Bot
1.RTM(Real Time Messaging) API 를 통해서 원하는 형태의 봇을 제작 가능.

2.최소한의 Input/Output 로직을 제공.

3.너무 간단하게 사용할 수 있어서 사실상 모든 언어에서 다 사용 가능.

(PHP가 되면 다 된다고 보면 됨)
왜 시작하게 되었나요?
Slack Bot
1.업무에 필요한 로직들을 누구나 실행할 수 있었으면..

2.배포도 해주었으면..

3.야근할 때 떠들 사람이 필요해서.. (저희 회사는 야근을 하지 않습니다. 진짜로.)
왜 PHP로 만들었어요?
Slack Bot
1.RTM API는 비동기로직이라 Node.js로 작성하면 훨씬 만들기 편해요.

2.자연어 처리나 인공지능은 Python, Java으로 하면 훨씬 좋아요.

3.그런데 왜 PHP로…
왜 PHP로 만들었어요?
Slack Bot
1.RTM API는 비동기로직이라 Node.js로 작성하면 훨씬 만들기 편해요.

2.자연어 처리나 인공지능은 Python, Java으로 하면 훨씬 좋아요.

3.그런데 왜 PHP로…
여기가 Modern PUG 잖아요.
왜 PHP로 만들었어요?
Slack Bot
1.RTM API는 비동기로직이라 Node.js로 작성하면 훨씬 만들기 편해요.

2.자연어 처리나 인공지능은 Python, Java으로 하면 훨씬 좋아요.

3.그런데 왜 PHP로…
언어는 도구일 뿐
Slack RTM API
동작원리
Slack RTM API
1.Socket으로 통신. (아주 단순)

2.https://api.slack.com/rtm
동작원리
Slack RTM API
1.채널에 봇을 초대합니다.

2.그 채널에 메시지가 올라옵니다.

3.Slack이 메시지를 Client로 전송합니다. (API)

4.Client에서 프로그램 로직이 동작합니다.

5.Slack Server로 응답을 보냅니다. (API)
Client
Slack

Server
채널에서 들은 모든 글
응답
동작원리
Slack RTM API
1.채널에 봇을 초대합니다.

2.그 채널에 메시지가 올라옵니다.

3.Slack이 메시지를 Client로 전송합니다. (API)

4.Client에서 프로그램 로직이 동작합니다.

5.Slack Server로 응답을 보냅니다. (API)
Client
Slack

Server
채널에서 들은 모든 글
응답
PHP로 소켓을 제어할 수 있어요…?
잊을만 하면 나오는 라이브러리
React PHP
Slack RTM API
1.Event Driven PHP Library.

2.Promise Pattern 사용.

3.어 왠지 비동기 스러울 것 같다..
됐고, 그냥 일단 만들어 봅시다.
Slack API 관리페이지
Slack RTM API
1.https://api.slack.com/bot-users

2.Bot을 추가합니다.
Composer Package
Slack RTM API
1.coderstephen/slack-client 패키지 사용.

(https://github.com/sagebind/slack-client)

2.composer의 minimal-stability 설정을 dev로 설정.
<?php

use ReactEventLoopFactory;

use SlackPayload;

use SlackRealTimeClient;



require __DIR__ . '/vendor/autoload.php';



$loop = Factory::create();



$client = new RealTimeClient($loop);

$client->setToken(‘xoxb-...’);



$client->connect()->then(function () use ($client) {

$client->on('message', function (Payload $payload) {

print_r($payload);

});

});



$loop->run();

빠르게 작성해봅시다.
결과
Slack RTM API
말하기
Slack RTM API
1.이제 듣는 법을 알았으니 말하는 법도 익혀봅시다.

2.Payload에 text는 봇이 듣게된 말입니다.

3.Payload에 channel은 봇이 말을 듣게된 채널입니다.
<?php

use ReactEventLoopFactory;

use SlackChannelInterface;

use SlackPayload;

use SlackRealTimeClient;



require __DIR__ . '/vendor/autoload.php';



$loop = Factory::create();



$client = new RealTimeClient($loop);

$client->setToken('xoxb-...');



$client->connect()->then(function () use ($client) {

$client->on('message', function (Payload $payload) use ($client) {

if ($payload['text'] === '마늘아') {

$client->getChannelGroupOrDMByID($payload['channel'])

->then(function (ChannelInterface $channel) use ($client) {

$client->send("넹", $channel);

});

}

});

});



$loop->run();

말하기
Slack RTM API
정리
Slack RTM API
1.이 두가지를 잘 응용해봅시다.
정리
Slack RTM API
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
넹
놀고 있어요
스파게티 어때요?
맑아요
“마늘아 밥 추천좀”
정리
Slack RTM API
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
넹
놀고 있어요
스파게티 어때요?
맑아요
“마늘아 밥 추천좀”
=
전부 “===“로 비교할 순 없잖아요..
그래서 하나 더
자연어 처리 쬐끔
어떻게 접근해 볼 수 있을까
자연어처리
1.알다시피, “===“를 통해 비교하면 우리의 봇은 우리가 오타라도 나면 벙어리가 됩니다.

2.제대로 NLP(Natural Language Processing)를 하려면 굉장히 어렵습니다.

3.그치만 조금만 다르게 생각해봅시다. 어쩌면 우린 이미 답을 알고 있을 수도 있습니다.
조금만 다르게 생각해봅시다.
자연어처리
봇사용자
질문
대답
조금만 다르게 생각해봅시다.
자연어처리
검색엔진사용자
질의
검색결과
조금만 다르게 생각해봅시다.
자연어처리
검색엔진사용자
질의
응답
검색엔진을 응용하면

문제를 해결할 수 있겠다!
검색엔진을 알아보자
자연어처리
1.검색엔진을 깔아서 사브작사브작하면 문제 해결이 됩니다.

2.그치만, 검색엔진이 해결하는 문제와 우리가 해결하는 문제
는 다릅니다.

3.검색엔진은 긴 문장들로 이루어진 문서들을 찾습니다.

4.봇은 기존에 알고있는 문장을 찾습니다.

(왠지 더 쉬울 것 같다!)
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
“마늘아 밥 추천좀”
그림. 쿼리를 가지고 알고있는 문장을 찾습니다.
검색엔진을 알아보자
자연어처리
1.검색엔진을 깔아서 사브작사브작하면 문제 해결이 됩니다.

2.그치만, 검색엔진이 해결하는 문제와 우리가 해결하는 문제
는 다릅니다.

3.검색엔진은 긴 문장들로 이루어진 문서들을 찾습니다.

4.봇은 기존에 알고있는 문장을 찾습니다.

(왠지 더 쉬울 것 같다!)
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
“마늘아 밥 추천좀”
그림. 쿼리를 가지고 알고있는 문장을 찾습니다.
검색엔진은 여기가 문서
검색엔진을 알아보자
자연어처리
1.검색엔진의 구조를 살짝 들여다 봅시다.

2.대충 찾아보니 형태소 분석기라는 녀석을 사용해서 토큰화 시키고, 클러스터링이 어쩌구 저쩌구… 문서 유사도가 어쩌구 저쩌구

3.3가지 키워드를 알아야 합니다. 형태소 분석기 / 유사도 / 클러스터링
형태소 분석기
한글 형태소 분석기
형태소 분석기
1.http://konlpy-ko.readthedocs.io/ko/v0.4.3/

2.KoNLPY… 또 파이썬이냐…
한글 형태소 분석기
형태소 분석기
1.한나눔 형태소 분석기 (https://kldp.net/hannanum / C, Java)

2.꼬꼬마 한글 형태소 분석기 (http://kkma.snu.ac.kr/documents / Java)

3.로제타 (https://shleekr.github.io / Python)

4.루씬 한글 분석기 아리랑 (https://sourceforge.net/projects/lucenekorean / Java?)

5.은전한닢 Mecab Ko (https://bitbucket.org/eunjeon/mecab-ko / C)
한글 형태소 분석기
형태소 분석기
1.한나눔 형태소 분석기 (https://kldp.net/hannanum / C, Java)

2.꼬꼬마 한글 형태소 분석기 (http://kkma.snu.ac.kr/documents / Java)

3.로제타 (https://shleekr.github.io / Python)

4.루씬 한글 분석기 아리랑 (https://sourceforge.net/projects/lucenekorean / Java?)

5.은전한닢 Mecab Ko (https://bitbucket.org/eunjeon/mecab-ko / C)
한글 형태소 분석기
형태소 분석기
1.OSX에서 brew에 php56-mecab(또는 php70-mecab)이 이미 있습니다. 그냥 다운받으세요.

2.mecab-ko-dic을 설치합니다. (https://bitbucket.org/eunjeon/mecab-ko-dic)

mecab-ko는 필요없습니다. mecab-ko-dic만 설치하시면 됩니다.
MeCab
형태소 분석기
MeCab
형태소 분석기
1.MeCab은 일본어 라이브러리라서 문서가 다 일본어로 나와요.

2.php5.x와 7.x의 동작방식이 달라요.

3.https://github.com/wandu/mecab (제가 이미 다 해놨습니다.)

• MeCab Wrapping Library.
<?php

use WanduMecabMecab;



require __DIR__ .'/vendor/autoload.php';



$mecab = new Mecab('/usr/local/lib/mecab/dic/mecab-ko-dic');



print_r($mecab->parseToString('흠. 한글 형태소 분석기는 어떻게 동작할까요.'));
MeCab
형태소 분석기
https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-
nXeRF6D80udfcwY/edit?usp=sharing
유사도
어떻게 개선될까요?
유사도
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
넹
놀고 있어요
스파게티 어때요?
맑아요
“마늘아 오늘의 추천 메뉴”
어떻게 개선될까요?
유사도
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
“마늘아 오늘의 추천 메뉴” = 마늘 + 아 + 오늘 + 의 + 추천 + 메뉴
= 마늘 + 아 + 밥 + 추천 + 좀
형태소 분석기 사용 시..
= 마늘 + 아 + 오늘 + 의 + 날씨
= 마늘 + 아 + 뭐 + 하 + 니
= 마늘 + 아
어떻게 개선될까요?
유사도
마늘아
마늘아 뭐하니
마늘아 밥 추천좀
마늘아 오늘의 날씨
“마늘아 오늘의 추천 메뉴” = 마늘 + 아 + 오늘 + 의 + 추천 + 메뉴
= 마늘 + 아 + 밥 + 추천 + 좀
“마늘아 밥 추천좀”과 매우 유사해 보입니다.
= 마늘 + 아 + 오늘 + 의 + 날씨
= 마늘 + 아 + 뭐 + 하 + 니
= 마늘 + 아
어떻게 개선될까요?
유사도
1.유사하다는 말은 사람만 이해할 수 있는 말입니다.

2.이 유사한 기준을 수치로 바꿔야 컴퓨터가 이해할 수 있습니다.

3.그래서 유사도 함수를 사용합니다.
유사도(Similarity) 함수
유사도
1.유클리디안 거리

2.피어슨 상관계수

3.자카드 계수

4.타니모토 계수
Jaccard Similarity
유사도
1.우린 “Jaccard Similarity” 방식을 이용할 겁니다.

2.그냥 두 집합의 유사도를 구할 수 있다고 생각하면 됩니다.
Jaccard Similarity
유사도
1.또 집합이 많아지면 유사도를 계산하는데 엄청나게 많은 시간을 소요합니다.

(봇한테 말을 걸었는데 10분후에 답장이 오는 그런 사태..)

2.이 시간을 줄이기 위해 MinHash라는 기법을 사용합니다.

3.일종의 클러스터링기법.

4.블로그에 자세히 설명해놨습니다. (http://blog.wani.kr/posts/2016/11/24/minhash)
뭐라는 거지…
Jaccard Similarity
유사도
1.그냥 이런게 있다 정도만 알아두시고, 실제로 써보실 땐 코드로 작성해놨으니 가져다 쓰세요.

2.https://github.com/ModernPUG/garlicbot/blob/master/src/Math/JaccardSimilarity.php

3.https://github.com/ModernPUG/garlicbot/blob/master/src/Math/MinHashCalculator.php
하여간 지금까지 이야기한걸

대충 소스에 녹여봅시다.
실습

(https://github.com/modernpug/garlicbot)
실제 봇의 처리과정
마무리
1.Pre-Processing

•오타 보정과 같은 일을 함.

2.Feature Engineering

•Tokenizing (n-gram/ skipgram / word2vec 등 활용 가능)

3.Modeling

•결과 도출 (tf-idf / neural net 활용 가능)

4.Post Processing

•사용자에 맞춰서 결과를 가공함.
정리
마무리
1.우리는 Feature Engineering과 Modeling의 극히 일부를 구현한 것 뿐입니다.

2.제대로 하려면 아직도 갈길이 많습니다.
더 공부하고 싶다면..
마무리
1.[발표] 코끼리 냉장고에 집어넣기 : 실시간 추천엔진을 노트북에서 돌게 만들어보자 - 하용호

(http://www.numberworks.io/blog/2015/9/17/--1)

2.[도서] 집단지성 프로그래밍 - 토비 세가란

(http://www.yes24.com/24/goods/2917663)
Q & A ?

More Related Content

What's hot

UX UI para Programadores
UX UI para Programadores UX UI para Programadores
UX UI para Programadores Monica Mesquita
 
PPCoffline_06_2023.pptx
PPCoffline_06_2023.pptxPPCoffline_06_2023.pptx
PPCoffline_06_2023.pptxLukáš Pítra
 
Palestra Experiência do Cliente
Palestra Experiência do ClientePalestra Experiência do Cliente
Palestra Experiência do ClienteMarcus Pimenta
 
Palestra Encantamento de Clientes Disney
Palestra Encantamento de Clientes DisneyPalestra Encantamento de Clientes Disney
Palestra Encantamento de Clientes DisneyEduardo Maróstica
 
Núcleo de Treinamento Empresarial - Portfólio de Treinamentos
Núcleo de Treinamento Empresarial - Portfólio de TreinamentosNúcleo de Treinamento Empresarial - Portfólio de Treinamentos
Núcleo de Treinamento Empresarial - Portfólio de TreinamentosDirect Link Consultoria
 
サイカのカスタマーサクセス部立ち上げ奮闘記
サイカのカスタマーサクセス部立ち上げ奮闘記サイカのカスタマーサクセス部立ち上げ奮闘記
サイカのカスタマーサクセス部立ち上げ奮闘記Ayumu Takahashi
 
Criação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignCriação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignDaniel Brandão
 
Inteligencia emocional - A chave para o sucesso e felicidade
Inteligencia emocional - A chave para o sucesso e felicidadeInteligencia emocional - A chave para o sucesso e felicidade
Inteligencia emocional - A chave para o sucesso e felicidadeThiago-Carvalho
 
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPS
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPSSatisfação de Clientes para Pequenas Empresas - Palestra Online NPS
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPSTracksale
 
Palestra Model Canvas
Palestra Model Canvas Palestra Model Canvas
Palestra Model Canvas Weber Rangel
 
CRM: Como usar essa carta na manga para fechar mais vendas
CRM: Como usar essa carta na manga para fechar mais vendasCRM: Como usar essa carta na manga para fechar mais vendas
CRM: Como usar essa carta na manga para fechar mais vendasAgendor
 
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freeeNatsuko Okada
 

What's hot (20)

Protagonismo 360º
Protagonismo 360ºProtagonismo 360º
Protagonismo 360º
 
UX UI para Programadores
UX UI para Programadores UX UI para Programadores
UX UI para Programadores
 
PPCoffline_06_2023.pptx
PPCoffline_06_2023.pptxPPCoffline_06_2023.pptx
PPCoffline_06_2023.pptx
 
CNV - Simoni Aquino
CNV - Simoni AquinoCNV - Simoni Aquino
CNV - Simoni Aquino
 
Palestra Experiência do Cliente
Palestra Experiência do ClientePalestra Experiência do Cliente
Palestra Experiência do Cliente
 
Palestra Encantamento de Clientes Disney
Palestra Encantamento de Clientes DisneyPalestra Encantamento de Clientes Disney
Palestra Encantamento de Clientes Disney
 
Gerenciamento de Riscos
Gerenciamento de  RiscosGerenciamento de  Riscos
Gerenciamento de Riscos
 
Mentoria
MentoriaMentoria
Mentoria
 
Núcleo de Treinamento Empresarial - Portfólio de Treinamentos
Núcleo de Treinamento Empresarial - Portfólio de TreinamentosNúcleo de Treinamento Empresarial - Portfólio de Treinamentos
Núcleo de Treinamento Empresarial - Portfólio de Treinamentos
 
サイカのカスタマーサクセス部立ち上げ奮闘記
サイカのカスタマーサクセス部立ち上げ奮闘記サイカのカスタマーサクセス部立ち上げ奮闘記
サイカのカスタマーサクセス部立ち上げ奮闘記
 
Criação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignCriação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material Design
 
Desenvolvimento em equipe
Desenvolvimento em equipeDesenvolvimento em equipe
Desenvolvimento em equipe
 
Gestão da Mudança Inovação
Gestão da Mudança Inovação Gestão da Mudança Inovação
Gestão da Mudança Inovação
 
Inteligencia emocional - A chave para o sucesso e felicidade
Inteligencia emocional - A chave para o sucesso e felicidadeInteligencia emocional - A chave para o sucesso e felicidade
Inteligencia emocional - A chave para o sucesso e felicidade
 
Abordagem Disney para Qualidade em Serviços print version
Abordagem Disney para Qualidade em Serviços   print versionAbordagem Disney para Qualidade em Serviços   print version
Abordagem Disney para Qualidade em Serviços print version
 
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPS
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPSSatisfação de Clientes para Pequenas Empresas - Palestra Online NPS
Satisfação de Clientes para Pequenas Empresas - Palestra Online NPS
 
Palestra Model Canvas
Palestra Model Canvas Palestra Model Canvas
Palestra Model Canvas
 
CRM: Como usar essa carta na manga para fechar mais vendas
CRM: Como usar essa carta na manga para fechar mais vendasCRM: Como usar essa carta na manga para fechar mais vendas
CRM: Como usar essa carta na manga para fechar mais vendas
 
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee
5分でわかるカスタマーサクセス +カスタマーサクセスの果てに見えたもの with freee
 
Aula n.3 Engajamento
Aula n.3   EngajamentoAula n.3   Engajamento
Aula n.3 Engajamento
 

Similar to PHP로 Slack Bot 만들기

Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰Eunhyang Kim
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요Yongho Ha
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806juneyoungdev
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향Eunhyang Kim
 
쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유NAVER SHOPPING
 
[MASOCON 2019] Serverless - Kimminjun
[MASOCON 2019] Serverless - Kimminjun [MASOCON 2019] Serverless - Kimminjun
[MASOCON 2019] Serverless - Kimminjun Kim Minjun
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게Sungju Jin
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼mangonamu
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환
 

Similar to PHP로 Slack Bot 만들기 (20)

Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
Slackbot with Python
Slackbot with PythonSlackbot with Python
Slackbot with Python
 
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
Showroom 2019-react
Showroom 2019-reactShowroom 2019-react
Showroom 2019-react
 
쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유쇼핑검색 React 전환 경험 공유
쇼핑검색 React 전환 경험 공유
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
[MASOCON 2019] Serverless - Kimminjun
[MASOCON 2019] Serverless - Kimminjun [MASOCON 2019] Serverless - Kimminjun
[MASOCON 2019] Serverless - Kimminjun
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf
 

More from Changwan Jun

Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기Changwan Jun
 
Infrastructure as Code 삽질기
Infrastructure as Code 삽질기Infrastructure as Code 삽질기
Infrastructure as Code 삽질기Changwan Jun
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs PrerenderChangwan Jun
 
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)Changwan Jun
 

More from Changwan Jun (6)

Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기Serverless 프레임워크로 Nuxt 앱 배포하기
Serverless 프레임워크로 Nuxt 앱 배포하기
 
GraphQL 적용기
GraphQL 적용기GraphQL 적용기
GraphQL 적용기
 
Infrastructure as Code 삽질기
Infrastructure as Code 삽질기Infrastructure as Code 삽질기
Infrastructure as Code 삽질기
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)
PHP에서 GCM 푸시 빠르게 보내기 (feat. Async / Generator)
 

PHP로 Slack Bot 만들기