В свете инструментации кода, мониторинга и сбора статистики не смог пройти мимо довольно интересных средств визуализации. Нельзя сказать, что такого раньше совсем не было, можно только сказать - что такого качество, даже за деньги, ещё поискать надо. Итак, о Google Chart API, Google visualization API и о том, как сложно сделать простую вещь.
В декабре прошлого, 2007-го года, Google открыл доступ к своему Chart API. Идея очень простая - специально сконструированный URL возвращает картинку. Использование бесплатно, упоминают некий предел в 250ооо вызовов в день (~3 в секунду) после которого надо договариваться с гуглом отдельно.
Вот пример -
http://chart.apis.google.com/chart ?chxt=x,y,r,t &cht=lc &chd=s:cEAELFJHHHKUju9uuXUc &chco=76A4FB &chs=200x125
Типов графиков много, есть даже такие экзотические как этот
или этот - географические карты
Графика с временной линией нет, к сожалению. Для того что бы отобразить процесс надо самостоятельно заниматься группировкой.
Другая понятная, но не очевидная вещь - данные заполняют всё пространство графика и соответственно растягиваются/сжимаются в зависимости от того сколько их там:
Идеальная замена генерации графика внутри браузера средствами JavaScript. Нагрузку перенесли с сервера на клиент, и теперь ещё раз с клиента на сторонний (Google) сервер. Не ясно, насколько забота о нагрузке клиента актуальна сегодня, но в 2006-том, когда я последний раз этим занимался, было очень актуально.
В этом месте опытные товарищи должны были вспомнить о практическом ограничении длины URI в HTTP. Так как данные передаются прямо в URL - то запихнуть туда можно их вполне ограниченное количество. См предложенные способы кодирования входных данных.
Особенно опытные должны были также подумать о интернационализации. Тут всё плохо - поддержки нет, даже если вы не забудете сделать urlencode текста набранного не латинскими буквами.
Для публичного сайта, или стартапа какого - это просто клад. С коммерческим применением не всё ясно - можно ли себе позволить полагаться на внешний сервис? Как быть если сервис завтра исчезнет? Что если данные по которым это всё генерируется - private? и т.д.
С архитектурной точки зрения - сервис просто конфетка - яркий пример того, как сложно сделать простую вещь.
На этом дело, впрочем, не закончилось, и спустя полгода, весной 2008-го Google выпускает Google Visualization API. Теперь визуализация ещё сложнее - DHTML и flash. Правда и возможности шире. Вот пример - выглядит просто потрясающе
Графики эти не просто интерактивные, данные могут быть подгружены динамически - тут надо либо самому их отдавать особым образом (JSON, CSV) смотреть как именно, либо закачать в документ Google Spreadsheets. Там целое локальное API смотреть API вокруг этого наворочено.
Любопытно, что мелкий временной процесс и тут не просто отобразить, самый мелкий шаг этого графика - 1 час. Если со статическими графиками ещё можно было что-то придумать - то тут уже всё - никак нельзя.
Кроме такого выдающегося контрола, есть таблицы с сортировкой по клику, интерактивные столбики, пироги и географические карты смотреть что ещё есть . Везде JavaScript и Adobe Flash т.е. решения довольно тяжеловесные, что не умаляет конечно, простоту анализа отображенных данных.
Отличная демонстрация на живом бизнес примере - Google Analytics практически полностью построен на этих графиках.
Всё опять совершенно бесплатно. Никаких ограничений вроде 250ооо вызовов, только Google Term of Service
Меня не отпускает ощущение, что легко визуализировать только относительно статические данные, а с динамикой придётся либо основательно повозиться (JavaScript code) либо устроить себе агрегирующий код на сервере, с которого и кормить цифрами эти контролы.
April 25th, 2010 at 3:06 pm
Написал программу на QT для генерации javascript кода Гугл диаграмм.
http://lifeisfine.ru/2010/04/google-chart-api-mysql-php/