블로그 보관함

2014년 3월 19일 수요일

Reference Site

http://nodejs.org/

https://www.npmjs.org/package/node-twitter-api

http://www.w3.org/TR/2011/REC-CSS2-20110607/

https://developer.mozilla.org/en-US/docs/Web/JavaScript

https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference

http://www.w3.org/Protocols/rfc2616/rfc2616.html

http://www.w3.org/TR/2011/REC-css3-selectors-20110929/

http://docs.oracle.com/javase/7/docs/technotes/tools/index.html

http://docs.oracle.com/javase/7/docs/api/












JAVA로의 권력 이동

과거에는 C언어가 모든 cpu의 명령을 짜는데에 사용되었다. 따라서 JAVA에 대한 필요성이 없었고 JAVA를 개발한 것 역시 외면받고 사용되지 않았다. 그러다가 Web에 대한 붐이 일면서 JAVA를 이용해서 만든 HotJAVA라는 브라우저가 등장했다. 당시에는 브라우저 안에 Application이 작게 올라가 있어서 관심을 받는 듯 했으나 MS에서 ActiveX를 내놓으면서 JAVA에 대한 관심이 다시 사라졌다. 그러다가 시간이 흘러 PC 자체에 대한 붐이 일었고 JAVA는 꾸준하게 자신들을 어필하고 있었다. C 언어로 개발을 하는 경우에는 Compile 만 하고 나면 바로 프로그램을 사용할 수 있었다. JAVA의 경우에는 Interpreter 방식와 Compile 방식의 혼합형이었기 때문에 프로그래밍을 한 번만 하면 여러 OS에 대한 프로그램을 만드는 것이 가능했었다. 하지만 당시 PC의 OS는 대부분 Window가 차지하고 있었기 때문에 JAVA는 여전히 크게 주목받지 못하고 있었다. 그러다가 권력이 Server로 이동하게 되면서 JAVA가 크게 주목받기 시작했다. Server OS의 경우에는 Window의 힘이 그리 강하지 않았고 여러 OS들이 시장을 넓혀가고 있는 춘추전국 시대와도 같았다. 이 때부터 JAVA가 빛을 발하기 시작했다. C언어는 각 OS에 대해 프로그래밍을 따로 해 주어야 했었지만 JAVA의 경우에는 Interpreter 방식을 함께 가지고 있었기 때문에 한 번 프로그래밍을 하면 여러가지 OS에 대한 프로그램을 만들어낼 수 있었기 때문이다. 물론 Script 언어들이 Interpreter 방식이기 때문에 여러 OS를 소화할 수 있다는 특징이 있었지만 소스가 공개되기 때문에 업무용 프로그램을 만들기에는 문제가 있었다. 이런 가운데 JAVA의 특징은 Server로 이동한 권력을 받쳐주기에 너무도 적합한 언어였다.
또한 과거에는 권력의 이동이 한 분야로 집중 되었었다면 근래에는 각 언어를 적재적소에 사용하는 추세가 되었다. JAVA의 경우에는 업무용 프로그램은 JAVA를 이용해서 만들고 간단한 Server 프로그래밍에는 NodeJS를 이용하는 모습이 되었다.

Twitter API 이용하기 #03 main.html

Twitter API 를 이용해서 권한을 인증받고 나면 실질적으로 데이터를 가져올 수 있게 되는데
서버에 직접적으로 요청하는 것은 Twitter에서 막혀있기도 하고, 인증 정보는 모두 임시 서버에서 가지고 있게 되어서  Twitter에 요청 하는 것을 맡겨야 한다. 또한 가지고 온 데이터들을 화면에 적절하게 뿌려주는 작업도 해주어야 한다.


2014년 3월 18일 화요일

Twitter API 이용하기 #02 twitter.js (Server Script)

서버를 만들기 위해서는 nodeJS 구동 코드와 Twitter 에 정보를 요청하기 위한 API 가 필요하다. 각각의 코드는 외워서 Typing 할 것이 아니라 각각 홈페이지에서 가져오는 것이 바람직할 것이다.

NodeJS 홈페이지

NPM Twitter-API 홈페이지

또한 인증을 하는 방법과 url에 대해서는 dev.twitter.com 에서 검색을 해 보는 것이 좋을 것이다.

