2014년 5월 8일 목요일

[전산실 이야기] 전산(직)업을 준비하는 사람에게 추천하는 5가지

나는 누군가와 외부에서 만났을 때 무슨일 하세요. 하면 " 아 네 저는 개발자 입니다. " 라고 이야기 한 적이 별로 없다. 별로 없다는것은 한번도 없지는 않을 것이라는 스스로의 불안함이 조금은 내포되어 그렇다.  그렇다고 누군가에게 이야기 했다면 아니 아마도 누군가 한테는 개발자라고 당당히 말했을 지도 모른다. 그러나 어찌 되었든 나는 누군가 나에게 물었을 때 보통.. 나의 소속을 이야기 하곤 한다.

" 아 네 전산팀에 있어요 " 또는 " 아 네.. 전산 일 해요 " 라고 하면 대단히 신기하게도 다들 이해 하는 표정과 함께 " 아 네~~~ 그렇군요" 한다. 억양을 들어보면 누구나 다 이해할 만한 수준이다.  참으로 궁금하고 참으로 대단하다고 생각하는 건 도통 난 전산(算) 이란 이 용어에 대해서 무슨 뜻인지 잘 몰랐다. 아니 더 정확히 말하면 사람들은 무슨 뜻으로 이해 하는지 잘 몰랐다.

#구글에서 검색하면 이렇게 나온다.. 전산을 검색 한건 처음이다.

어느덧 전산팀에 10년 이란 시간이 지나 보니 사람들이 이해하는 전산 이란 용어는 = 컴퓨터를 고치는 일 또는 컴퓨터와 관련된 모든일을 다 할줄 아는 또는 IT라는 용어와 관계 있으면 모든것을 아는 뛰어난(?) 사람 으로 이해하는 부류와 그냥 저냥 할일 없이 농땡이 피면서 우리가 시키는 일이나 제대로 하길 바란다는 표정을 갖는 부류로 양분되는것 같다. 후자 같은 경우 너무 비약이 심한 것 아니냐고 말할 수 있으나 대략적으로 표현이 거칠었을지 모르나 비주류에 IT 부서가 있는것 곳은 주류에 포함된 곳보다 훨씬 더 많다는게 현실이다. 나 개인으로도 지금 주류인가 비주류인가 라고 질문 한다면 그 중간 어디쯤이라고 말하고 싶다. ( 마음과 생각만은 그렇다. ) 

후자의 분류는 잊고 전자의 모든것을 아는 IT인 이라면 어떨까. 내 생각엔 과대 평가 이다. 또는 선입견일 수도 있다. 문득 가장 많이 당황하거나 놀라는 순간은 이렇다. 많은 분들이 저에게 엑셀의 사용을 문의 하신다. 하지만 나는 엑셀에 기본적인 기능과 함수( 그래봐야 SUM, IF, COUNT ... 등등)일 뿐이다. 모른다고 대답하면 " 뭐야.. 귀찮은가 보넹.. " 라고 생각한다. 물론 아닐 수 도 있으나 표정을 이미 그렇다고 봐도 된다. 보통 60% 이상은 그렇게 생각 한다.





구구절절 쓸데 없는 이야기 같은 소리들을 널려 놓은 것은 개발방법론에 대한 작지만 개인 적인 생각을 남겨 놓고자 함이다.

난 일반적인 완성품(상용) 패키지 소프트웨어를 개발해 본적이 없다. 또한 주변 분들이 넌 맨날 갑질만 했잖아 라고 하시는데 계약 관계에서의 분명 갑은 맞으나 온라인이나 외부 분들의 열악한 SI  환경과 같은 갑같은 행동과 경험은 가져보질 못했으니 갑이라고 생각하진 않는다. (그래도 넌 갑이야 라고 얘기하는 거래처 분들이 계신 수 있으니 논지에서 벗어나므로 넘어 가련다.)  
  
