SlideShare a Scribd company logo
트위터 봇 만들기
짹짹이의 기분이 되는거에요!
제로페이지 24기 권준혁
ZeroPage X CAUCSE Steamers
강사 소개
• 제로페이지 24기
• 현재 스티머즈 회장
• 병특노예 희망중(2학기 휴학하고 싶다)
• 게임 제외한 프로젝트 진행 사실상 없음
• java에서 외부 라이브러리도 이번에 처음 가져다 씀
,,,
진행 내용
• 실습, 코드 그런거 없습니다(준비할
시간이 없었음,,, 그리고 1시간,,,)
• 코드를 보며 자세한 설명 그런거 없
습니다(까먹고 스샷을 안찍어둠,,,)
• 대충 어떤 식으로 봇을 만들면 되는
지에 대한 내용? 입니다
트위터 봇이란?
• 트위터의 Robot
• 기능은 제각각
• 프로그램이 트위터를 돌리고 있으면 일단 Bot
• 수동Bot은 그냥 컨셉놀이계정
대표적인 봇
데빌스캠프도 있으니 만들어
보자
• 언젠가는 만들려고 했는데 이번기회에 만들어보기
로 했습니다.
• 뭔가 인터넷 통신하고 그러니까 서버지식 있어야 하
나 하고 이때까지 미뤄뒀습니다. (아니더라고요)
• 이렇게 귀차니즘이 무섭습니다
그래서 만들어진 과정
• 수요일 - 세션을 하기로 결정이
남
• ???
• JDP가동
JDP가 돕니다
• 목요일 - 조사 및 개발 시작
• 금요일 - 생각보다 어렵다 + 원래 일정이 있었음
• 토요일 - ^^;;;;
• 어떻게든 되긴 함
• https://twitter.com/princess_yutki
그래서 어떻게 만드나요
• 1. 프로그램을 짠다
• 2. 자신의 컴퓨터에서 돌린다
• 3. 끝
• 서버지식 X, 트위터 API전부 읽을 필요 X
• 툭 까놓고 말해서 C언어만 할 수 있어도 만들수있음
• 왜냐면 라이브러리가 있거든요!
여기서 잠깐
봇을 만드려면?
• 이미 프로그램 안짜도 봇을 만들어주는 사이트가 많
음
• 그러나 추가기능은 유료고, 제한도 걸려있음
• 자신이 기능 추가하는게 불가
• 그래서 그냥 내가 만들기로 함(공부도 하는셈치고)
• http://matome.naver.jp/odai/2133695904966289401
1. 라이브러리 조사
• 최근 자바를 손대보고 있어서 자바로 하기로 함
• http://stackoverflow.com/questions/851767/best-
java-twitter-library
• Twitter4J를 사용하기로 함
• 업데이트를 잘 해주고, 초보자가 사용하기 쉬움, 튜
토리얼 풍부(한국어 튜토리얼도 있음)
예제를 보면서 공부한다
• http://twitter4j.org/ko/code-examples.html
2. 어플리케이션 등록
여기서 얻은 정보를 어플리
케이션에 등록하면 끝
• 어플리케이션은 이 정보를 이용해서 내가 어떤 어플
리케이션인지 트위터 API에 알린다
• 유저의 토큰 키를 사용해서 이 어플리케이션이 유저
에게 접근 할 수 있다
• Twitter4J는 properties파일로 저장해두면 편함
이 정보만으로도 간단한 프
로그램이 가능
• 이제 Twitter4J로 프로그램을 짭니다
• TwitterFactory에서 Twitter 객체를 찍어내서 그걸 하
나의 계정으로 취급하는 방식인듯하였습니다
• 참고한 사이트 -
http://d.hatena.ne.jp/redcat_prog/20120315/133178
0805
• BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
• String tweet = "";
• while(tweet.isEmpty()) {
• System.out.print("今何してる ? : ");
• tweet = br.readLine();
• if(tweet.length() > 140) {
• System.out.println("字数制限を超えています。");
• tweet = "";
• continue;
• }
• }
• Twitter twitter = new TwitterFactory().getInstance();
• Status status = twitter.updateStatus(tweet);
• System.out.println(status.getUser().getScreenName() + " として投稿しました : " + status.getText());
기능을 생각해봄
- 정기 트윗
- 타임라인 분석해서 특정 키워드에 반응
하기
- 멘션이 오면 그것에 반응하기
- 멘션이 오면 맞는 이미지를 합성해서 반
환
기능을 생각해봄
- 정기 트윗
- 타임라인 분석해서 특정 키워드에 반응
하기
- 멘션이 오면 그것에 반응하기
- 멘션이 오면 맞는 이미지를 합성해서 반
환
기능을 생각해봄
- 정기 트윗
- 타임라인 분석해서 특정 키워드에 반응
하기
- 멘션이 오면 그것에 반응하기
- 멘션이 오면 맞는 이미지를 합성해서 반
환
기능을 생각해봄
- 정기 트윗
- 타임라인 분석해서 특정 키워드에 반응
하기
- 멘션이 오면 그것에 반응하기
- 멘션이 오면 맞는 이미지를 합성해서 반
환
에휴 왜그랬지? ㅜㅜ
다른 계정을 인증하는
법
• 1. 어플리케이션에서 토큰 요청 URL을 생성
• 2. 들어감
• 3. 인증하고 싶은 계정으로 로그인 후 앱 승인
• 4. 인증
• 저같은 경우는 핀으로 인증 진행
이렇게 인증하면 다른 계정
에도 됨 ㅎ
정시 알림도 성공 ㅎ
주의 할 점
• 트위터는 짧은 간격으로 비슷한 문장을 던질 수 없다
(문장 유사도 검사를 내부에서 하는듯)
• 그래서 테스트 할 때 짧은 간격으로 날리려면 일일히
다른 문장으로 해서 날려줘야됨(실제로 만들때도 생
각해야됨)
• 시간 알림 폼도 숫자만 바꿔서는 중복 트윗이라고 막
음
결론
• 봇만들기 어렵지 않다. 트잉여는 해보자
• 직접 만들면 이런저런 기능 섞을 수 있어서 재밌는
걸 만들 수 있다
• 라이브러리 짱짱인 것
• 남은 기능은 프로젝트로 돌려서 데빌스 끝나고 만드
는걸로,,,

