Паттерн-матчинг и забытые миры
Nov. 26th, 2015 08:03 amКажется, будет CouchDB 1.7 (тьфу-тьфу, падаем ниц, о великий @kxepal) и в ней мой JS-рерайт.
Мы сами этот JS-рерайт вовсю уже юзаем и сейчас клепаем с ним секретный вполне боевой проект. Прокси из нода с express.js перед CouchDB стал не нужен – проект умеренно нагруженный, так что Кучдбшный Spidermonkey в самый раз. Любопытно, что кода получается меньше, чем в ноде.
В силу того, что JS-рерайт это, по сути, раутер запросов, такая входная точка для доменного имени – мне понадобилась JS-библиотечка для паттерн-матчинга. Желательно, с близким к Эрлангу синтаксисом.
Ну то-есть разбирать запрос и перенаправлять его куда надо, меняя ключи там, проверяя авторизацию и прочее и прочее.
Библиотечка такая нашлась, но она оказалась “одноуровневая”. Я её маленько допилил, чтобы поддерживался рекурсивный синтаксис, как на картинке.
Выложил как гист, под гистом коммент с инструкцией. Кому надо – забирайте.
Ещё немножко о секретном проекте, скриншот справа как раз его кусочек.
У нас там впервые в полный рост offline-first, то-есть все веб приложения для авторизованных юзеров нормально работают без интернет-подключения.
Делаем всё для таких мест, где с покрытием и качеством сети всё хреново, поэтому вот так. По-хорошему, это всё CloudWall.
Забавно, что как раз именно такой подход и позволил использовать небыстрый внутренний Spidermonkey в CouchDB, а не шустрый node.js. Дело в том, что мы все вообще тяжёлые map/reduce queries и весь вообще рендер UI выполняем на клиенте.
То-есть мы и на сервере map/reduce можем исполнять – клиент использует тот же код – но паразитировать на вычислительных мощностях клиента и быстрее, и offline-ready, и сервер можно относительно слабый.
По сути, задача сервера – поддерживать на клиентах релевантный датасет и отдавать стартовый код приложений. Ну и, конечно, чувствительные данные живут только на сервере.
Ну понятно, что интерфейсы дикой красоты, responsiveness просто вау, на ойпадах летает ну и всё такое.
---
В процессе написания поста выяснил, что у меня в WinXP висит незакрытая Цивилизация. Интересно, сколько она там так втихую сидела в почти всегда спящей виртуальной машине – полгода? Год? Забытый мир, да ))