Все началось с того, что я не смог найти нормальной визуализации данных о распространении коронавируса. Вернее, был один сайт, показывающий динамику на карте и метрики по Китаю, но это как раз то, что меня меньше всего интересовало, мне интересна глобальная картина. Скажу честно, этот вирус меня пугает.
План
Ну, это же простейшая задача, подумал я:
- Ищем открытый API на сайте ВОЗ.
- Пишем парсер.
- Поднимаем сервачек с базой где-нибудь во free tier амазона.
- Покупаем домен, сложностью с выбором быть не должно.
- Ставим фласк, наворачиваем d3js для графиков, прикручиваем туда letsencrypt для пущей важности.
Реальность
Что-то пошло не так:
- На сайте ВОЗ нет открытого API.
- Нормальный парсер не написать, ВОЗ выкладывает данные в PDF, формат меняется, а тратить на создание всего дашбордика больше одного вечера не входило в мои планы.
- Оказывается, я уже потратил свой free tier на какие эксперементы.
- Почти все домены вида coronavirus b coronavirus 2020 уже заняты, кому они вообще понадобились-то?
- Учитывая предыдущие пункты, я точно не уложусь в один вечер, настраивая flask и базу для него...
Новый план
Кто-то на github публиковал свой nocode проект, а я-то чем хуже?
- Ну и черт с ним с API, хорошо хоть данные есть.
- Соберем руками, благо PDF файликов совсем мало. Пополнять тоже будем руками, за то время, которое понадобится на создание парсера, можно тратить по 5 минут каждый вечер на протяжении нескольких месяцев, попутно читая отчеты ВОЗ и получая дополнительную полезную информацию, благо ВОЗ публикует отчеты около полуночи, так что их можно оперативно выкладывать на сайт.
- Будем делать все просто, используем shared-хостинг, напросимся к кому-то из знакомых, проект-то не коммерческий и нагрузки не будет.
- На распродаже есть coronavirus2020.live за $3.5, да, обновление будет стоить потом более 20, но за год исчезнет или коронавирус, или человечество.
- Что у нас есть из готовых решений? Возьмем для визуализации бесплатный Google Datastudio, как раз отлично интегрируется с Google Sheets. Вместо SSL от letsencrypt используем cloudflare.
Решение
Можно сказать, что решение получилось действительно nocode и полностью соответствуем моим ожиданиям:
- Данные собраны в небольшую табличку в Google Sheets.
- В Datastudio создан простой дашборд.
- Весь сайт — один html файл в 42 (так получилось не специально) строки, половина из которых — метаданные всяких разметок.
- Вместо сертификата и гугл-аналитики — cloudflare.
- Вместо подключения почты для фидбека — ссылка на твиттер.
Выводы
- Сейчас любой человек, даже не имеющий никакого опыта работы с базами, не знающий SQL, может довольно эффективно работать с данными и строить красивые отчеты. Но SQL все же лучше знать.
- Никогда нельзя забывать о конечной цели, простое решение, приводящее к цели, всегда лучше сложного, а тем более — не реализованного.
- Коронавирус коварен и не думает останавливаться.
Наверняка что-то из этого можно было сделать еще проще и быстрее, а может, кто-то даже сделал более крутую визаулизацию, подключив больше источников данных (многие публикации на китайском, а я в нем, увы, не сильно хорош). Если у вас есть чем поделиться — с удовольствием обсужу в комментариях. Всем здоровья, товарищи.
Автор: Lex Zaitsev