RequestToken 을 요청하는 부분과 AccessToken을 요청하는 부분들은 node-twitter-api 를 사용하면 내부적으로 처리가 되기 때문에 깊이 있는 공부를 하고 싶다면 node-twitter-api 사이트에서 내부 함수를 살펴보자.

생각을 해서 정리해야 하는 부분은 html로 데이터를 객체화 하여 넘겨주는 getUserTimeline이 되겠다. 코드를 읽어보면 그리 어렵지 않다는 것을 알 수 있다.
참 쉬죠잉

Twitter API 이용하기 #01 index.html

Twitter API 로 바로 접근하는 것이 불가능하기 때문에 NodeJS를 이용해서 구축한 서버로 최초 정보를 요청해야 한다. 그 뒤에 가져온 정보를 가지고 Twitter 서버에 인증을 요청한다. 인증을 요청한 작업이 성공적으로 반환되면 페이지는 자동으로 callback URL 이 된다.



NodeJS 서버를 이용하여 Twitter에 정보를 요청하는 순서도

Twitter 서버에 요청하기 위해서는 중간에 대행 역할을 해주는 임시 서버가 필요하고 이를 위해서 NodeJS를 이용하여 임시 서버를 구축하기로 한다.

많이 헬갈릴 수도 있지만 위쪽에 Login 에 존재하는 구분선 위쪽과 아래쪽은 개발자와 유저라고 인식하면 이해가 쉽겠다.




REST API

원격에 존재하는 함수를 호출하기 위해서는 서버에서 제공해주는 방법을 사용하여야 한다. 이 때 서버에서 제공해주는 특정 방식과 양식을 API라고 한다. 서버에 요청하는 언어별로 다른 API를 제공하는 것이 어렵고 귀찮게 되어 도입하게 된 것이 REST API 방식이 되겠다. 이것은 HTTP 기반의 원격함수로서 언어별로 다른 방법을 제공하지 않아도 되기 때문에 널리 사용하게 되었다. REST full 으로도 불리며 서버 API를 요청하는 것에 대한 인증이 필요하다. 완전히 오픈하여 누구나가 사용할 수 있게 하면 생길 수 있는 문제에 대해 보호를 하기 위해 요청을 하는 이에 대한 인증이 필요하게 되었고 굵직한 서버들로부터 인증방식이 출발하게 되었다. 이렇게 되자 작은 영세 서버들이 반발을 하게 되었고 그런 영세 서버들을 보호하기 위하여 표준이 생기게 되었다. 이것이 이른바 OAuth라고 하는 표준이 되겠다. 자세한 설명은 위키피디아:OAuth 를 참조하길 바란다. 


**표준은 강자를 위하여 만들어 지는 것이 아니라 약자들을 보호하기 위한 최소한의 방어막이다. 
>>> 강자는 자신만의 Unique 를 갖고자 한다. 
    대표적인 예) Apple


Twitter에서 제공해 주는 API를 이용해서 Twitter에 자료를 요청하려면 직접 서버에 요청하는 것은 불가능하고 대행 서버를 이용해야 한다. 이는 인증이 된 요청자의 개인정보 보안을 위한 목적이지만 또한 서버측면에서는 인증 요건이 유출되어 서버에 대한 공격을 막기 위함이기도 하다. 서버사이드를 프로그래밍 하기 위해서는 JAVA, PHP, ASP, Python 등이 있지만 이번에는 기존에 배워오던 JavaScript를 이용해서 서버를 구축하는 방법을 살펴보고자 한다.
JavaScript를 이용해서 서버를 구축하기 위해서는 NodeJS 프로그램을 이용해야 한다. 이 Node JS는 Chrome 과 같은 v8 Script 엔진을 사용하기 때문에 구동이 되는 부분과 되지 않는 부분을 코딩 할 때는 Chrome 브라우저를 통해 확인할 수 있다.

NodeJS를 이용한 서버는 단발성 요청을 보내고 받는 것에 유용하고 세션을 유지해야 하는 서비스를 제공하기에는 적합하지 않다. 따라서 이후 트위터에 자료요청을 하는것과 같은 작업을 수행하기에 적합한 방법이라 할 수 있겠다.