개인적으로 개발 경험이 기업내부 어플리케이션에서 Web Group Ware, ERP, CRM 등의 프로젝트에 참여해 내부의 프로세스를 개선하고 어플리케이션을 개발 하는 일을 해왔다. 가끔은 학교 졸업한 선/후배들의  SI 이야기가 무척 궁금증을 유발하긴 한다. 어떤 분위기 인지 어떤 시장인지... ** 같은 *들이라고 표현하는 것이 진정 무엇인지. 그렇다고 그쪽으로 가고 싶단 생각 또한 못해봤다. 아니 안해본게 맞을것 같다.  외부 고객이 아닌 내부 고객을 상대 하다 보면 장단점이 있기 마련이다. 어떤 내부 고객을 상대 하느냐에 따라 개발은 그에 따라 방법론이 달라 지는 차이가 나에겐 있다.  

보통의 내부 프로세스 개선(비공식) 으로 진행할 땐 전통적인 개발 방식을 고수 한다. 개선해야할 요구사항을 정리하고 명세서를 작성하고 모델링하고 정의서(단어, 용어, 개발 가이드라인, 데이터구조 등)을 정리하고 프로그램을 개발한다. 그리고 테스팅 하고 배포 한다. 생각해보면 이런 과정을 했던것은 10년동안 딱 1번 뿐이다. 분명 학교에서 소프트웨어 공학이나 개발 방법론등을 배울땐 어딜 가나 모두 이렇게 개발 하는 줄 알았다. 물론 자원이 좀더 났고 개발 환경이 좀더 시스템화되어 있는 곳은 항상 이렇게 할 것으로 생각된다. 개인적으로 경험해 보진 않았다. 그래서 그곳이 이렇다 저렇다 하긴 내 관점이 아닌것 같다. 





 외부 고객이든 내부 고객이든 기다려주지 않는 다는 공통점을 가지고 있다. 아이러니 하게도 개발의 일정과 배포 일정을 공유하였는데도 항상 그 이전의 날짜에 질문한다. "안됐어요?" 질문인지 반문인지 모르는 것들 아직도 궁금하긴 하다. 질문 맞나? 또한 외부 고객은 계약관계와 지급해야할 돈을 가지고 협박한다면 내부 고객은 나의 지식수준과 경력을 평가하여 조직내부의 부정적 여론을 만든다. (한두번 당해본일이 아니다. 협의 할때 내 앞에선 굽신거리다가 뒤에서 내 뒤통수가 터질것 같은 느낌을 받아 본게 참으로 많다.) 



이 글의 목적은 내부 고객의 어처구니 없는 요구사항에 문제가 있다고 지적질 하고 나는 잘났다는 표현을 하고 싶은 것이 아니다. 세상에 모두 흑과백만 있는것 또한 아니고 꼭 그런 사람만 주변에 있는것 또한 아니다. 단지 좀더 많을 뿐이다. 그렇다면 내가 또는 우리 분야에 일하고 있는 사람들이 어떠한 준비를 해야 할까 라는 고민을 하게 되어 나름대로 정리를 해보고자 했다. 우리가 기본(?)으로 가져야할 준비는 몇가지 있지 않을까 말이다. 물론 해당 IT 기술은 그에 준하는 것이 반드시 필요 하므로 그부분은 생략 하도록 한다. 어느 곳에나 각기 다른 기술을 요하므로 내가 말하고자 하는 것은 공통적이고 상식적이나 잘 인식하지 못하는 것 아닐까 싶다. 

이런 저런 이야기를 두서없이 하는것은 10년을 해보니 이제야 기본을 알게 된것 같고 그러한 기본을 갖기 위해서 필요한 것은 어떤 것이 있을까 정리해보고 앞으로 살아가야할 내 자신을 다시 다독이고 또 이 분야로 오게될 후배들이 이러한 것들을 좀더 보강을 한다면 보다 더 좋은 환경에서 근무 할 수 있지 않을까 생각을 하게 되었다. 


* 전산(직)업을 준비하는 사람에게 추천하는 5가지 
 - 분류기준을 오해할 수 있으나 여기서 말하는 전산(직)업은 일반 기업에서 자체 IT조직을 가지고 있는 경우에 대한 제한임을 사전에 공유하고 싶다. 물론 그렇지 않더라도 추천해주고 싶은 것이기도 하지만 말이다. 

1. 전략적으로 생각하고 상대말의 말에 귀기울인다.
  - 과거엔 정보화 전략이란 말을 알아 듣지 못했으나 10여년이 지나고 나서야 현업과 미팅을 할때 알게된 사실은 요구사항에 관계되어 있는것은 한두가지가 아니라는 사실이다. 복합적인 내용을 인지하고 사고하여 요구사항을 정리 해야 하고 현업에서 이야기 하는 것을 적극적이고 호전적인 자세로 귀기울이는것이 필요 하다. 간혹 현업의 이야기를 자꾸 짤라내고 안된다는 말만 하는 경우가 있는데 참으로 해줄 말이 없다.


