...

суббота, 1 февраля 2020 г.

[Из песочницы] Два часа и 3.5 доллара. Как я сделал простой сайт с визуализацией распространения коронавируса

Все началось с того, что я не смог найти нормальной визуализации данных о распространении коронавируса. Вернее, был один сайт, показывающий динамику на карте и метрики по Китаю, но это как раз то, что меня меньше всего интересовало, мне интересна глобальная картина. Скажу честно, этот вирус меня пугает.

План


Ну, это же простейшая задача, подумал я:
  1. Ищем открытый API на сайте ВОЗ.
  2. Пишем парсер.
  3. Поднимаем сервачек с базой где-нибудь во free tier амазона.
  4. Покупаем домен, сложностью с выбором быть не должно.
  5. Ставим фласк, наворачиваем d3js для графиков, прикручиваем туда letsencrypt для пущей важности.

Реальность


Что-то пошло не так:
  1. На сайте ВОЗ нет открытого API.
  2. Нормальный парсер не написать, ВОЗ выкладывает данные в PDF, формат меняется, а тратить на создание всего дашбордика больше одного вечера не входило в мои планы.
  3. Оказывается, я уже потратил свой free tier на какие эксперементы.
  4. Почти все домены вида coronavirus b coronavirus 2020 уже заняты, кому они вообще понадобились-то?
  5. Учитывая предыдущие пункты, я точно не уложусь в один вечер, настраивая flask и базу для него...

Новый план


Кто-то на github публиковал свой nocode проект, а я-то чем хуже?
  1. Ну и черт с ним с API, хорошо хоть данные есть.
  2. Соберем руками, благо PDF файликов совсем мало. Пополнять тоже будем руками, за то время, которое понадобится на создание парсера, можно тратить по 5 минут каждый вечер на протяжении нескольких месяцев, попутно читая отчеты ВОЗ и получая дополнительную полезную информацию, благо ВОЗ публикует отчеты около полуночи, так что их можно оперативно выкладывать на сайт.
  3. Будем делать все просто, используем shared-хостинг, напросимся к кому-то из знакомых, проект-то не коммерческий и нагрузки не будет.
  4. На распродаже есть coronavirus2020.live за $3.5, да, обновление будет стоить потом более 20, но за год исчезнет или коронавирус, или человечество.
  5. Что у нас есть из готовых решений? Возьмем для визуализации бесплатный Google Datastudio, как раз отлично интегрируется с Google Sheets. Вместо SSL от letsencrypt используем cloudflare.

Решение


Можно сказать, что решение получилось действительно nocode и полностью соответствуем моим ожиданиям:
  1. Данные собраны в небольшую табличку в Google Sheets.

  2. В Datastudio создан простой дашборд.


  3. Весь сайт — один html файл в 42 (так получилось не специально) строки, половина из которых — метаданные всяких разметок.

  4. Вместо сертификата и гугл-аналитики — cloudflare.
  5. Вместо подключения почты для фидбека — ссылка на твиттер.

Выводы


  1. Сейчас любой человек, даже не имеющий никакого опыта работы с базами, не знающий SQL, может довольно эффективно работать с данными и строить красивые отчеты. Но SQL все же лучше знать.
  2. Никогда нельзя забывать о конечной цели, простое решение, приводящее к цели, всегда лучше сложного, а тем более — не реализованного.
  3. Коронавирус коварен и не думает останавливаться.

Наверняка что-то из этого можно было сделать еще проще и быстрее, а может, кто-то даже сделал более крутую визаулизацию, подключив больше источников данных (многие публикации на китайском, а я в нем, увы, не сильно хорош). Если у вас есть чем поделиться — с удовольствием обсужу в комментариях. Всем здоровья, товарищи.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий