사전 설치 요구사항


request 모듈 사용시, 추가적인 request 모듈 설치를 필요로 한다.


npm install request




폼 전송 방법


request.post('http://service.com/upload', {form:{key:'value'}})
// or
request.post('http://service.com/upload').form({key:'value'})
// or
request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })




쿠키 저장


로그인 등에서 서버로부터 전달받은 쿠키를 저장하고 이후에 요청에 계속 사용하고 싶을 경우, 아래 방법 중 한가지를 사용한다.


1) 매 요청마다 옵션에 jar: true를 설정


request({
  ...

  jar: true
},
...



2) 요청 전에 디폴트값으로 설정


var request = request.defaults({jar: true})




,


PIP는 파이썬으로 작성된 패키지 소프트웨어를 설치, 관리하는 패키지 관리 시스템이다. 파이썬 2.7.9 이후 버전과 파이썬 3.4 이후 버전은 pip를 기본적으로 포함한다.



사전 준비사항


1) 파이썬 2.7.9 혹은 3.4 이후 버전


기본적으로 pip가 포함되어 있지만, 파이썬 실행 파일과 경로가 다르기 때문에 <파이썬 설치 경로>/scripts를 PATH 환경 변수에 추가해야 한다.


2) 파이썬 2.7.9 혹은 3.4 이전 버전


아래 PIP 사이트에서 get-pip.py 파일을 받아 실행하면 설치할 수 있다. 설치 후 역시 PATH 환경 변수에 추가가 필요하다.


 - https://pip.pypa.io/en/stable/installing/


python get-pip.py





사용 방법


1) 패키지 설치


pip install some-package-name


2) 패키지 제거


pip uninstall some-package-name



,


- 텔레그램 봇으로 채널 포스팅 - 2. Node.js 사용 예제 (1)

- [Node.js] HTML 파싱하기 (cheerio 모듈 사용)


위의 두 글을 참고하면 웹페이지의 특정 class에 해당하는 부분을 추출하여 텔레그램 채널로 보내는 것이 가능하다. (두둥)

var http = require('http');
var https = require('https');
var cheerio = require('cheerio');
  
var options = {
    hostname: 'httpbin.org'
  };
  
function handleResponse(response) {
  var serverData = '';
  response.on('data', function (chunk) {
    serverData += chunk;
  });
  response.on('end', function () {
  
    var $ = cheerio.load(serverData);
  
    var result = $(".bash").text();            // 클래스가 bash인 요소를 선택
    var result2 = result.replace(/(^\s+|\s+$)/g, ""); // 앞뒤의 화이트 스페이스를 제거
    console.log("Find by class : bash -> " + result2);
 
    var options2 = {
      hostname: 'api.telegram.org',
      path: '/bot<텔레그램 봇 토큰>/sendMessage',
      method: 'POST',
      headers: {
          'Content-Type': 'application/json',
      }
    };
      
    var req = https.request(options2, function(res) {
      console.log('Status: ' + res.statusCode);
      console.log('Headers: ' + JSON.stringify(res.headers));
      res.setEncoding('utf8');
      res.on('data', function (body) {
        console.log('Body: ' + body);
      });
    });
    req.on('error', function(e) {
      console.log('problem with request: ' + e.message);
    });
      
    req.write(
        '{"chat_id": "@<채널 ID>", "text": "' + result2 + '"}'
    );
    req.end();
 
  });
}
  
http.request(options, function(response){
  handleResponse(response);
}).end();





,


Node.js를 사용하여 텔레그램 채널에 메세지를 보내는 예제입니다.

<텔레그램 봇 토큰>과 <채널 ID> 부분은 아래 글에서 설명했던 값으로 바꿔줍니다.


 -> 텔레그램 봇으로 채널 포스팅 - 1. 준비 작업



var http = require("https");
var options = {
  hostname: 'api.telegram.org',
  path: '/bot<텔레그램 봇 토큰>/sendMessage',
  method: 'POST',
  headers: {
      'Content-Type': 'application/json',
  }
};

var req = http.request(options, function(res) {
  console.log('Status: ' + res.statusCode);
  console.log('Headers: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (body) {
    console.log('Body: ' + body);
  });
});
req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

req.write(
    '{"chat_id": "@<채널 ID>", "text": "test string"}'
);
req.end();



