- PVSM.RU - https://www.pvsm.ru -

Два часа и 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], а я-то чем хуже?

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

Решение

Можно сказать, что решение получилось действительно nocode и полностью соответствуем моим ожиданиям:

  1. Данные собраны в небольшую табличку в Google Sheets.

    Два часа и 3.5 доллара. Как я сделал простой сайт с визуализацией распространения коронавируса - 1

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

    Два часа и 3.5 доллара. Как я сделал простой сайт с визуализацией распространения коронавируса - 2

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

    Два часа и 3.5 доллара. Как я сделал простой сайт с визуализацией распространения коронавируса - 3

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

Выводы

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

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

Автор: Lex Zaitsev

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/e-ffektivnost-raboty/345234

Ссылки в тексте:

[1] nocode проект: https://github.com/kelseyhightower/nocode

[2] coronavirus2020.live: https://coronavirus2020.live

[3] Источник: https://habr.com/ru/post/486544/?utm_source=habrahabr&utm_medium=rss&utm_campaign=486544