Comments 7
Спасибо!
И хотя я в веб-программировании ничего не понимаю, было бы любопытно посмотреть на исходники этого проекта. Ну хотя бы на самые интересные, по-вашему мнению, места. Кроме того, всегда интересна архитектура приложения. Это возможно?
И хотя я в веб-программировании ничего не понимаю, было бы любопытно посмотреть на исходники этого проекта. Ну хотя бы на самые интересные, по-вашему мнению, места. Кроме того, всегда интересна архитектура приложения. Это возможно?
Конечно, внутри поста расставлены ссылки на исходник.
Вот ссылка на весь проект на Patch-tag'e.
Не знаю какие места можно назвать интересными, проект написан на достаточно простом подмножестве хаскеля.
Вот ссылка на весь проект на Patch-tag'e.
Не знаю какие места можно назвать интересными, проект написан на достаточно простом подмножестве хаскеля.
Архитектура простая, как всегда хорошо описывается модулем Types.
Запускается happstack сервер, первый обработчик это функция authorize в стеке монад ServerPartT (состояние, в котором хранится запрос и другие служебные данные хаппстека), ErrorT String.
В любой момент, если встретится ошибка, работа обработчика прерывается и клиенту показывают текст ошибки.
Если авторизация прошла успешно, в стек монад добавляется ещё одно состояние с Id сессии, распарсенным конфигом приложения и IORef ссылкой на данные сессии.
После этого обработчика переходит к функции Main.control, которая маршрутизирует дальнейшую обработку исходя из url.
Ну и вокруг всего этого навешана выдача статических файлов, откат изменений файрволла, которые блокируют доступ к веб-интерфейсу и т.п.
Форма редактирования правил и обработка параметров это отдельная история. Вот тут сильно не хватает SYB, который я пока не раскурил.
Запускается happstack сервер, первый обработчик это функция authorize в стеке монад ServerPartT (состояние, в котором хранится запрос и другие служебные данные хаппстека), ErrorT String.
В любой момент, если встретится ошибка, работа обработчика прерывается и клиенту показывают текст ошибки.
Если авторизация прошла успешно, в стек монад добавляется ещё одно состояние с Id сессии, распарсенным конфигом приложения и IORef ссылкой на данные сессии.
После этого обработчика переходит к функции Main.control, которая маршрутизирует дальнейшую обработку исходя из url.
Ну и вокруг всего этого навешана выдача статических файлов, откат изменений файрволла, которые блокируют доступ к веб-интерфейсу и т.п.
Форма редактирования правил и обработка параметров это отдельная история. Вот тут сильно не хватает SYB, который я пока не раскурил.
За статью спасибо. Скажите, а описанное вами действительно упрощает жизнь по сравнению с каким-нибудь упаковыванием в zip-архив бинарника и каталога static?
Отлично. Надо будет так же у себя делать. И насчет того, что фича маловажная и вообще не сильно облегчает, так я не согласен, по моему, как раз наоборот, очень полезно.
Sign up to leave a comment.
JQuery-UI внутри бинарника