2. 전체적인 사회 흐름과 변화에 대한 공부를 꾸준히 해야 한다.
  - 기술에만 집착하다 보면 큰 그림을 보지 못하는 경우가 있다. 다른곳은 몰라도 전산실이나 전산팀에선 깊이 있는 기술적 기능 보단 전체의 그림을 보는것이 필요하다. 말하지 않아도 지금의 시대는 기술만 존재하지 않는다. 기술은 문화고 문화는 기술을 활용해 좀더 나은 세상을 만들어 가는 것 아닐까. 또한 입사하고 나면 공부하지 않는 사람이 참으로 많다.


3. 보고서 작성과 PT는 내 본업이다 라고 생각하라
 - 보고서 작성 기법은 참으로 지금 현재 나에게도 숙제이다. 제대로 하지 못한다고 생각하기 때문이다. 그래서 더더욱 중요하다. 상사가 원하지 않아도 보고서는 항상 작성하도록 한다. 언제든지 원할때 준비 했던 보고서를 꺼내길 바란다. 기회는 언제나 오지도 않을 뿐더러 기회는 순간적으로 왔다 가는 경우를 많이도 봐왔다. 그리고 정작 더 중요한것은 보통의 상사는 보고서 내용을 보지 않는다. 내 눈과 입만 바라볼 뿐이다.


4. 독서에 많은 시간을 할애 하라(인문학적 도서를 추천한다)
 - 이미 IT 기술서 독서량은 충분하리라 생각한다. 그런데 문든 10년 동안 외부에서의 변화나 내부에서의 변화나 결국 사람이 중심이 된 변화되는 모습을 볼 수 있다. 근본적으로 사람을 이해하고 사회를 이해하고 역사를 이해 한다면 언제든지 새롭게 요구되는 현업의 요구사항이 말도 안되는 내용이라고 치부해버리지는 않을 듯 싶다. 또한 전산실을 떠나서라도 언제든지 준비된 사람이라고 단언 하고 싶다.


5. 현업 타부서의 핵심 인재들과 친구가 되어라
 - 결국 내부 고객을 상대하는 우리는 영원한 적도 영원한 친구도 없다. 그렇다면 모두를 적으로 만드는 불상사를 하지 않길 바란다. 그렇게 될 경우 언젠가 본인이 생각한 모든것들이 하루 아침에 물거품이 되는것을 보는 것은 시간 문제이다. 또한 IT 투자에 인색한 조직일 수록 현업의 힘이 크게 작용하므로 반드시 섭외해야 할 인재들이다.

두서 없이 이런 이야기 저런 이야기를 남겨봤다. 그냥 쓰레기 같은 글이 될지 조금이나마 도움이 될 진 모르겠으나 나 개인적으로 나마 내 생각을 정리 해봤고 이 5가지를 위해서 지금도 그리고 앞으로도 좀더 노력해야 한다는 사실을 다시 한번 확인 한다.

오늘은 어버이날인데 내 부모와 장인, 장모님께 꽃한 송이 달아 들이지 못한것이 참으로 죄송스러운 하루이다. 모두 건강하세요. 감사합니다.







[PowerBuilder] Install - cannot to license Server

[Web Ref] http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc37771.1250/doc/html/den1245251349437.html

신규 설치를 하거나 추가로 설치 하는 경우 이런 문제가 있을 줄을 몰랐다. 결론적으로 IPv4와 IPv6에 대한 지원이 모두 되는 기준이나 기본적으로 IPv4를 제공한다. 하여 비활성화를 처리 하고 나면 제대로 설치가 진행이 된다.

나와 같은 뻘짓(?)을 하지 마시라고 공유

