ROOT 가이드

5.3 인터넷 브라우저에 그림 띄우기 THttpServer

THttpServer 는 공식 설명에 의하면는 다음과 같다.

THttpServer는실행중인 ROOT 어플리케이션에 대하여 원격 http 액세스를 제공하고 HTML/JavaScript 사용자 인터페이스를 활성화 합니다. 등록한 모든 개체를 웹브라우저에 표시할 수 있습니다. 

THttpServer은 많은 사용방법이 있지만 여기서는 그림을 띄우는 용도로 활용해보자. 사용방법은 다음과 같다.

  1. THttpServer 포트를 지정해서 생성. 기본 8080.
  2. 객체를 서버에 등록 : THttpServer::Register("그룹", 객체)
  3. 인터넷 브라우저에서 http://localhost:8080/ 접속
  4. 사이드바에서 원하는 객체 클릭
void httpserver()
{
    gROOT -> SetBatch(1);
    auto server = new THttpServer("http:8080");
    cout << "http://localhost:8080/" << endl;

    auto cvs = new TCanvas();
    server -> Register("",cvs);

    auto hist = new TH1D("hist","",100,-10,10);
    hist -> FillRandom("landau");
    hist -> Draw();
}

위 예제에서는 TCanvas 를 화면에 띄우지 않기 위해서 gROOT -> SetBatch(1) 를 사용했다. 서버를 생성한 후 마우스 클릭으로 접속 할 수 있도록 주소를 출력해주는 것도 좋다. 서버에 객체를 등록 할때는 Register 함수를 사용한다. 첫번째 인수로 그룹 이름을 써주고 두번째 인수로 객체를 넣어준다. 그룹 이름을 "" 로 지정하지 않는다면 기본 폴더인 Objects 에 들어가게 된다. 복잡하지 않은 코드에서는 Register 함수를 사용하지 않더라도 캔버스 객체들이 Canvases 그룹에 들어가는 것을 볼 수 있다. 

이제 localhost:8080 에 접속해서 확인해 보자.

http://localhost:8080/
http://localhost:8080/

THttpServer 를 사용하는 것에는 장단점이 있다. TCanvas에서 할 수 있는 작업들 중 THttpServer 에서는 잘 되지 않는 경우도 있고 그 반대의 경우도 있다. 예를 들어서 THttpServer 으로는 Fit panel 을 열 수 없다. THttpServer 의 가장 큰 장점은 브라우저가 등록한 데이터를 가지고 있다는 점이다. 그래서 THttpServer에 그림을 한번 띄우면 기능들이 빠르게 작동하고 코드를 종료해도 계속 남아있다.

 

레퍼런스

댓글

댓글 본문
버전 관리
ejungwoo
현재 버전
선택 버전
graphittie 자세히 보기