2014년 5월 15일 목요일

pChart 를 이용해 그래프 그리기. (PHP)

회사에서 수행중인 프로젝트인데, 크게 세가지 부분을 구현하였다.

하나는 C로 작성한 server 프로그램. 이 프로그램은 TCP를 이용해, remote client가 보내오는 연결 요청을 기다리다가, 연결이 들어오면 thread를 생성한다. 이 thread는 연결된 remote client가 보내는 데이터를 받아, 유효한 것인지 검사한 후, 이를 파일에 저장한다. 파일에 저장한 후에 이것을 우리만의 규칙을 이용해 translate하는 것까지 이 서버 프로그램이 담당한다. 연결이 종료되면 thread는 사라진다.

두번째 부분은, remote client부분.  이 클라이언트는 wireless device인데 현재 2G 모듈을 장착하고, 이 모듈을 켜고 끄고 데이터를 보내고 할 수 있는 MCU(microcontroller unit)으로 구성된 디바이스다.  내가 구현한 부분은 이 MCU에 들어가는 프로그램으로 C로 작성하였다. 이 MCU는 8-bit controller이고, 구현 툴은 Freescale의 CodeWarrior IDE를 이용했다.

세번째 부분은, 웹사이트 부분이다. 웹사이트를 통해 end-user는 데이터가 들어왔는지, 언제 들어왔는지 어떠한 데이터가 왔는지 등등을 살펴볼 수 있다.

오늘 여기에서 언급할 pChart 라이브러리는 세번째 부분인 웹사이트에서 사용한 것인데, 우리가 다루고 있는 데이터는 시간별 O2와 Co2 level이다. Numerical한 데이터로도 볼 수 있찌만, 그래프가 직관적으로 보기 편하기 때문에 그래프도 보여준다.  하지만 내가 웹사이트의 전문가도 아니고, 공부하면서 만들어가는 것이라 그래프도 대충 GD library로 만들었었다.

참고로, 나는 이 회사에 Embedded software engineer 포지션으로 들어왔는데, 와보니 이것저것 다 해야한다. 일당백이다.  호주는 인건비가 비싸서 그런가 사람을 여러명 쓸수가 없다. 하나 뽑아놓고 이것저것 다 해주길 원한다.  그대신 시간을 정해놓고 그때까지 하라고 쪼지는 않는다. (적어도 우리 회사는 그렇다.. )

GD library는 정말 단순한 라이브러리인데, 데이터를 가지고, 라인을 드로우 하는 함수를 이용해 그래프를 그렸다. 정말 무식하게 그렸는데, 이쁘지가 않았다.  매니저가 이거 너무 안이쁘다고 다시 좀 해보란다. 색깔도 너무 칙칙하다고..

우리회사에는 이미 웹사이트가 하나 있는데, 이건 돈주고 외주로 만든것이다. 여기에 있는 그래프는 돈주고 산 라이브러리를 써서 아주 멋드러지게 그래프를 그린다.  나는 또 돈을 들일 수 없으니 공짜를 뒤져보았고, 그중에 pChart라는 멋진 라이브러리를 발견.

사실 pChart도 웹사이트(http://www.pchart.net/)에 보면, 라이센싱 관련한 이런 문구가 있따. 완전 공짜는 아니라는 사실.
Licensing?
pChart is released under two licensing models. If your application is freely distributed and meet the GPL requirements, you can use pChart for free under the the GNU GPLv3 license.

If you want to integrate it in your commercial products, you'll have to get a commercial license. There are some exceptions to this rule for Public Research and Education labs. Non-profit web sites that don't want to publish their source code under GPL may also apply. 

(번역해보면)
라이센싱?
pChart는 두가지 라이센싱 모델 하에 릴리즈됩니다.  귀하의 어플리케이션이 자유롭게(공짜로) 배포되는 것이고, GPL 요구사항을 충족한다면, GNU GPLv3 license 규정하에 pChart를 자유롭게(공짜로) 사용하실수 있습니다.

만일 pChart를 상업적 제품 속에 포함하여 사용하고 싶으시다면, 상업 라이센스를 가져야 합니다. 약간의 예외가 있는데 공적인 연구 및 교육 연구를 위한 것일 경우입니다. GPL 하에서 소스코드를 publish하고 싶지 않은 비영리 웹사이트인 경우에도 역시 이 예외가 적용됩니다.


암튼, 우리 웹사이트는 아직 개발중이고, 상업적 목적으로 쓰이고 있지는 않으나, 만일 이 후에 상업적 목적으로 개방시, 이 라이센스 부분을 짚고 넘어가야 할듯.


라이센스 얘기는 그만하고, pChart는 기본적으로 GD library를 가지고 있어야 한단다.  나는 이미 GD library를 가지고 있으니, 이부분은 패쓰. 소스를 다운로드 받아서, 적당한 위치에서 unzip해주었다.  나의 경우는 web-site에서 쓰고 있는 class 를 넣는 디렉토리 밑에 unzip해주었다. 내가쓴 버전은 2.1.4.

사용 단계를 정리하면 이러하다.

1) Install GD library
2) Download pChart code
3) Unzip it under some directory
4) index.php에 이 위치를 정의하였다.
   define ("PCHART_DIR","~~~");
5) 이제 준비완료.. Pchart를 쓰려면 다음의 세줄을 포함시켜 주면 된다.
    include (PCHART_DIR."class/pData.class.php");
    include (PCHART_DIR."class/pDraw.class.php");
    include (PCHART_DIR."class/pImage.class.php");

함수가 이것저것 많은데, 다큐멘트를 보면서, 필요한 부분만 가져다 쓰면 된다.
세부적인 설명은 다음에....


잔디 3주차

 잔디 심기. 3주차에 접어들었음. 사진. 아래가 1일차 사진. 다음이 3주차.