** 윈도우 환경에서 설치시 오류..
hen starting the SySAM license server, you may see this error:
lmgrd is not running: Cannot connect to license server 
system. (-15,570:10035 "WinSock: Operation would block")
This version of Sybase IQ includes Internet Protocol Version 4 (IPv4) and Internet Protocol Version 6 (IPv6) versions of the SySAM license server software. You can choose the version of the license server based on your environment using the sysam configure command. By default the IPv4 version of the license server is configured for use.
The IPv4 version of the license server cannot be used properly, if you have enabled IPv6 on the license server host. If this is the case, you can:
  • Disable IPv6 TCP/IP protocol on the license server host.
  • Use another Windows host that does not have IPv6 enabled.
  • Use a UNIX host for the license server. You can use the IPv4 version of the license, even if both IPv4 and IPv6 are enabled on UNIX.

2014년 5월 3일 토요일

[Using R] R Install & RStudio Install for Windows


* 설치 환경
 - Windows 7 Professional K 64Bit
 - R 3.1.0
 - RStudio 0.98


1. R 다운로드


2. R Project



윈도우 32/64 Bit 가 모두 포함되어 있는 파일이다. (윈도우용인 경우) 그런데 간혹 자신의 비트에 맞도록 설치하다 보면 (64Bit인경우) 찾을 수 없는 오류가 나는 현상을 많이 보아 왔다. 가급적이면 32/64 비트 관련 파일 체크를 건드리지 말고 설치 하길 바란다. 

이후 진행되는 여러가지 패키지 사용이나 활용을 위해서 한가지 주의 해야 할 부분은 윈도우 설치 시 계정명(사용자명)을 한글로 사용한 경우 기본 워크스페이스가 연결되거나 DLL이 로드될때 오류가 나는 현상을 종종 보아 왔다 설치 하여 사용하는 경우는 계정명을 영문으로 하시길 바란다. 


 3. RStudio Download





설치 후 기본 화면을 구성한다. R 사용을 위해서 반드시 필요 한것은 아니나 여러가지 툴 가장 좋은 기능을 제공하는 것으로 생각된다. 환경에 따라 R Server, RStudio 를 구축 하는 경우 웹환경에서도 사용자별로 제공이 가능 하다. 





동장방식에 대한 설명을 좀더 붙여 보고자 그림을 그리려다 우연히 오래전 자료를 보고 참여하여 그림을 한장 붙인다. 이 그림은 (주)센소메트릭스에서 발행한 "R의 설치 및 기본 사용법"을 참고 하였음을 알린다.

R의 작동 방식


기본적으로 R 시스템은 입력되는 스크립트와 저장되는 변수들을 메모리에 저장하였다가 결과를 보여주는 형태로 이뤄진다. 입력되는 데이터는 로컬에 존재하는 파일(이미지포함) 인 경우도 있고  인터넷 상에 있는 외부 데이터인 경우도 있다. 간혹 로드되는 데이터가 사이즈가 많은 경우 사용하는 클라리언트 메모리 사양에 따라 결과를 확인하지 못하고 정지 되는 경우가 많으므로 이에 따른 적절한 조치가 필요 하다.

* Sample Source
Ref  - http://cran.r-project.org/web/packages/doParallel/index.html

install.package("doParallel")
library("doParallel")

cl <- makePSOCKcluster(2)
registerDoParallel(cl)

m <- matrix(rnorm(9), 3, 3)
foreach(i=1:nrow(m), .combine=rbind)

stopCluster(cl)

2014년 4월 30일 수요일

[Linux] CentOS 6.5 - Samba Server Configuration

* Samba는 주로 윈도우즈 사용자와 함께 파일서버 형태로 구성하는 경우 많이 사용을 하게 된다. 팀내 공유문서 및 파일 구성을 위해서 7년만에 CentOS를 접하면서 새로 설정 하는 것들을 찾다가 이것 저것 함께 정리 하게 되었다.

원문주소
" Easy Samba server installation on CentOS 6.5 " 

Samba is a client/server system that implements network resource sharing for Linux and other UNIX computers. With Samba, UNIX files and printers can be shared with Windows clients and vice versa. Samba supports the Session Message Block (SMB) protocol. Nearly all Windows computers include SMB support with their internal network subsystems (NetBIOS in particular).

With an appropriately-configured Samba server on Linux, Windows clients can map drives to the Linux filesystems. Likewise, the Samba client on UNIX can connect to Windows shares by their UNC name. Although differences among various operating systems (such as filesystem naming conventions, end-of-line conventions, and authentication) can limit interoperability, Samba offers a generally serviceable mechanism for resource sharing on a heterogenous network.