참고 글


 - [Node.js] HTTP 요청하기 (http 모듈 사용)



,

Eclipse를 사용하여 clojure 개발을 하는 것도 가능한데, 내부적으로 lein을 사용한다고 보면된다.


설치

  1. Eclipse를 실행한다.(물론 자바 버전으로..)

  2. Help -> Eclipse Marketplace 메뉴를 실행한다.

  3. clojure로 검색한다.

  4. Counterclockwise를 설치한다.


프로젝트 생성

  1. File -> New -> Project 메뉴를 선택한다.

  2. Clojure/Clojure Project 항목을 선택 후, 다음을 누른다.

  3. 프로젝트 명과 템플릿 명을 입력한다.

  4. 기본적으로 default, plugin, app 세개의 템플릿이 제공되며 각각의 용도는 아래와 같다. 여기서는 app을 입력한다.


    • default : 일반적인 라이브러리 작성을 위한 프로젝트를 생성한다.
    • plugin : leiningen 플러그인 작성을 위한 프로젝트를 생성한다.
    • app : 어플리케이션 작성을 위한 프로젝트를 생성한다.


  5. 기본적인 예제 코드를 포함하는 프로젝트가 생성되는 것을 확인할 수 있다.


lein 명령어 사용

  • Eclipse 환경에서도 프로젝트의 빌드/실행은 leiningen을 통해서 이루어지는데, 프로젝트 오른쪽 클릭 후, Leiningen -> Generic Leiningen Command Line 메뉴를 선택하면 lein 명령어를 실행할 수 있다.


프로젝트 빌드

  1. lein 명령어로 아래와 같이 입력하면 새로운 프로젝트를 빌드할 수 있다.

    lein jar
    
  2. 빌드한 결과로 jar 파일이 생성되는데, 이렇게 생성한 jar 파일에는 clojure 관련 라이브러리가 포함되어있지 않다.

  3. 아래와 같이 lein 명령어를 사용하여 실행할 수 있다. (app 템플릿을 사용하여 프로젝트를 생성했을 경우)

    lein run
    


프로젝트 빌드 (독립 실행 가능한)

  1. lein 명령어로 아래와 같이 입력하면 프로젝트를 빌드할 수 있다.

    lein uberjar
    
  2. 빌드한 결과로 기존의 jar 파일에 추가적으로 standalone이 붙은 jar 파일이 생성되는데, 이렇게 생성한 jar 파일에는 clojure 관련 라이브러리가 포함되어있어 java 명령으로도 실행이 가능하다.

    java -jar <standalone jar 파일명>


REPL(Read-Eval-Print Loop) 실행하기

  • 소스 파일이 열린 상태에서 상단의 Clojure -> Load File in REPL 메뉴를 선택하면, REPL 창에서 소스 코드가 로딩되면서, clojure 구문들을 테스트할 수 있다.


참고 사이트


<테스트 환경>

OS : Windows 7
Eclipse 버전 : Mars
CCW 버전 : 0.35.0.STABLE001


,

Clojure는 Lisp의 파생언어(Dialect)이고 JVM 엔진 상에서 구동된다. (CLR, Javascript 버전도 있지만 특별한 언급이 없으면 앞으로 여기서는 JVM 버전을 다루도록 하겠다)


Leiningen은 커맨드라인 방식의 clojure 개발 환경이다. lein 스크립트의 자동 설치 기능을 이용하거나 윈도우에서는 인스톨러도 사용가능하다.


자동 설치 기능 사용할 경우

  1. Leiningen 사이트에서 lein 스크립트(윈도우용의 경우 .bat)를 다운받는다.

  2. http://leiningen.org/

  3. 다운받은 lein 스크립트를 원하는 위치에 복사한다.(실제 실행시에도 사용되는 파일이므로 설치할 경로에 복사한다.)

  4. 다음과 같이 입력하여 자동 설치를 진행한다.

  5. lein self-install
    
  6. 위 lein 스크립트의 위치를 PATH 환경 변수에 추가한다.

  7. 참고: 자동 다운로드된 파일은 <사용자 폴더>/.lein/self-installs에 저장되니 언인스톨시 이 파일들도 지우도록 한다.


