June 2017

S M T W T F S
    123
45678910
11121314151617
18192021222324
25 2627282930 

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Sunday, April 9th, 2017 01:22 am
Если вы написали свой фреймворк, добавьте $300 к зарплатным ожиданиям. Если вы его выкинули на помойку, добавьте ещё $300. (совет с ЛОРа)

Некоторое время назад я запилил собственный горе-фреймворк на Перле. Запилил, исходя из ощущений вроде "закат солнца вручную" или "прибито гвоздями" и глядя одним глазом на Catalyst и Dancer. Судя по тому, что получилось сразу похоже на Mojolicious, которого я *не* видел, сделал неплохо.

Суть такова:

1. Приложение разбивается на хэндлеры - анонимные функции, зависящие от пути. Ну это вроде как везде сейчас так.

2. Хэндлер получает на вход объект запроса, в котором есть всё, что нужно (параметры, сессии, заголовки...). Куки и параметры нельзя получить без валидации регекспом - политика партии!

3. Хэндлер возвращает хеш с параметрами для рендеринга или умирает (die 404; - легитимный способ показать Not found). Управляющие ключи начинаются с минуса (-view - выбор view, -type - Content-Type, -continue => sub { ... } - продолжить обработку запроса после отдачи заголовков и т.д.).

4. Дальше рендеринг, генерация заголовков, отдача контента, гипс снимают, клиент уезжает. Всё.

(Замечание. У нас, таким образом, контроллер и вью - это квази-чистые функции, т.е. все побочные эффекты остаются на совести пользователя, а самому фреймворку интересно только то, что туда передали, и что оттуда вернулось. И - изоляция. )

Из коробки умеет:
* Работать as is из-под PSGI, mod_perl 2 и просто как CGI-файл;
* Template::Toolkit и JSON (в т.ч. JSONp с бэкдорами коллбэками);
* сессии (спасибо пропинавшему меня [personal profile] akuklev);
* отдачу статики (aka neaf static '/images' => '/var/www/img';);
* гибкую систему хуков - можно вклиниться в любой этап процесса, неоднократно и по-разному для разных путей и запросов;
* валидацию форм с возможностью повторной отправки (типа "незаполненные обязательные поля обвести красненьким");
* отладку из командной строки, ака perl ваше_приложение /foo/bar --method POST --upload file.jpg
* отладку при помощи метода run_test - т.е. можно, если очень охота, писать юнит-тесты на само приложение.


И, собственно, у меня назрел вопрос. Где взять людей, которых такая штука может заинтересовать? Не спамить же на perlmonks про каждую версию...
Tags:
Saturday, April 8th, 2017 11:10 pm (UTC)
Как известно, “не бойтесь, что у вас украдут идею — если придумаете что-то оригинальное, вам потом это потенциальным клиентам ещё в горло заталкивать придётся”.