* 설치를 위해서 체크 및 버전을 확인 한다.

1. [root@orabackup ~]# yum install samba samba-client samba-common

2. [root@orabackup ~]# smbd --version



* 서비스를 자동으로 올려주기 위해서 아래의 문장을 처리 한다. 그러나 보통 한글판 CentOS6.5 버전을 설치 할때 보통의 특별한 체크를 하지 않았다면 "Basic Server" 버전 이상의 설치 체크에선 이미 등록되어 있다. 다만 자동 시작의 레벨 체크가 되어 있지 않으므로 그부분에 대한 설정 변경만 한다면 자동 실행을 큰 무리 없을 것이다.

여하튼 그것이 있든 없든 사용할 수 있는 구문 임

1. [root@orabackup ~]# chkconfig smb on
2. [root@orabackup ~]# chkconfig nmb on


* 방화벽 설정이 보통은 열려 있지 않으므로 방화벽 설정

1. [root@orabackup ~]# iptables -I INPUT 4 -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
2. [root@orabackup ~]# iptables -I INPUT 5 -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
3. [root@orabackup ~]# iptables -I INPUT 6 -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
4. [root@orabackup ~]# service iptables save

또는 설정파일을 직접 열어서 VI로 수정하여 서비스를 재시작 하여도 동일한 결과를 얻을 수 있다.



1. [root@orabackup ~]# vi /etc/sysconfig/iptables

* 아래내용 추가
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

2. [root@orabackup ~]# service iptables restart


3. [root@orabackup ~]# cat /etc/sysconfig/iptables



* 윈도우에서 네트워크 드라이브로 접속(인증)할 사용자/그룹 정보와 폴더를 생성한다.

1. [root@orabackup ~]# useradd its
2. [root@orabackup ~]# groupadd smbgrp
3. [root@orabackup ~]# usermod -a -G smbgrp its
4. [root@orabackup ~]# smbpasswd -a its
5. [root@orabackup ~]# cd /home/its
6. [root@orabackup ~]# mkdir its_files
7. [root@orabackup ~]# chown -R its:smbgrp its_files/
8. [root@orabackup ~]# chmod -R 0770 its_files/


* Samba 설정 파일을 아래와 같이 변경하여 마무리 한다.



* 마무리한 서비스를 재시작 한다.

1. [root@orabackup ~]# service smb restart
2. [root@orabackup ~]# service nmb restart


* 네트워크 드라이브 연결은 윈도우에 처리 하며 별도의 설명을 붙이지 않겠음

1. \\서버해당아이피\its_files
2. 상위에서 만든 아이디/패스워드로 접속하여 연결 완료



2014년 4월 18일 금요일

[Linux] vi command - 주요명령어 메모

1. 시작과 종료에 관련된 명령어
명령어 입력 상태에서 입력해야 합 [Shift + :]
wq 저장하고 종료
w [filename] 주어진 파일 이름으로 저장
w! [filename] 주어진 파일 이름으로 저장/덮어쓰기 후 종료
w! 저장후 편집종료
q 저장하지 않고 종료
q! 저장하지 않고 강제종료
e 종료하지 않고 다른 파일 편집
e! 편집한 내용 저장하지 않고 최종 저장된 상태로 파일 열기


2. 입력과 수정을 할 때 사용하는 명령어
i 문자 앞에서부터 입력
a 현재 문자 뒤에서부터 입력
o 현재라인 아래에 입력
s 커서가 있는 단어를 지우고 입력하기
S 커서가 있는 행을 지우고 입력하기
cw 커서 위치의 한 단어를 수정하기
co 커서 위치부터 줄의 처음까지 수정하기
c 커서 위치부터 줄의 끝까지 수정하기
cc 커서가 있는 줄을 수정하기
cj 커서가 있는 줄과 그 다음 줄을 수정하기


3. 삭제할 때 명령어
dw 한 단어 삭제
dd 한 라인 삭제
dj 커서가 있는 줄과 그 다음 줄을 삭제
dk 커서가 있는 줄과 그 앞줄을 삭제
do 커서 위치부터 줄의 처음까지 삭제
x 커서의치의 글자 삭제
D 한줄삭제
X 커서 바로 앞의 글자 삭제

