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에 그림을 한번 띄우면 기능들이 빠르게 작동하고 코드를 종료해도 계속 남아있다.

 

레퍼런스

댓글

댓글 본문