More Related Content

Viewers also liked

트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기
종빈 오
 
2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템종빈 오
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사종빈 오
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기종빈 오
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템종빈 오
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81종빈 오
 
Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.
flashscope
 
적당한 스터디 발표자료 만들기
적당한 스터디 발표자료 만들기적당한 스터디 발표자료 만들기
적당한 스터디 발표자료 만들기
종빈 오
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜종빈 오
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)
종빈 오
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개종빈 오
 
Selenium을 이용한 동적 사이트 크롤러 만들기
Selenium을 이용한 동적 사이트 크롤러 만들기Selenium을 이용한 동적 사이트 크롤러 만들기
Selenium을 이용한 동적 사이트 크롤러 만들기
Gyuhyeon Jeon
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우종빈 오
 
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
JeongHeon Lee
 
적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0
종빈 오
 
챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api
NAVER D2
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기
성일 한
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해종빈 오
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리
Shane (Seungwhan) Moon
 

Viewers also liked (19)

트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기
 
2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
 
Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.Line bot api trial을 사용해 보았다.
Line bot api trial을 사용해 보았다.
 
적당한 스터디 발표자료 만들기
적당한 스터디 발표자료 만들기적당한 스터디 발표자료 만들기
적당한 스터디 발표자료 만들기
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개
 
Selenium을 이용한 동적 사이트 크롤러 만들기
Selenium을 이용한 동적 사이트 크롤러 만들기Selenium을 이용한 동적 사이트 크롤러 만들기
Selenium을 이용한 동적 사이트 크롤러 만들기
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우
 
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
비정형 데이터를 기반으로 한 빅데이터 필요기술 및 적용사례
 
적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0
 
챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리
 