4. 복사할 때 명령어
y 문자 복사
yy 한라인 복사
yw 커서 위치부터 단어의 끝까지 복사하기
yj 커서가 있는 줄과 그 다음줄을 복사하기
yo 커서 위치부터 줄의 처음까지 복사하기
yk 커서가 있는 줄과 그 앞줄을 복사하기
y$ 커서 위치부터 줄의 끝까지 복사하기
p 현재 줄 다음에 버퍼의 내용을 붙임
P 현재 줄 앞에 버퍼의 내용을 붙임

2014년 4월 17일 목요일

[Using R] Sentiment Analysis Sample Source

# 아래 내용은 이전 포스팅인
트위터 글(데이터) 수집하기 에서 만들어진것이 R실행 코드에서 연결되어야 실행 가능 합니다.

install.packages("plyr")
library(plyr)

hilton.text <-laply(hilton.tweets,function(t)t$getText())
head(hilton.text,3)

#긍정 단어 파일 스캔
pos.word=scan("positive-words.txt",what="character",comment.char=";")

#부정 단어 파일 스캔
neg.word=scan("negative-words.txt",what="character",comment.char=";")

#수작업으로 추가 할수도 있음 (Sample)
pos.words<-c(pos.word,"upgrade")
neg.words<-c(neg.word,"wtf","wait","waiting","epicfail","mechanical")


#
install.packages("plyr")
install.packages("stringr")
library(plyr)
library(stringr)

score.sentiment =
function(sentences, pos.words, neg.words, .progress='none')
{
  require(plyr)
  require(stringr)

  # we got a vector of sentences. plyr will handle a list
  # or a vector as an "l" for us
  # we want a simple array ("a") of scores back, so we use
  # "l" + "a" + "ply" = "laply":
  scores = laply(sentences, function(sentence, pos.words, neg.words) {
 
    # clean up sentences with R's regex-driven global substitute, gsub():
    sentence = gsub('[[:punct:]]', '', sentence)
    sentence = gsub('[[:cntrl:]]', '', sentence)
    sentence = gsub('\\d+', '', sentence)

    # and convert to lower case:
    sentence = tolower(sentence)
 
    # split into words. str_split is in the stringr package
    word.list = str_split(sentence, '\\s+')

    # sometimes a list() is one level of hierarchy too much
    words = unlist(word.list)
 
    # compare our words to the dictionaries of positive & negative terms
    pos.matches = match(words, pos.words)
    neg.matches = match(words, neg.words)
 
    # match() returns the position of the matched term or NA
    # we just want a TRUE/FALSE:
    pos.matches = !is.na(pos.matches)
    neg.matches = !is.na(neg.matches)
 
    # and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
    score = sum(pos.matches) - sum(neg.matches)
 
    return(score)
  }, pos.words, neg.words, .progress=.progress )

  scores.df = data.frame(score=scores, text=sentences)
  return(scores.df)
}

#함수 실행
hilton.text<-hilton.text[!Encoding(hilton.text)=="UTF-8"]
hilton.scores=score.sentiment(hilton.text,pos.words,neg.words,.progress='text')

#실행결과 값을 히스토그램으로 표현
hist(hilton.scores$score)
hilton.scores$hotel='Hilton'
hilton.scores$code='HL'


[Using R] R을 사용하여 트위터 데이터 수집하기 - Twitter Oauth for R

트위터에 대한 데이터를 기준으로 간단한 감성분석 샘플을 만들어 보자. 참고된 스크립트는 데이터베이스 진흥원 빅데이터 아카데미에서 사용한 샘플 소스 임을 밝힌다. 트위터에 있는 글을 수집하기 위해서는 어플리케이션을 하나 임시로 만들어서 데이터 가져오기 위한 준비를 몇가지 해야 한다. 샘플은 영문으로 된 것을 기준으로 하며 한글로 된 데이터를 가져오는 부분은 추가로 포스팅에 업데이트 될 예정이다. 크게 다리지는 않지만 몇가지 작업들이 추가 된다.

1. twitter 계정 만들기 ( 별도 계정 생성은 설명을 붙이지 않는다 )

2. twitter에 접속 한 후 application 생성이 필요

    https://apps.twitter.com/ 접속 후 로그인


3. "Create New App" 클릭 




"Create your Twitter application" Click 

