Search
Write a publication
Pull to refresh

Comments 7

Спасибо!

И хотя я в веб-программировании ничего не понимаю, было бы любопытно посмотреть на исходники этого проекта. Ну хотя бы на самые интересные, по-вашему мнению, места. Кроме того, всегда интересна архитектура приложения. Это возможно?
Конечно, внутри поста расставлены ссылки на исходник.

Вот ссылка на весь проект на Patch-tag'e.

Не знаю какие места можно назвать интересными, проект написан на достаточно простом подмножестве хаскеля.
Действительно. %) Ссылки-то я и не заметил.
Архитектура простая, как всегда хорошо описывается модулем Types.

Запускается happstack сервер, первый обработчик это функция authorize в стеке монад ServerPartT (состояние, в котором хранится запрос и другие служебные данные хаппстека), ErrorT String.

В любой момент, если встретится ошибка, работа обработчика прерывается и клиенту показывают текст ошибки.

Если авторизация прошла успешно, в стек монад добавляется ещё одно состояние с Id сессии, распарсенным конфигом приложения и IORef ссылкой на данные сессии.

После этого обработчика переходит к функции Main.control, которая маршрутизирует дальнейшую обработку исходя из url.

Ну и вокруг всего этого навешана выдача статических файлов, откат изменений файрволла, которые блокируют доступ к веб-интерфейсу и т.п.

Форма редактирования правил и обработка параметров это отдельная история. Вот тут сильно не хватает SYB, который я пока не раскурил.
За статью спасибо. Скажите, а описанное вами действительно упрощает жизнь по сравнению с каким-нибудь упаковыванием в zip-архив бинарника и каталога static?
В линуксах, особенно запакетированных приложениях, принято рассовывать static по всяким /usr/share и т.п.

Упрощает жизнь не сильно, это явно не киллер фича. Но зато и делается очень просто.
Отлично. Надо будет так же у себя делать. И насчет того, что фича маловажная и вообще не сильно облегчает, так я не согласен, по моему, как раз наоборот, очень полезно.
Sign up to leave a comment.

Articles