인스톨러를 사용할 경우

  1. 인스톨러를 사용하여 설치를 진행한다.

  2. PATH 환경 변수를 설정할 필요도 없다!


프로젝트 생성

  1. 커맨드 라인에서 아래와 같이 입력하면 새로운 프로젝트를 생성할 수 있다.
  2. lein new <템플릿 명> <프로젝트 명>
    
  3. 기본적으로 default, plugin, app 세개의 템플릿이 제공되며 각각의 용도는 아래와 같다. 여기서는 app을 입력한다.


    • default : 일반적인 라이브러리 작성을 위한 프로젝트를 생성한다.
    • plugin : leiningen 플러그인 작성을 위한 프로젝트를 생성한다.
    • app : 어플리케이션 작성을 위한 프로젝트를 생성한다.


  4. 위 명령어 실행시, 기본적인 예제 코드를 포함하는 프로젝트가 생성되는 것을 확인할 수 있다.


프로젝트 빌드

  1. 프로젝트 디렉토리에서 아래와 같이 입력하면 프로젝트를 빌드할 수 있다.
  2. lein jar
    
  3. 빌드한 결과로 jar 파일이 생성되는데, 이렇게 생성한 jar 파일에는 clojure 관련 라이브러리가 포함되어있지 않다.

  4. 아래와 같이 lein 명령어를 사용하여 실행하거나, java 명령으로 실행하려면 별도로 clojure 관련 라이브러리를 지정하여야 한다. (app 템플릿을 사용하여 프로젝트를 생성했을 경우)

  5. lein run
    


프로젝트 빌드 (독립 실행 가능한)

  1. 프로젝트 디렉토리에서 아래와 같이 입력하면 프로젝트를 빌드할 수 있다.
  2. lein uberjar
    
  3. 빌드한 결과로 기존의 jar 파일에 추가적으로 standalone이 붙은 jar 파일이 생성되는데, 이렇게 생성한 jar 파일에는 clojure 관련 라이브러리가 포함되어있어 java 명령으로도 실행이 가능하다.
  4. java -jar <standalone jar 파일명>
    


REPL(Read-Eval-Print Loop) 실행하기


아래와 같이 입력하면 REPL이 실행되면서, clojure 구문들을 테스트할 수 있다.

lein repl


참고 사이트


<테스트 환경>

OS : Windows 7
Leiningen 버전 : 1.0.0


,


cheerio 모듈을 사용하면, jquery에서 selector를 사용하는 방식으로 HTML을 분석할 수 있다.



사전 설치 요구사항


cheerio 모듈 사용시, 추가적인 cheerio 모듈 설치를 필요로 한다.


npm install cheerio




HTML 파싱 예제


var http = require('http');
var cheerio = require('cheerio');
 
var options = {
    hostname: 'httpbin.org'
  };
 
function handleResponse(response) {
  var serverData = '';
  response.on('data', function (chunk) {
    serverData += chunk;
  });
  response.on('end', function () {
 
    var $ = cheerio.load(serverData);
 
    var result = $(".bash").text();            // 클래스가 bash인 요소를 선택
    var result2 = result.replace(/(^\s+|\s+$)/g, ""); // 앞뒤의 화이트 스페이스를 제거
    console.log("Find by class : bash -> " + result2);
 
    result = $("#AUTHOR").text();                     // id가 AUTHOR인 요소를 선택
    result2 = result.replace(/(^\s+|\s+$)/g, "");     // 앞뒤의 화이트 스페이스를 제거
    console.log("Find by id : AUTHOR -> " + result2);
  });
}
 
http.request(options, function(response){
  handleResponse(response);
}).end();




,


request 모듈 사용시, 추가적인 request 모듈 설치를 필요로 한다.


npm install request



HTTP 요청하기


var request = require('request');

request({
    url: 'http://httpbin.org/ip',
}, function(err, res, html) {
    if (err) {
        console.log(err);
        return;
    }

    console.log("received server data:");
    console.log(html);
});


참고 사항


 - https 접속을 위해서는 url 안에 직접 'https://~'와 같은 형식으로 입력하면 된다.


 - 헤더 정의가 필요할 경우, 아래와 같이 추가한다.


request({
  ...


  headers: {

    'Content-Type': 'text/html'
  }
},
...





,