## 2016년 3월 - 기존 트위터 계정에서 모바일 번호 인증이 되어 있지 않으면 하지 못하도록 변경된 것 같다. 결국에 또 정보 제공 해주고 나서야 다시 가능 
그래서 첨부된 이미지에 이름이 달라졌습니다. " ozzang98_RTest " 로 등록 


4. 생성된 Application 정보를 참고하여 R 스크립트에 적용 한다. 


 * 최근에 Access Token 버튼이 추가 되어 Create New Access Token 을 추가 하여야 한다. 추가 하고 나면 아래의 그림과 같이 활성화가 된다. 

5. 설정이 끝나고 나면 이 정보를 가지고 R 에서 스크립트를 실행한다. 

* 실행환경 윈도우7 64비트, R 3.2.0, RStudio 0.98.1103 

# 기본적인 패키지 설치를 위한 구문 
install.packages("twitteR")
library(twitteR)
library(ROAuth)
library(RCurl)

#트위터 접근을 위한 정보 설정을 아래와 같이 함 
requestURL= "https://api.twitter.com/oauth/request_token"
accessURL= "https://api.twitter.com/oauth/access_token"
authURL ="https://api.twitter.com/oauth/authorize"


#상위의 4번 첨부 그림안에 있는 API KEY (본인의 설정에 따라 값이 다름) 
consumerKey="izSShtegtepjWqL1dTWZPg"  

#상위의 4번 첨부 그림안에 있는 API secret 값 
consumerSecret="u03nOZBzqsLrPEVWM2iFbCbDAkbrixPLsTpzZ1MQQ4"


twitCred=OAuthFactory$new(consumerKey=consumerKey,
                                          consumerSecret=consumerSecret, 
                                          requestURL=requestURL, 
                                          accessURL=accessURL, authURL=authURL)

#저장위치 수동지정(기본 Workspace 위치) 
setwd("C:/Users/John/Downloads")
download.file(url="http://curl.haxx.se/ca/cacert.pem",destfile="cacert.pem")
twitCred$handshake(cainfo="cacert.pem")

#이 단계에서 콘솔에 출력되는 URL을 입력하고 어플리케이션 승인을 해야 한다. 


# [그림 참조] PIN 번호 입력을 하고 나면 그 다음 스크립트를 실행 가능 함 


## 입력은 Console 창에서 입력하기 바란다. 

##save(list="twitCred",file="twitteR_credentials")
##load("twitteR_credentials")

registerTwitterOAuth(twitCred) #True 인증 완료 




## 2016년 3월 25일 추가 변경 
## 인증 방법 및 적용이 변경된 것 같으나 정확한 사유는 확인 하지 못했습니다. 
하여 혹시 관련 내용을 적용하시고자 하신다면 하단 내용으로 진행하시길 권장 합니다. 
#install.packages("twitterR")
#install.packages("ROAuth")
#install.packages("base64enc")
library(twitteR)
library(ROAuth)
library(base64enc)

consumer_key <- '3esVC69GlJcmxL4VezZ7CdKwu'
consumer_secret <- 'gwtwk1oMqQvi6ZfqPphQb9uJctCDIIldGxYymU9OcCAJDbkouQ'
access_token <- '133360027-x7e4FuoCVA4AsEFBMjhs4kvx3HN86ajsRQmG7mwJ'
access_secret <- 'ak2qVw9ioIXyLmUw1UqWHNHohJRRPfWzlDtABaHRYzJIr'

setup_twitter_oauth(consumer_key,consumer_secret,access_token,access_secret)


# 트위터글을 검색하여 트윗정보를 가져온다 
hilton.tweets <- searchTwitter("@hilton",n=50,cainfo="cacert.pem")

length(hilton.tweets)
class(hilton.tweets)
hilton.tweets[1:5]
tweet<-hilton.tweets[[1]]
tweet$getScreenName()
tweet$getText()

twitteR 패키지에 대한 메뉴얼을 하단의 링크를 참조 하시길 바랍니다. 



 다양한 채널의  블로그 작성으로  집중이 좀 안되기도 하고  나의 회사를 운영하고 관리 하다 보니  회사의 블로그로 작성 해보는 것은 어떤가 하고  하나로 옮겨 봅니다.  (주)다이닝웨이브 - 블로그 바로가기