swamp_agr (swamp_agr) wrote,
swamp_agr
swamp_agr

Visa calculator, часть 1

Выпал надолго из колеи. Надо раз в сезон брать отпуск, чтобы хвосты устранять. После перехода со всяких 3rd party трэкеров задач на локальный org-mode что-то да сдвинулось с мертвой точки. Конечно, пока о стабильности говорить не приходится, но тем не менее.

История вопроса


  • Год назад в Эквадоре мы с коллегами рассуждали о минусах частых перемещений по миру: это надо за визами следить, за нерезиденством... Так родилась идея о визовом калькуляторе-валидаторе, об инструменте, с помощью которого можно проверять, сколько осталось дней на сейчас или сколько дней останется если ещё сколько-то дней остаётся, но надо будет скоро опять лететь/ехать куда-то вдаль и надо планировать поездку, исходя из оставшихся дней. Ну или перезаказывать визу.

  • В то же время игрался с PureScript, тогда были breaking changes с обратной совместимостью между его инструментами, связанные с переходом с 0.10 на 0.11, если мне не изменяет память. На выбор из MVC можно было взять Pux или Halogen. Halogen не завёлся, Pux взлетел сразу же.

  • Было решено сделать эксперимент без обращений к серверу. Т.е. чисто клиентское предложение, зачем там сервер. Он там не нужен. Все данные можно обработать прямо там. Заодно и посмотрим, что из этого выйдет.

  • Долго ли, коротко ли, после организации всех связанных с этой тулой задач в org-mode, процесс ускорился и вышел на финишную прямую.

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

Как этим пользоваться

  • Наколотить дат в формате YYYY-MM-DD.

  • Ввести ограничения по визы X дней за Y (другие типы визы заложены, но пока не реализованы).

  • Собственно всё. Любые данные немедленно триггерят вычисления.

Как это работает

  • Выбираются все будущие диапазоны из всех введенных корректно диапазонов.

  • Слева направо по будущим диапазонам для каждого дня идёт вычисление.

  • Смотрим в прошлое на Y дней и ищем, исчерпаны ли X дней. Получаем разницу, от которой и отталкиваемся.

  • Смещаемся по будущему до тех пор, пока лимит не исчерпывается.

Демо

После деплоя вылез ряд недочётов, мешающих заявить о production readiness. Зафиксировал, зарелизил. И да, я снова в форме.
Tags: fp, purescript, win
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment