[Kiev-pm] MVC::Neaf: Not Even A Framework

Konstantin S. Uvarin khedin at gmail.com
Tue Dec 6 05:59:48 PST 2016


Приветствую!

1. X-Accel-Redirect (это для nginx проксирующего, и поддержку других прокси
веб серверов), т.к. сказать унифицировать

Спасибо. попробую сделать.

2. empty_gif -> _.gif

Это в смысле, по определённому адресу показывать один отдельно взятый файл?
Если да, то оно уже умеет (favicon.ico так делал). Просто в документации
мутно сказано, надо будет прояснить.


2016-12-02 17:38 GMT+02:00 Alex Varyanick <q at cono.org.ua>:

> в сторону статики ++идеи:
> 1. X-Accel-Redirect (это для nginx проксирующего, и поддержку других
> прокси веб серверов), т.к. сказать унифицировать
> 2. empty_gif -> _.gif
>
> 2016-12-02 17:23 GMT+02:00 Konstantin Cherednichenko <
> dshadowukraine at gmail.com>:
>
>> Пример: Mojolicious::Plugin::OpenAPI
>>
>> Или уже готовая реализация Raisin
>>
>> Все смотреть на metacpan...
>>
>> On Dec 2, 2016 16:54, "Konstantin S. Uvarin" <khedin at gmail.com> wrote:
>>
>>> Приветствую.
>>>
>>> Как какой? Не догоню, так согреюсь! Там полдюжины ссылок на prior work,
>>> и это я ещё забыл Catalyst и PSGI, на которые тоже смотрел в процессе.
>>>
>>> А вот про OpenAPI хотелось бы подробнее, пока что нагуглил вот что:
>>>
>>> https://metacpan.org/pod/OpenAPI - какая-то ещё не написанная
>>> спецификация в версии 0.001
>>> https://vk.com/dev/openapi - API вконтакта.
>>>
>>> А Вы что имели в виду?
>>>
>>> С уважением,
>>>
>>>
>>> 2016-12-02 16:45 GMT+02:00 Konstantin Cherednichenko <
>>> dshadowukraine at gmail.com>:
>>>
>>>> IMHO Лучше смотреть в сторону OpenAPI... Какой смысл изобретать
>>>> велосипед с роутами и валидацией данных?
>>>>
>>>> On Dec 2, 2016 16:40, "Konstantin S. Uvarin" <khedin at gmail.com> wrote:
>>>>
>>>>> Приветствую всех!
>>>>>
>>>>> Сегодня я бы хотел представить веб-фреймворк на перл 5 собственного
>>>>> сочинения, Ниф (Not Even A Framework). Написан он больше для
>>>>> самообразования, т.к. и так их как собак нерезаных, но мне кажется, в нём
>>>>> есть некие здравые идеи. Суть такова:
>>>>>
>>>>> 1. Приложение разбивается на маленькие процедуры-хэндлеры, привязанные
>>>>> к пути в URI (см. тж. https://metacpan.org/pod/Dancer )
>>>>>
>>>>> 2. Хэндлер получает на вход объект запроса, из которого потом
>>>>> достаются параметры, куки, заголовки и т.д. (см. тж.
>>>>> https://metacpan.org/pod/Kelp )
>>>>>
>>>>> 3. Параметры и куки нельзя достать без валидации, например, при помощи
>>>>> регулярного выражения:
>>>>>
>>>>>   $req->param( foo => qr/\d+/ );
>>>>>
>>>>> См. тж. perl -T
>>>>>
>>>>> В качестве альтернативы есть самовалидирующиеся формы на базе
>>>>> Validator::LIVR или самописного каличного движка (но ЛИВР лучше).
>>>>>
>>>>> См. тж. https://metacpan.org/pod/Validator::LIVR и
>>>>> https://metacpan.org/pod/Data::CGIForm
>>>>>
>>>>> 4. Хэндлер может вернуть ссылку на хэш с какими угодно параметрами,
>>>>> которая затем передаётся в шаблонизатор для рендеринга. На данный момент
>>>>> поддерживается Template::Toolkit и JSON/JSONP
>>>>>
>>>>> Также есть ограниченный набор ключей с минусом, которые используются
>>>>> для управления самим фреймворком - -template, -status и т.п
>>>>>
>>>>> 5. Хэндлер может выбросить исключение: die 404 - легальный способ
>>>>> вернуть настраиваемую страницу not found. Все нормальные исключения (не
>>>>> трёхцифренные и не специальные объекты самого Neaf) трактуются как error
>>>>> 500.
>>>>>
>>>>> 6. Один и тот же код может в неизменном виде запускаться как cgi, psgi
>>>>> и под Apache2 + mod_perl (с некоторым бубном). Также поддерживается дебаг
>>>>> из командной строки:
>>>>>
>>>>>    perl myapp.pl --help
>>>>>    perl myapp.pl --list
>>>>>
>>>>> 7. Кроме этого есть поддержка статических страниц (не надо держать
>>>>> отдельно нормальный веб-сервер, чтобы проверить CSS или логотип), сессий в
>>>>> несколько недоделанном виде (планируется улучшение), отложенные действия,
>>>>> выполняемые после запроса, ну и по мелочи ещё.
>>>>>
>>>>> Пример кода:
>>>>>
>>>>>     use strict;
>>>>>     use warnings;
>>>>>     use MVC::Neaf;
>>>>>
>>>>>     MVC::Neaf->route( "/" => sub {
>>>>>         my $req = shift;
>>>>>
>>>>>         return {
>>>>>             -template => \'Hello, [% name %]!',
>>>>>             -type     => 'text/plain',
>>>>>             name      => $req->param( name => qr/\w+/, "Stranger" ),
>>>>>         },
>>>>>     });
>>>>>
>>>>> На каждую фичу есть небольшой пример, они же используются как
>>>>> дополнительные смоук-тесты к 80% покрытию юнит-тестами. см.
>>>>> https://github.com/dallaylaen/perl-mvc-neaf/tree/master/example
>>>>>
>>>>> Собственно фреймворк:
>>>>>
>>>>> https://metacpan.org/pod/MVC::Neaf
>>>>>
>>>>> Буду рад обратной связи, критике, багрепортам и запросам новых фич
>>>>> (см. тж. https://github.com/dallaylaen/perl-mvc-neaf/blob/master/TODO
>>>>> )
>>>>>
>>>>> С уважением,
>>>>>
>>>>> --
>>>>> Konstantin S. Uvarin
>>>>> jabber: see <from>
>>>>> skype: kuvarin
>>>>> http://github.com/dallaylaen
>>>>>
>>>>> _______________________________________________
>>>>> Kiev-pm mailing list
>>>>> Kiev-pm at pm.org
>>>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Kiev-pm mailing list
>>>> Kiev-pm at pm.org
>>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>>
>>>>
>>>
>>>
>>> --
>>> Konstantin S. Uvarin
>>> jabber: see <from>
>>> skype: kuvarin
>>> http://github.com/dallaylaen
>>>
>>> _______________________________________________
>>> Kiev-pm mailing list
>>> Kiev-pm at pm.org
>>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>>
>>>
>> _______________________________________________
>> Kiev-pm mailing list
>> Kiev-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/kiev-pm
>>
>>
>
>
> --
> Varyanick I. Alex
> skype: cono..
> q at cono.org.ua
>
> _______________________________________________
> Kiev-pm mailing list
> Kiev-pm at pm.org
> http://mail.pm.org/mailman/listinfo/kiev-pm
>
>


-- 
Konstantin S. Uvarin
jabber: see <from>
skype: kuvarin
http://github.com/dallaylaen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161206/5a18a7ef/attachment-0001.html>


More information about the Kiev-pm mailing list