이전 글에서 잠깐 언급했던 내 장난감 차트인 Zapary Chart(zapChart)에 대해 역사 관리 차원에서 지금까지 진행된 것들을 정리해 보기로 했다. 시작은 이 글을 올릴 때 즈음이니까 아직은 1년이 안됐다.
하지만 호랑이 담배피던 시절까지 거슬러 올라가면 Chart 프로그램에 대한 나의 역사는 꽤 오래다. DOS 창에 c++로 그래프를 그렸던 시절이 있었기 때문이다. 마침 그 때 Windows 3.1이 나오는 바람에 DOS 창에서 돌아가는 프로그램은 의미를 상실했다. 머 전문 개발자도 아니고 실험실에서 모니터링을 위해서 만든 것이었는데 공부하기도 바빠서 그 프로그램은 당시에 모니터링 프로그램이 필요하다던 중소기업 부장 아자씨에게 주어 버렸다. 그리고, 그 즈음에 더 재미있는 장난감이 나왔는데, 그게 바로 리눅스였다. 초창기 리눅스 시절, 리눅스 가지고 별의별 장난을 하면서 잘 놀았다. 하지만 직장 생활을 하면서부터 리눅스나 프로그램 개발과는 멀어지게 돼 버렸다. 그런데 웃기는 건 세월이 지날 수록 리눅스를 쓰는 회사들이 많아졌다는 것이다. 물론, 대부분은 서버용이었다. 언제부터인가 Window는 VirtualBox에서 쓰고 우분투가 내 메인 데스크탑이 된 지도 오래다.
한 가지 위안을 삼고 싶은게 있다면 내 맘대로 지지고 볶고 할 수 있다는 것이다. 그래서 Zapary Chart에는 내 기본적인 생각들을 담아낼 수 있다. 내가 전문 개발자가 아니다 보니 프로그램을 잘 만들지는 못할 것이다. 하지만, 최소한 c++로 만들어진 기존의 오픈 소스 차트 프로그램들과는 다르게 동작할 것이다. 무엇보다 중요한 것은 장난감에 살을 붙여가는 재미가 꽤 쏠쏠하다는 것이다.
오픈소스로 개발해 볼까하는 맘도 없지 않았는데 당분간은 나 혼자 갖고 놀 것이다. 왜냐하면 더 훌륭한 오픈 소스 차트 프로그램도 많기 때문이다. 기본적으로 예전에는 wxWidgets 기반의 freechart를 개선해 보려고 했던 적도 있었는데 해 보다가 구조적으로 막히는 부분이 생겨 버려서 접었다. 새로 시작하는 김에 아예 Qt5를 배울 겸해서 Qt5로 만들고 있다. Qt 기반의 오픈 소스 차트 프로그램인 QCustomPlot도 훌륭한 편이다. 하지만 남들이 짠 프로그램을 소화해 내면서 내 생각을 집어 넣는 일은 생각보다 어려운 일이다. 더구나 나이를 먹을 수록 그게 힘들더라. 그래서 맘 편히 나만의 장난감을 만들기로 한 것이다.
zapChart는 사각형에서 시작했다. 마우스 이벤트 처리 부분이 생소했기 때문에 사각형에서 마우스 이벤트 처리 방식을 이해할 필요가 있었다. 이제 저 사각형들 안에 차트를 꾸겨 넣을 수 있게 되었다. 아직도 마우스 이벤트 처리부분이 깔끔하진 않다. 아무튼 ZapChart는 장난감이기 때문에 마우스로 장난칠 수 있어야 한다. 마우스가 되면 언젠가는 Touch도 당연히 될 것이다.
기본적인 Chart 골격을 만들었다. Grid 방식의 Layout과 다중 축을 지원한다. 한 화면에 무한대까지는 아니더라도 제한없이 Chart를 꾸겨 넣을 수 있다. 하지만 이제 시작일 뿐이다. 머리 속에는 집어 넣어야 할 기능들이 너무 많아서 어느 세월에 만들까하는 생각도 든다. 티끌모아 태산이다. 하나씩 살을 붙이다 보면 태산이 될 것이다.
그래서 Zapary Chart의 실체가 뭐냐... c++/Qt5 기반의 Chart Widget이다. Qt가 Multi-Platform을 지원하니까 이론상 OS나 기기에 상관없이 동작해야 할 것이다. Qt의 QGraphicsView / QGraphicsScene / QGraphicsItem Framework을 사용할까 하다가 그 자체도 복잡하단 생각이 들어서 내가 보기에 가능한 단순하게 만들고 있다. 우분투 환경에서 개발하고 있는데, 차트를 여러개 그려도 컴퓨터가 빨라서 그런지 금방금방 차트를 그려 낸다. 틈틈이 Chart에 대한 내 기본적인 생각들도 기억관리 차원에서 올릴 예정이다.
댓글 없음:
댓글 쓰기