Similar to [devil's camp] - 트위터 봇 만들기 (권준혁)

NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
ByungJoon Lee
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
re4lfl0w
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Joongi Kim
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글
라한사 아
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
성일 한
 
웹2.0과 인터넷 커뮤니케이션 2강 공개용
웹2.0과 인터넷 커뮤니케이션 2강 공개용웹2.0과 인터넷 커뮤니케이션 2강 공개용
웹2.0과 인터넷 커뮤니케이션 2강 공개용
Jinmyeong Jeong
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
Chris Ohk
 
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
gnomekr
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
Changwon Choe
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기
Jay Park
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
정민 안
 
6th-Session4. Work Process & Co-operation Issue
6th-Session4. Work Process & Co-operation Issue6th-Session4. Work Process & Co-operation Issue
6th-Session4. Work Process & Co-operation Issue
atticws
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
Terry Cho
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
Lee Geonhee
 
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
KyeongmanKang
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
창완 장
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentation
Jae-yeol Lee
 

Similar to [devil's camp] - 트위터 봇 만들기 (권준혁) (20)

NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 
웹2.0과 인터넷 커뮤니케이션 2강 공개용
웹2.0과 인터넷 커뮤니케이션 2강 공개용웹2.0과 인터넷 커뮤니케이션 2강 공개용
웹2.0과 인터넷 커뮤니케이션 2강 공개용
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
 
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
 
6th-Session4. Work Process & Co-operation Issue
6th-Session4. Work Process & Co-operation Issue6th-Session4. Work Process & Co-operation Issue
6th-Session4. Work Process & Co-operation Issue
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
Jira + Confluence + Bitbucket으로 이슈 트래킹 걸음마 떼기
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentation
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
NAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
NAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
NAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[devil's camp] - 트위터 봇 만들기 (권준혁)

  • 1. 트위터 봇 만들기 짹짹이의 기분이 되는거에요! 제로페이지 24기 권준혁 ZeroPage X CAUCSE Steamers
  • 2. 강사 소개 • 제로페이지 24기 • 현재 스티머즈 회장 • 병특노예 희망중(2학기 휴학하고 싶다) • 게임 제외한 프로젝트 진행 사실상 없음 • java에서 외부 라이브러리도 이번에 처음 가져다 씀 ,,,
  • 3. 진행 내용 • 실습, 코드 그런거 없습니다(준비할 시간이 없었음,,, 그리고 1시간,,,) • 코드를 보며 자세한 설명 그런거 없 습니다(까먹고 스샷을 안찍어둠,,,) • 대충 어떤 식으로 봇을 만들면 되는 지에 대한 내용? 입니다
  • 4. 트위터 봇이란? • 트위터의 Robot • 기능은 제각각 • 프로그램이 트위터를 돌리고 있으면 일단 Bot • 수동Bot은 그냥 컨셉놀이계정
  • 6. 데빌스캠프도 있으니 만들어 보자 • 언젠가는 만들려고 했는데 이번기회에 만들어보기 로 했습니다. • 뭔가 인터넷 통신하고 그러니까 서버지식 있어야 하 나 하고 이때까지 미뤄뒀습니다. (아니더라고요) • 이렇게 귀차니즘이 무섭습니다
  • 7. 그래서 만들어진 과정 • 수요일 - 세션을 하기로 결정이 남 • ??? • JDP가동
  • 8. JDP가 돕니다 • 목요일 - 조사 및 개발 시작 • 금요일 - 생각보다 어렵다 + 원래 일정이 있었음 • 토요일 - ^^;;;; • 어떻게든 되긴 함 • https://twitter.com/princess_yutki
  • 9. 그래서 어떻게 만드나요 • 1. 프로그램을 짠다 • 2. 자신의 컴퓨터에서 돌린다 • 3. 끝 • 서버지식 X, 트위터 API전부 읽을 필요 X • 툭 까놓고 말해서 C언어만 할 수 있어도 만들수있음 • 왜냐면 라이브러리가 있거든요!
  • 10. 여기서 잠깐 봇을 만드려면? • 이미 프로그램 안짜도 봇을 만들어주는 사이트가 많 음 • 그러나 추가기능은 유료고, 제한도 걸려있음 • 자신이 기능 추가하는게 불가 • 그래서 그냥 내가 만들기로 함(공부도 하는셈치고) • http://matome.naver.jp/odai/2133695904966289401
  • 11. 1. 라이브러리 조사 • 최근 자바를 손대보고 있어서 자바로 하기로 함 • http://stackoverflow.com/questions/851767/best- java-twitter-library • Twitter4J를 사용하기로 함 • 업데이트를 잘 해주고, 초보자가 사용하기 쉬움, 튜 토리얼 풍부(한국어 튜토리얼도 있음)
  • 12. 예제를 보면서 공부한다 • http://twitter4j.org/ko/code-examples.html
  • 14.
  • 15.
  • 16. 여기서 얻은 정보를 어플리 케이션에 등록하면 끝 • 어플리케이션은 이 정보를 이용해서 내가 어떤 어플 리케이션인지 트위터 API에 알린다 • 유저의 토큰 키를 사용해서 이 어플리케이션이 유저 에게 접근 할 수 있다 • Twitter4J는 properties파일로 저장해두면 편함
  • 17. 이 정보만으로도 간단한 프 로그램이 가능 • 이제 Twitter4J로 프로그램을 짭니다 • TwitterFactory에서 Twitter 객체를 찍어내서 그걸 하 나의 계정으로 취급하는 방식인듯하였습니다 • 참고한 사이트 - http://d.hatena.ne.jp/redcat_prog/20120315/133178 0805
  • 18. • BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); • String tweet = ""; • while(tweet.isEmpty()) { • System.out.print("今何してる ? : "); • tweet = br.readLine(); • if(tweet.length() > 140) { • System.out.println("字数制限を超えています。"); • tweet = ""; • continue; • } • } • Twitter twitter = new TwitterFactory().getInstance(); • Status status = twitter.updateStatus(tweet); • System.out.println(status.getUser().getScreenName() + " として投稿しました : " + status.getText());
  • 19.
  • 20.
  • 21. 기능을 생각해봄 - 정기 트윗 - 타임라인 분석해서 특정 키워드에 반응 하기 - 멘션이 오면 그것에 반응하기 - 멘션이 오면 맞는 이미지를 합성해서 반 환
  • 22. 기능을 생각해봄 - 정기 트윗 - 타임라인 분석해서 특정 키워드에 반응 하기 - 멘션이 오면 그것에 반응하기 - 멘션이 오면 맞는 이미지를 합성해서 반 환
  • 23. 기능을 생각해봄 - 정기 트윗 - 타임라인 분석해서 특정 키워드에 반응 하기 - 멘션이 오면 그것에 반응하기 - 멘션이 오면 맞는 이미지를 합성해서 반 환
  • 24. 기능을 생각해봄 - 정기 트윗 - 타임라인 분석해서 특정 키워드에 반응 하기 - 멘션이 오면 그것에 반응하기 - 멘션이 오면 맞는 이미지를 합성해서 반 환 에휴 왜그랬지? ㅜㅜ
  • 25. 다른 계정을 인증하는 법 • 1. 어플리케이션에서 토큰 요청 URL을 생성 • 2. 들어감 • 3. 인증하고 싶은 계정으로 로그인 후 앱 승인 • 4. 인증 • 저같은 경우는 핀으로 인증 진행
  • 26.
  • 27.
  • 28. 이렇게 인증하면 다른 계정 에도 됨 ㅎ
  • 30. 주의 할 점 • 트위터는 짧은 간격으로 비슷한 문장을 던질 수 없다 (문장 유사도 검사를 내부에서 하는듯) • 그래서 테스트 할 때 짧은 간격으로 날리려면 일일히 다른 문장으로 해서 날려줘야됨(실제로 만들때도 생 각해야됨) • 시간 알림 폼도 숫자만 바꿔서는 중복 트윗이라고 막 음
  • 31. 결론 • 봇만들기 어렵지 않다. 트잉여는 해보자 • 직접 만들면 이런저런 기능 섞을 수 있어서 재밌는 걸 만들 수 있다 • 라이브러리 짱짱인 것 • 남은 기능은 프로젝트로 돌려서 데빌스 끝나고 만드 는걸로,,,