<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Blog.Perl5doc.ru</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/" />
    <link rel="self" type="application/atom+xml" href="http://blog.perl5doc.ru/atom.xml" />
    <id>tag:blog.perl5doc.ru,2010-02-18://1</id>
    <updated></updated>
    <subtitle>Заметки, связанные с переводом документации Perl</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.01</generator>

<entry>
    <title>Документация PSGI - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2011/09/psgi-specification.html" />
    <id>tag:blog.perl5doc.ru,2011:/cpan_modules//5.50</id>

    <published>2011-09-29T18:02:03Z</published>
    <updated>2011-09-29T19:02:46Z</updated>

    <summary><![CDATA[PSGI - Веб-серверный Шлюзовый Интерфейс для Perl (анг.&nbsp;Perl Web Server Gateway Interface Specification).&nbsp;Интерфейс PSGI содействующий:переносимости веб-приложенийсокращению дублирования усилий разработчиков веб-фреймворков.отделению среды веб-сервера от кода веб-фреймворкаСпецификация&nbsp;PSGI определяет стандартный интерфейс между веб-серверами и веб-приложениями или фреймворками на Perl. PSGI не является программным...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="PSGI / Plack" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">PSGI - Веб-серверный Шлюзовый Интерфейс для Perl (анг.&nbsp;<meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: helvetica, arial, freesans, clean, sans-serif; line-height: 20px; border-collapse: separate; color: rgb(0, 0, 0); ">Perl Web Server Gateway Interface Specification)</span>.&nbsp;</span><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div style="border-collapse: separate; color: rgb(51, 51, 51); font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: normal; "><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; border-collapse: separate; line-height: normal; "><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">Интерфейс PSGI содействующий:</span></span></span></div><div><ul><li><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8">переносимости веб-приложений</span></font></li><li><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8">сокращению дублирования усилий разработчиков веб-фреймворков.</span></font></li><li><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; border-collapse: separate; line-height: normal; "><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; border-collapse: separate; line-height: normal; "><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">о</span></span></span><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">тделению среды веб-сервера от кода веб-фреймворка</span></span></span></font></li></ul></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; border-collapse: separate; line-height: normal; "><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">Спецификация&nbsp;PSGI определяет стандартный интерфейс между веб-серверами и веб-приложениями или фреймворками на Perl. </span></span></span><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">PSGI не является программным интерфейсом (API) для веб-приложений. Разработчики веб-приложений (конечные пользователи) не будут запускать свои веб-приложения, используя PSGI напрямую - вместо этого предполагается использование фреймворков, поддерживающих PSGI.</span></div></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;">Что почитать о PSGI на русском языке:</span></font></div><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="line-height: normal; "><a class="noexternalLink" href="http://perl5doc.ru/cpan/PSGI" style="color: rgb(34, 116, 168); text-decoration: none; padding-left: 20px; ">PSGI</a>&nbsp;-&nbsp;</span></span></font><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; ">Спецификация Веб-серверного Шлюзового Интерфейса для Perl</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="line-height: normal; "><a class="noexternalLink" href="http://perl5doc.ru/cpan/PSGI::Extensions" style="color: rgb(34, 116, 168); text-decoration: none; padding-left: 20px; ">PSGI::Extensions</a>&nbsp;-&nbsp;</span></span></font><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; ">Расширения PSGI</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="line-height: normal; "><a class="noexternalLink" href="http://perl5doc.ru/cpan/PSGI::FAQ" style="color: rgb(51, 102, 153); text-decoration: underline; padding-left: 20px; ">PSGI::FAQ</a>&nbsp;-&nbsp;</span></span></font><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; ">Часто задаваемые вопросы и ответы</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">Объявляю благодарность за перевод вышеуказанной документации следующим лицам:</span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="line-height: normal; "><ul style="list-style-type: none; list-style-position: initial; list-style-image: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><li style="margin-top: 3px; margin-right: 3px; margin-left: 1.5em; margin-bottom: 0px; list-style-type: square; list-style-position: initial; list-style-image: initial; "><a href="http://github.com/ichesnokov" style="color: rgb(34, 116, 168); text-decoration: none; ">Илья Чесноков</a></li><li style="margin-top: 3px; margin-right: 3px; margin-left: 1.5em; margin-bottom: 0px; list-style-type: square; list-style-position: initial; list-style-image: initial; "><a href="http://github.com/alpha6" style="color: rgb(34, 116, 168); text-decoration: none; ">Денис Федосеев</a></li><li style="margin-top: 3px; margin-right: 3px; margin-left: 1.5em; margin-bottom: 0px; list-style-type: square; list-style-position: initial; list-style-image: initial; "><a href="https://github.com/alien" style="color: rgb(34, 116, 168); text-decoration: none; ">Олег Алистратов</a></li><li style="margin-top: 3px; margin-right: 3px; margin-left: 1.5em; margin-bottom: 0px; list-style-type: square; list-style-position: initial; list-style-image: initial; "><a href="http://github.com/avoronov" style="color: rgb(34, 116, 168); text-decoration: none; ">Александр Воронов</a></li><li style="margin-top: 3px; margin-right: 3px; margin-left: 1.5em; margin-bottom: 0px; list-style-type: square; list-style-position: initial; list-style-image: initial; "><a href="http://github.com/vti" style="color: rgb(34, 116, 168); text-decoration: none; ">Вячеслав Тихановский</a></li></ul></span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; color: rgb(0, 0, 0); ">Кстати, Вячеслав прочитает доклад, посвящённый PSGI/Plack, на воркшопе</span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; color: rgb(0, 0, 0); line-height: normal; ">Black Perl 1-го октября в Крыму:&nbsp;<a href="http://black-perl.org/bp2011/" target="_blank" style="color: rgb(17, 65, 112); ">http://black-perl.org/bp2011/</a></span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">Ссылки:</span></div><div><ul><li><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;">&nbsp;Репозиторий документации PSGI на русском языке:&nbsp;</span></font><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; color: rgb(0, 0, 0); "><a href="https://github.com/vti/psgi-specs-ru" target="_blank" style="color: rgb(17, 65, 112); ">https://github.com/vti/psgi-<wbr>specs-ru</a></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">&nbsp;Репозиторий на английском :&nbsp;</span><a href="https://github.com/miyagawa/psgi-specs/blob/master/PSGI.pod" style="text-decoration: underline; ">https://github.com/miyagawa/psgi-specs/blob/master/PSGI.pod</a></li><li><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;">&nbsp;Сайт посвященный PSGI/Plack:&nbsp;</span></font><span class="Apple-style-span" style="font-family: sans-serif; line-height: 19px; color: rgb(0, 0, 0); "><a href="http://plackperl.org/" class="external text" rel="nofollow" style="text-decoration: underline; color: rgb(51, 102, 187); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; background-repeat: no-repeat no-repeat; ">Plack and PSGI, various links to servers and frameworks</a></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">&nbsp;Страничка в википедии на английском:&nbsp;<a href="http://en.wikipedia.org/wiki/PSGI">http://en.wikipedia.org/wiki/PSGI</a></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; ">&nbsp;Статья на хабре:&nbsp;</span><a href="http://habrahabr.ru/blogs/perl/78377/">http://habrahabr.ru/blogs/perl/78377/</a></li></ul></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(30, 30, 30); font-family: verdana, sans-serif; line-height: 16px; "><br /></span></div><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><br /></span></font></div><div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div>]]>
        
    </content>
</entry>

<entry>
    <title>Функция binmode -- семантика ввода-вывода - Стандартные функции Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/perlfunc/2011/05/function-binmode.html" />
    <id>tag:blog.perl5doc.ru,2011:/perlfunc//10.49</id>

    <published>2011-05-15T19:59:35Z</published>
    <updated>2011-05-15T21:00:06Z</updated>

    <summary><![CDATA[ binmode FILEHANDLE Perl 5.14.0 &gt;Функции &gt;binmode() Устанавливает дескриптор FILEHANDLE для чтения или записи в "бинарный" или "текстовый" режимы в системах, библиотеки времени исполнения которых различают текстовые и двоичные данные. Если FILEHANDLE представляет собой выражение, то его значение принимается за...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Ввод и вывод" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/perlfunc/">
        <![CDATA[<div style="padding-bottom: 10px">
 <a name="binmode_FILEHANDLE"></a><b>binmode FILEHANDLE</b>
    <div style="float: right;">  
    <a href="http://perl5doc.ru/5.14.0/">Perl 5.14.0</a>
        <span style="font-size: 90%; color: gray;">&gt;</span><a href="http://perl5doc.ru/5.14.0/index-cat_functions">Функции</a>
        <span style="font-size: 90%; color: gray;">&gt;</span><a href="http://perl5doc.ru/5.14.0/f-binmode">binmode()</a> 
    </div> 
</div>
<p>Устанавливает дескриптор FILEHANDLE для чтения или записи в "бинарный"
или "текстовый" режимы в системах,  библиотеки времени исполнения которых
различают текстовые и двоичные данные. Если FILEHANDLE представляет
собой выражение, то его значение принимается за имя дескриптора файла.
Функция возвращает значение "истина" в случае успеха, в противном случае
возвращает <code class="inline"><span class="k">undef</span></code>, а переменной <code class="inline"><span class="i">$!</span></code> присваивается сообщение об ошибке.</p>
<p>В некоторых системах (обычно это системы DOS и Windows)
необходимо использовать binmode(), когда вы работаете не с текстовым файлом.
В целях портативности будет хорошей практикой всегда использовать ее при необходимости,
и никогда не использовать там, где она не подходит. Кроме того, люди
могут устанавливать свои режимы ввода-вывода по умолчанию для UTF-8 закодированных
данных, а не байтов.</p>
<p>Другими словами, независимо от платформы, используйте binmode() над бинарными 
данными, например такими, как изображения.</p>
<p>Если указан уровень LAYER, он является одной строкой, но может содержать 
несколько директив. Директивы изменяют поведение дескриптора.
Когда LAYER указан, использование binmode над текстовым файлом
имеет смысл.</p>
<p>Если LAYER опущен или указан как <code class="inline"><span class="j">:</span><span class="w">raw</span></code>,то дескриптор файла становится
пригодным для передачи бинарных данных. Это включает в себя отключение
возможных переводов CRLF и маркировки его как байт (в отличие от символов Юникода).
Отметим, что несмотря на то, что может подразумеваться в <i>"Программирование на Perl"</i>
(Камел, 3-е издание) или где-либо еще, <code class="inline"><span class="j">:</span><span class="w">raw</span></code> <i>не</i> просто обратна <code class="inline"><span class="j">:</span><span class="w">crlf</span></code>.
Другие уровни, которые могут повлиять на бинарный характер потока <i>также</i> отключены.
См. <a href="http://perl5doc.ru/PerlIO">PerlIO</a>, <a href="http://perl5doc.ru/perlrun">perlrun</a> и обсуждение переменной среды PERLIO.</p>
<p>Директивы <code class="inline"><span class="j">:</span><span class="w">bytes</span></code>, <code class="inline"><span class="j">:</span><span class="w">crlf</span></code>, <code class="inline"><span class="j">:</span><span class="w">utf8</span></code> и любые другие директивы в форме
<code class="inline"><span class="j">:</span>...</code> называются <i>уровнями</i>(layers) ввода-вывода. Для установки
уровней ввода-вывода по умолчанию можно использовать прагму <code class="inline"><span class="k">open</span></code>. 
См. <a href="http://perl5doc.ru/open">open</a>.</p>
<p><i>Параметр LAYER функции binmode() описывается как "Дисциплина" в книге "Программирование 
на Perl, 3-го издания. Однако, с тех пор консенсус именования данной функциональности
сместился с "дисциплина" на "уровень". По этой причине в документации текущей версии 
Perl мы используем понятие "уровни", а не "дисциплины". </i></p>
<p>Чтобы отметить FILEHANDLE как UTF-8, используйте <code class="inline"><span class="j">:</span><span class="w">utf8</span></code>  или <code class="inline"><span class="j">:</span><span class="i">encoding</span><span class="s">(</span><span class="w">utf8</span><span class="s">)</span></code>.
<code class="inline"><span class="j">:</span><span class="w">utf8</span></code> только помечает данные как UTF-8 без дополнительной проверки,
в то время как <code class="inline"><span class="j">:</span><span class="i">encoding</span><span class="s">(</span><span class="w">utf8</span><span class="s">)</span></code> проверяет данные на фактическую валидность
UTF-8. Подробности можно найти в <a href="http://perl5doc.ru/PerlIO::encoding">PerlIO::encoding</a>.</p>
<p>В общем, binmode() должен вызываться после open(), но до операций ввода-вывода
над дескриптором файла. Вызов binmode() обычно сбрасывает любые ожидающие
буферизованные данные вывода (и, возможно, ожидающие данные ввода) 
дескриптора. Исключением является уровень <code class="inline"><span class="j">:</span><span class="w">encoding</span></code>, который изменяет
для дескриптора кодировку по умолчанию, см <a href="#open">"open"</a>. Уровень <code class="inline"><span class="j">:</span><span class="w">encoding</span></code>
иногда необходимо вызывать в середине потока и это не сбрасывает поток.
<code class="inline"><span class="j">:</span><span class="w">encoding</span></code> также неявно задействует уровень <code class="inline"><span class="j">:</span><span class="w">utf8</span></code>,
поскольку внутренне Perl оперирует над utf-8 кодированными символами.</p>
<p>Операционная система, драйверы устройств, библиотеки C и система времени
исполнения Perl  работают вместе, чтобы дать возможность программисту использовать
один символ (<code class="inline">\<span class="w">n</span></code>) как конец строки, независимо от внешнего представления.
На многих операционных системах, простой текстовый файл соответствует 
внутреннему представлению, но на некоторых платформах
внешнее представление <code class="inline">\<span class="w">n</span></code> состоит из более, чем одного символа.</p>
<p>Mac OS, все вариации Unix и файлы Stream_LF в VMS используют один 
символ конца каждой строки во внешнем представлении текста (даже, если
это один символ возврата каретки в Mac OS и перевода строки в Unix
и в большинстве VMS файлов). В других системах, подобных OS/2, Dos и 
в различных разновидностях MS-Windows, ваша программа видит <code class="inline">\<span class="w">n</span></code> как 
один символ <code class="inline">\<span class="w">cJ</span></code>, но что хранится в текстовых файлах является двумя символами 
<code class="inline">\<span class="w">cM</span>\<span class="w">cJ</span></code>. Это означает, что, если вы не используете binmode() в этих
системах, последовательности <code class="inline">\<span class="w">cM</span>\<span class="w">cJ</span></code> на диске будут преобразованы в <code class="inline">\<span class="w">n</span></code> 
на вводе и любые <code class="inline">\<span class="w">n</span></code> вашей программы будут преобразованы обратно в <code class="inline">\<span class="w">cM</span>\<span class="w">cJ</span></code>
на выводе. Это то что нужно для текстовых файлов, но это может быть
катастрофическим для двоичных файлов.</p>
<p>Другим следствием использования binmode() (на некоторых системах) является то,
что специальные маркеры конца файла будут рассматриваться как часть
потока данных. Для систем из семейства Microsoft это означает, что, если
бинарные данные содержат <code class="inline">\<span class="w">cZ</span></code> и вы не используете binmode(), то подсистема 
ввода-вывода эту последовательность принимает за конец файла.</p>
<p>binmode() имеет важное значение не только для операций readline() и 
print(), но так же при использовании read(), seak(), sysread(), syswrite()
и tell() (см. <a href="http://perl5doc.ru/perlport">perlport</a>  для более подробной информации). См.
переменные <code class="inline"><span class="i">$/</span></code> и <code class="inline"><span class="i">$\</span></code> в <a href="http://perl5doc.ru/perlvar">perlvar</a> о том, как вручную установить
последовательности завершения строки для ввода и вывода.</p>
]]>
        
    </content>
</entry>

<entry>
    <title>perlfunc / alarm -- выход по таймауту - Стандартные функции Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/perlfunc/2011/03/perlfunc-alarm.html" />
    <id>tag:blog.perl5doc.ru,2011:/perlfunc//10.48</id>

    <published>2011-03-23T19:13:36Z</published>
    <updated>2011-03-23T20:05:06Z</updated>

    <summary> alarm SECONDS alarm Подготавливает сигнал SIGALRM, который будет передан текущему процессу по истечении указанного количества секунд. Если SECONDS не указано, используется значение из $_. (на некоторых машинах, к сожалению, прошедшее время может быть меньше или больше указанного на одну...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Управление процессами" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/perlfunc/">
        <![CDATA[
<ul>
<li><a name="alarm_SECONDS"></a><b>alarm SECONDS
</b>
</li>
<li><a name="alarm"></a><b>alarm</b>
<p>Подготавливает сигнал SIGALRM, который будет передан текущему процессу 
по истечении указанного количества секунд. Если SECONDS не указано, 
используется значение из <code class="inline"><span class="i">$_</span></code>. (на некоторых машинах, к сожалению, 
прошедшее время может быть меньше или больше указанного на одну секунду, 
в зависимости от того, как считаются секунды. Из-за этого планировщик 
процессов может отложить доставку сигнала на некоторое время).</p>
<p>Одновременно может быть активен только один таймер. Каждое новое обращение
к функции отключает предыдущий таймер, таким образом, значение <code class="inline"><span class="w">SECONDS</span></code>,
равное <code class="inline"><span class="n">0</span></code>, может использоваться для отключения предыдущего таймера без
запуска нового. Возвращаемое значение представляет остаток времени
предыдущего таймера.</p>
<p>Чтобы задать время подачи сигналов с большей точностью, чем одна секунда,
можно применить функцию <code class="inline"><span class="i">ualarm</span><span class="s">(</span><span class="s">)</span></code>, которую предоставляет модуль <a href="http://perl5doc.ru/en/Time::HiRes">Time::HiRes</a>
(можно найти на CPAN, начиная с Perl 5.8 является частью дистрибутива).
Также можно использовать 4х-аргументную версию <code class="inline"><span class="k">select</span><span class="s">(</span><span class="s">)</span></code>, оставляя первые
три аргумента неопределенными. Еще один вариант задать миллисекунды
предоставляет интерфейс <code class="inline"><span class="k">syscall</span></code> для обращения к setitimer(2), 
если система поддерживает его. См. <a href="http://perl5doc.ru/en/perlfaq8">perlfaq8</a> подробнее.</p>
<p>Обычно смешивание вызовов <code class="inline"><span class="k">alarm</span></code> и <code class="inline"><span class="k">sleep</span></code> является ошибкой, потому что 
в вашей системе функция <code class="inline"><span class="k">sleep</span></code> может быть внутренне реализована 
с использованием механизма системного вызова alarm(2).</p>
<p>Если вы планируете использовать <code class="inline"><span class="k">alarm</span></code> для формирования тайм-аута системного
вызова, необходимо использовать пару <code class="inline"><span class="k">eval</span></code>/<code class="inline"><span class="k">die</span></code>. Не стоит полагаться на то, 
что, в случае, если системный вызов не отработает должным образом, 
переменная <code class="inline"><span class="i">$!</span></code> будет содержать значение <code class="inline"><span class="w">EINTR</span></code>, поскольку на некоторых
операционных системах, Perl устанавливает обработчики сигналов таким образом,
чтобы они перезапускали системные вызовы. А вот связка <code class="inline"><span class="k">eval</span></code>/<code class="inline"><span class="k">die</span></code> работает
всегда, возможные сложности описаны в <a href="http://perl5doc.ru/en/perlipc">perlipc</a>.</p>
<pre>    <a class="l_k" href="http://perl5doc.ru/en/f-eval"><span class="k">eval</span></a> <span class="s">{</span>
        <a class="l_k" href="http://perl5doc.ru/en/f-local"><span class="k">local</span></a> <span class="i">$SIG</span>{<span class="w">ALRM</span>} = <a class="l_k" href="http://perl5doc.ru/en/f-sub"><span class="k">sub</span></a> <span class="s">{</span> <a class="l_k" href="http://perl5doc.ru/en/f-die"><span class="k">die</span></a> <span class="q">"alarm\n"</span> <span class="s">}</span><span class="sc">;</span> <span class="c"># NB: \n обязателен</span>
        <a class="l_k" href="http://perl5doc.ru/en/f-alarm"><span class="k">alarm</span></a> <span class="i">$timeout</span><span class="sc">;</span>
        <span class="i">$nread</span> = <a class="l_k" href="http://perl5doc.ru/en/f-sysread"><span class="k">sysread</span></a> <span class="w">SOCKET</span><span class="cm">,</span> <span class="i">$buffer</span><span class="cm">,</span> <span class="i">$size</span><span class="sc">;</span>
        <a class="l_k" href="http://perl5doc.ru/en/f-alarm"><span class="k">alarm</span></a> <span class="n">0</span><span class="sc">;</span>
    <span class="s">}</span><span class="sc">;</span>
    
    <span class="c"># если вышли по тайм-ауту $timeout</span>
    <span class="k">if</span> <span class="s">(</span><span class="i">$@</span><span class="s">)</span> <span class="s">{</span>
        <a class="l_k" href="http://perl5doc.ru/en/f-die"><span class="k">die</span></a> <span class="k">unless</span> <span class="i">$@</span> <span class="k">eq</span> <span class="q">"alarm\n"</span><span class="sc">;</span>   <span class="c"># обработка неожиданных ошибок</span>
    <span class="s">}</span>
    <span class="c"># все в порядке, сработали пределах установленного времени $timeout</span>
    <span class="k">else</span> <span class="s">{</span>
            <span class="c">#...</span>
    <span class="s">}</span>
</pre>

<p>За более подробной информацией обратитесь к <a href="http://perl5doc.ru/en/perlipc">perlipc</a>.</p>
</li>
</ul>

<hr>
<div style="margin-left: 10px;">
<small>
С небольшими изменениями взято отюда: <a href="http://translated.by/you/perlfunc/trans/?page=8">translated.by</a></small>
<br /><small>Прочие источники:
    <a href="http://valera.asf.ru/perl/help/">http://valera.asf.ru/perl/help/</a> <br />
   <a href="http://perl5doc.ru/en/f-alarm">http://perl5doc.ru/en/f-alarm</a>
</small>
</div>
]]>
        
    </content>
</entry>

<entry>
    <title>Микро веб-фреймворк Mojolicious::Lite - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2011/02/mojoliciouslite.html" />
    <id>tag:blog.perl5doc.ru,2011:/cpan_modules//5.47</id>

    <published>2011-02-25T21:49:13Z</published>
    <updated>2011-02-25T22:27:32Z</updated>

    <summary><![CDATA[ Perl 5.12.2 &gt;Модули CPAN &gt;Mojolicious-1.0 &gt; Mojolicious::Lite Mojolicious::Lite&nbsp;-- это микро веб-фреймворк, входящий в состав&nbsp;Mojolicious. КРАТКИЙ ОБЗОР # При загрузке Mojolicious::Lite активируются режимы "strict" и "warnings" use Mojolicious::Lite; # Маршрут с заполнителем get '/:foo' =&gt; sub { my $self =...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[
 <div id="breadcrumbs"> 
    <div class="float-left">  
    <a href="http://perl5doc.ru/5.12.2/">Perl 5.12.2</a>
        <span style="font-size: 90%; color: gray;">&gt;</span><a href="http://perl5doc.ru/cpan-index">Модули CPAN</a>
        <span style="font-size: 90%; color: gray;">&gt;</span><a href="http://perl5doc.ru/cpan/Mojolicious-1.0">Mojolicious-1.0</a>
      <span style="font-size: 90%; color: gray;">&gt;</span>
       Mojolicious::Lite 
    </div> 
</div> 
<div id="content"> 
    <div id="content_body">
<p><meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="http://perl5doc.ru/cpan/Mojolicious::Lite" style="text-decoration: underline; ">Mojolicious::Lite</a>&nbsp;-- это микро веб-фреймворк, входящий в состав&nbsp;<a href="http://perl5doc.ru/cpan/Mojolicious" style="text-decoration: underline; ">Mojolicious</a>.</p>
			<h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">
				<a href="#___top" style="text-decoration: inherit; color: inherit;"> КРАТКИЙ ОБЗОР</a>
			</h1>
<pre>    <span class="c"># При загрузке Mojolicious::Lite активируются режимы "strict" и "warnings"</span>
    <span class="k">use</span> <span class="w">Mojolicious::Lite</span><span class="sc">;</span>
     
    <span class="c"># Маршрут с заполнителем</span>
    <span class="w">get</span> <span class="q">'/:foo'</span> <span class="cm">=&gt;</span> <span class="k">sub</span> <span class="s">{</span>
        <span class="k">my</span> <span class="i">$self</span> = <span class="k">shift</span><span class="sc">;</span>
        <span class="k">my</span> <span class="i">$foo</span>  = <span class="i">$self</span><span class="i">-&gt;param</span><span class="s">(</span><span class="q">'foo'</span><span class="s">)</span><span class="sc">;</span>
        <span class="i">$self</span><span class="i">-&gt;render</span><span class="s">(</span><span class="w">text</span> <span class="cm">=&gt;</span> <span class="q">"Hello from $foo!"</span><span class="s">)</span><span class="sc">;</span>
    <span class="s">}</span><span class="sc">;</span>
     
    <span class="c"># Запуск системы команд Mojolicious</span>
    <span class="w">app</span><span class="w">-&gt;start</span><span class="sc">;</span>
</pre>


		<a name="DESCRIPTION"></a>
			<h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><span class="Apple-style-span" style="font-size: 20px; "><a href="#___top" style="text-decoration: inherit; color: inherit;">Hello World!</a></span></h1>

<p>Минимальное приложение типа "Hello World" выглядит примерно как приведено ниже, 
при загрузке <a href="http://perl5doc.ru/cpan/Mojolicious::Lite">Mojolicious::Lite</a> автоматически включается действие 
прагм <a href="http://search.cpan.org/perldoc/strict">strict</a> и <a href="http://search.cpan.org/perldoc/warnings">warnings</a>  и портируется 
несколько функций, превращая сценарий в полнофункциональное веб-приложение.</p>
<pre>    <span class="c">#!/usr/bin/env perl</span>
     
    <span class="k">use</span> <span class="w">Mojolicious::Lite</span><span class="sc">;</span>
     
    <span class="w">get</span> <span class="q">'/'</span> <span class="cm">=&gt;</span> <span class="k">sub</span> <span class="s">{</span> <span class="k">shift</span><span class="i">-&gt;render</span><span class="s">(</span><span class="w">text</span> <span class="cm">=&gt;</span> <span class="q">'Hello World!'</span><span class="s">)</span> <span class="s">}</span><span class="sc">;</span>
     
    <span class="w">app</span><span class="w">-&gt;start</span><span class="sc">;</span>
</pre>


		<a name="Generator"></a>
			





		<a name="Commands"></a>
			





		<a name="Start"></a>
			

<p>Вызов app-&gt;start, который запускает систему команд <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a>, может
быть настроен так, чтобы переопределить обычное использование @ARGV.</p>
<pre>    <span class="w">app</span><span class="w">-&gt;start</span><span class="s">(</span><span class="q">'cgi'</span><span class="s">)</span><span class="sc">;</span>
</pre>


		<a name="Reloading"></a>
			





		<a name="Routes"></a>
			<h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">
				<a href="#___top" style="text-decoration: inherit; color: inherit;"> Маршруты</a>
			</h2>

<p>Маршруты в основном просто изощренные пути, которые могут содержать различные
типы заполнителей.
$self является экземпляром <a href="http://perl5doc.ru/cpan/Mojolicious::Controller">Mojolicious::Controller</a>, содержащий 
HTTP запрос и ответ.</p>
<pre>    <span class="c"># /foo</span>
    <span class="w">get</span> <span class="q">'/foo'</span> <span class="cm">=&gt;</span> <span class="k">sub</span> <span class="s">{</span>
        <span class="k">my</span> <span class="i">$self</span> = <span class="k">shift</span><span class="sc">;</span>
        <span class="i">$self</span><span class="i">-&gt;render</span><span class="s">(</span><span class="w">text</span> <span class="cm">=&gt;</span> <span class="q">'Hello World!'</span><span class="s">)</span><span class="sc">;</span>
    <span class="s">}</span><span class="sc">;</span>
</pre>


		<a name="Stash"></a>
			





		<a name="Route-Names"></a>
			<h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">
				<a href="#___top" style="text-decoration: inherit; color: inherit;"> Имена маршрутов</a>
			</h2>

<p>У всех маршрутов могут быть ассоциированные с ними имена, это позволяет 
автоматически определять шаблоны и осуществлять обратную связь с url_for, link_to
и form_for.
Имена всегда являются последним аргументом, значение * значит, что имя
равно маршруту без символов, не являющихся частью слова.</p>
<pre>    <span class="c"># /</span>
    <span class="w">get</span> <span class="q">'/'</span> <span class="cm">=&gt;</span> <span class="q">'index'</span><span class="sc">;</span>
     
    <span class="c"># /hello</span>
    <span class="w">get</span> <span class="q">'/hello'</span> <span class="cm">=&gt;</span> <span class="q">'*'</span><span class="sc">;</span>
     
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: 20px; font-weight: bold; white-space: normal; "><a href="#___top" style="text-decoration: inherit; color: inherit;">Всего понемногу</a></span></pre>

<p>Все эти возможности можно легко использовать вместе.</p>
<pre>    <span class="c"># /everything/*?name=*</span>
    <span class="w">get</span> <span class="q">'/everything/:stuff'</span> <span class="cm">=&gt;</span> <span class="s">[</span><span class="w">stuff</span> <span class="cm">=&gt;</span> <span class="q">qr/\d+/</span><span class="s">]</span> <span class="cm">=&gt;</span> <span class="s">{</span><span class="w">stuff</span> <span class="cm">=&gt;</span> <span class="n">23</span><span class="s">}</span> <span class="cm">=&gt;</span> <span class="k">sub</span> <span class="s">{</span>
        <span class="k">shift</span><span class="i">-&gt;render</span><span class="s">(</span><span class="q">'welcome'</span><span class="s">)</span><span class="sc">;</span>
    <span class="s">}</span><span class="sc">;</span>
<br /></pre></div> 
</div>
 
]]>
        
    </content>
</entry>

<entry>
    <title>perlfunc / map - обработка списков - Стандартные функции Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/perlfunc/2011/01/perlfunc-map.html" />
    <id>tag:blog.perl5doc.ru,2011:/perlfunc//10.46</id>

    <published>2011-01-23T21:53:37Z</published>
    <updated>2011-01-23T22:27:07Z</updated>

    <summary> map BLOCK LIST map EXPR,LIST Вычисляет BLOCK или EXPR для каждого элемента списка LIST (локально устанавливая $_ равной каждому элементу) и возвращает список, объединяющий результаты всех таких вычислений. В скалярном контексте возвращает общее число сгенерированных элементов. Функция вычисляет BLOCK...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Обработка списков" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/perlfunc/">
        <![CDATA[
  <ul>
<li><a name="map_BLOCK_LIST"></a><b>map BLOCK LIST
</b>
</li>
<li><a name="map_EXPR_LIST"></a><b>map EXPR,LIST</b>
<p>Вычисляет BLOCK или EXPR для каждого элемента списка LIST (локально 
устанавливая <code class="inline"><span class="i">$_</span>
</code> равной каждому элементу) и возвращает список,
объединяющий результаты всех таких вычислений. В скалярном контексте возвращает
общее число сгенерированных элементов. Функция вычисляет BLOCK или EXPR 
в списковом контексте, поэтому каждый элемент списка LIST может производить ноль, один или
более элементов в возвращаемом значении.</p>
<pre>    <span class="i">@chars</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a><span class="s">(</span><a class="l_k" href="http://perl5doc.ru/en/f-chr"><span class="k">chr</span></a><span class="cm">,</span> <span class="i">@nums</span><span class="s">)</span><span class="sc">;</span>
</pre>

<p>транслирует список чисел в список соответствующих символов. Другой пример:</p>
<pre>    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> <span class="s">{</span> <span class="i">get_a_key_for</span><span class="s">(</span><span class="i">$_</span><span class="s">)</span> <span class="cm">=&gt;</span> <span class="i">$_</span> <span class="s">}</span> <span class="i">@array</span><span class="sc">;</span>
</pre>

<p>является лишь своеобразным вариантом следующей записи:</p>
<pre>    <span class="i">%hash</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span>
    <span class="k">foreach</span> <span class="s">(</span><span class="i">@array</span><span class="s">)</span> <span class="s">{</span>
        <span class="i">$hash</span>{<span class="i">get_a_key_for</span><span class="s">(</span><span class="i">$_</span><span class="s">)</span>} = <span class="i">$_</span><span class="sc">;</span>
    <span class="s">}</span>
</pre>

<p>Заметим, что переменная <code class="inline"><span class="i">$_</span>
</code> представляет собой псевдоним значения списка, поэтому ее
можно использовать для модификации элементов LIST. Хотя это удобно и 
поддерживается, но может привести к странным результатам если элементы LIST
не являются переменными. Использование обычного цикла <code class="inline"><span class="k">foreach</span>
</code>
для этой цели может быть понятнее в большинстве случаев. См. также 
функцию <a href="http://perl5doc.ru/en/f-grep">grep</a> -- возвращает массив, состоящий из тех элементов
первоначального списка, для которых BLOCK или EXPR принимает 
значение "истина".</p>
<p>Если  в области видимости, над которой оперирует <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a>
</code>, 
переменная <code class="inline"><span class="i">$_</span>
</code> является лексической (так как была объявлена ключевым словом <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-my"><span class="k">my</span></a>
</code>), то, 
помимо того, что <code class="inline"><span class="i">$_</span>
</code> представляет собой локальный псевдонимом списка элементов, 
она продолжает быть лексической внутри блока. 
Это значит, что переменная <code class="inline"><span class="i">$_</span>
</code> не видна снаружи, предотвращая любые возможные побочные эффекты.</p>
<p>Интерпретатор perl рассматривает фигурную скобку <code class="inline">{</code>, идущую после <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a>
</code>,
как начало ссылки на хэш или как блок, т.е  <code class="inline">map{ ...</code> может
быть началом либо <code class="inline"><span class="k">map</span> <span class="w">BLOCK</span> <span class="w">LIST</span>
</code>, либо <code class="inline"><span class="k">map</span> <span class="w">EXPR</span><span class="cm">,</span> <span class="w">LIST</span>
</code>.
Поскольку Perl не смотрит закрывающую скобку <code class="inline">}</code>, он должен предположить,
с чем он имеет дело на основании того, что он находит после <code class="inline">{</code>. Обычно 
он делает это правильно, но если он ошибся, то он этого не поймет, пока не
доберется до <code class="inline">}</code> и не встретить недостающую(или неожидаемую) запятую.
В этом случае, синтаксическая ошибку будет указана ближе к <code class="inline">}</code>, чтобы 
помочь интерпретатору Perl разобраться с ситуацией, измените 
что-либо около <code class="inline">{</code>, например добавьте унарный <code class="inline">+
</code>.</p>
<pre>    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> <span class="s">{</span>  <span class="q">"\L$_"</span> <span class="cm">=&gt;</span> <span class="n">1</span>  <span class="s">}</span> <span class="i">@array</span><span class="sc">;</span> <span class="c"># perl предполагает EXPR. неправильно</span>
    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> <span class="s">{</span> +<span class="q">"\L$_"</span> <span class="cm">=&gt;</span> <span class="n">1</span>  <span class="s">}</span> <span class="i">@array</span><span class="sc">;</span> <span class="c"># perl предполагает BLOCK. правильно</span>
    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> <span class="s">{</span> <span class="s">(</span><span class="q">"\L$_"</span> <span class="cm">=&gt;</span> <span class="n">1</span><span class="s">)</span> <span class="s">}</span> <span class="i">@array</span><span class="sc">;</span> <span class="c"># это тоже работает</span>
    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> <span class="s">{</span>  <a class="l_k" href="http://perl5doc.ru/en/f-lc"><span class="k">lc</span></a><span class="s">(</span><span class="i">$_</span><span class="s">)</span> <span class="cm">=&gt;</span> <span class="n">1</span>  <span class="s">}</span> <span class="i">@array</span><span class="sc">;</span> <span class="c"># как и это.</span>
    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> +<span class="s">(</span> <a class="l_k" href="http://perl5doc.ru/en/f-lc"><span class="k">lc</span></a><span class="s">(</span><span class="i">$_</span><span class="s">)</span> <span class="cm">=&gt;</span> <span class="n">1</span> <span class="s">)</span><span class="cm">,</span> <span class="i">@array</span><span class="sc">;</span> <span class="c"># это EXPR и это работает!</span>
     
    <span class="i">%hash</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a>  <span class="s">(</span> <a class="l_k" href="http://perl5doc.ru/en/f-lc"><span class="k">lc</span></a><span class="s">(</span><span class="i">$_</span><span class="s">)</span><span class="cm">,</span> <span class="n">1</span> <span class="s">)</span><span class="cm">,</span>   <span class="i">@array</span><span class="sc">;</span> <span class="c"># определяется как (1, @array)</span>
</pre>

<p>или используйте <code class="inline">+{</code>, чтобы принудительно задать конструкцию анонимного хэша:</p>
<pre>   <span class="i">@hashes</span> = <a class="l_k" href="http://perl5doc.ru/en/f-map"><span class="k">map</span></a> +<span class="s">{</span> <a class="l_k" href="http://perl5doc.ru/en/f-lc"><span class="k">lc</span></a><span class="s">(</span><span class="i">$_</span><span class="s">)</span> <span class="cm">=&gt;</span> <span class="n">1</span> <span class="s">}</span><span class="cm">,</span> <span class="i">@array</span> <span class="c"># EXPR, поэтому требуется запятая в конце</span>
</pre>

<p>в результате сгенерируется список ссылок на анонимные хэши, каждый из которых содержит одну запись.</p>
</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>perlfunc / localtime - работа с датой и временем - Стандартные функции Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/perlfunc/2010/12/perl-localtime.html" />
    <id>tag:blog.perl5doc.ru,2010:/perlfunc//10.44</id>

    <published>2010-11-30T21:00:01Z</published>
    <updated>2010-11-30T19:56:28Z</updated>

    <summary>Функция преобразует время, возвращаемое time в список из девяти элементов, представляющих время, приведенное к местному часовому поясу. Обычно используется так: # 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); Все элементы представляют собой числа и поступают...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Дата и время" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/perlfunc/">
        <![CDATA[<p>Функция преобразует время, возвращаемое <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-time">time</a></code> в список из девяти
элементов, представляющих время, приведенное к местному часовому
поясу. Обычно используется так:</p>
<pre><span class="c">#  0    1    2     3     4    5     6     7     8</span>
<span class="s">(</span><span class="i">$sec</span><span class="cm">,</span><span class="i">$min</span><span class="cm">,</span><span class="i">$hour</span><span class="cm">,</span><span class="i">$mday</span><span class="cm">,</span><span class="i">$mon</span><span class="cm">,</span><span class="i">$year</span><span class="cm">,</span><span class="i">$wday</span><span class="cm">,</span><span class="i">$yday</span><span class="cm">,</span><span class="i">$isdst</span><span class="s">)</span> =
                                            <a class="l_k" href="http://perl5doc.ru/en/f-localtime">localtime</a><span class="s">(</span><a class="l_k" href="http://perl5doc.ru/en/f-time">time</a><span class="s">)</span><span class="sc">;</span>
</pre><p>Все элементы представляют собой числа и поступают прямо из <code class="inline"><span class="w">struct</span>&nbsp;<span class="w">tm</span></code>.
<code class="inline"><span class="i">$sec</span></code>, <code class="inline"><span class="i">$min</span></code>, и <code class="inline"><span class="i">$hour</span></code> содержат соответственно секунды, минуты и 
часы в указанном времени.</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">@abbr</span> = <span class="q">qw( Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь )</span><span class="sc">;</span>
<a class="l_k" href="http://perl5doc.ru/en/f-print">print</a> <span class="q">"$abbr[$mon] $mday"</span><span class="sc">;</span>
<span class="c"># при значениях $mon=9, $mday=18 на выводе "Октябрь 18"</span>
</pre><p><code class="inline"><span class="i">$year</span></code> - количество лет после 1900 года, а не просто последние две цифры года.
Например, в 2023 году <code class="inline"><span class="i">$year</span></code> будет содержать значение <code class="inline"><span class="n">123</span></code> . 
Таким образом, получить 4-значный год можно следующим образом:</p>
<pre><span class="i">$year</span> += <span class="n">1900</span><span class="sc">;</span>
</pre><p>В противном случае, вы создаете <a href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0_2000_%D0%B3%D0%BE%D0%B4%D0%B0">Y2K</a>-несовместимые программы, но вы не 
хотите делать этого, не так ли ?</p>
<p>Чтобы получить двухзначный год (например, '01' в 2001 году), используйте следующее:</p>
<pre><span class="i">$year</span> = <a class="l_k" href="http://perl5doc.ru/en/f-sprintf">sprintf</a><span class="s">(</span><span class="q">"%02d"</span><span class="cm">,</span> <span class="i">$year</span> % <span class="n">100</span><span class="s">)</span><span class="sc">;</span>
</pre><p><code class="inline"><span class="i">$wday</span></code> - день недели, при этом воскресенье имеет номер 0, а среда - номер 3.  
<code class="inline"><span class="i">$yday</span></code> является днем в году, содержит значения в диапазоне <code class="inline"><span class="n">0</span>..<span class="n">364</span></code> 
(или <code class="inline"><span class="n">0</span>..<span class="n">365</span></code> в високосные годы.)</p>
<p>Если указанное время попадает в период летнего времени, <code class="inline"><span class="i">$isdst</span></code> содержит
истинное значение, иначе - ложное.</p>
<p>Если EXPR опущено, <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-localtime">localtime()</a></code> использует текущее время (возвращаемое
системной функцией time(3)).</p>
<pre><span class="i">$now_string</span> = <a class="l_k" href="http://perl5doc.ru/en/f-localtime">localtime</a><span class="sc">;</span>  <span class="c"># например, "Thu Oct 13 04:54:34 1994"</span>
</pre><p>Это скалярное значение <b>не</b> зависимо от локали, формат встроен в Perl. 
Для GMT вместо локального времени используется встроенная функция <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-gmtime">gmtime</a></code>. 
См. также
модуль <a href="http://perl5doc.ru/en/Time::Local">Time::Local</a> (для преобразования секунд, минут, часов, ... обратно 
в целочисленное значение, возвращаемое ф-ей time()), и функции strftime(3)
и mktime(3) модуля <a href="http://perl5doc.ru/en/POSIX">POSIX</a>.</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-use">use</a> <span class="w">POSIX</span> <span class="q">qw(strftime)</span><span class="sc">;</span>
<span class="i">$now_string</span> = <span class="w">strftime</span> <span class="q">"%a %b %e %H:%M:%S %Y"</span><span class="cm">,</span> <a class="l_k" href="http://perl5doc.ru/en/f-localtime">localtime</a><span class="sc">;</span>
<span class="c"># или в формате GMT в соответствии с вашей локалью:</span>
<span class="i">$now_string</span> = <span class="w">strftime</span> <span class="q">"%a %b %e %H:%M:%S %Y"</span><span class="cm">,</span> <a class="l_k" href="http://perl5doc.ru/en/f-gmtime">gmtime</a><span class="sc">;</span>
</pre><p>Отметим, что <code class="inline"><span class="i">%a</span></code> и <code class="inline"><span class="i">%b</span></code>, краткие формы дня недели и месяца в году,
не обязательно должны быть длиной в три символа.</p>
<p>См. <a href="http://perl5doc.ru/en/perlport#localtime">"localtime" in perlport</a> в интересах портативности.</p>
<p>Модули <a href="http://perl5doc.ru/en/Time::gmtime">Time::gmtime</a> и <a href="http://perl5doc.ru/en/Time::localtime">Time::localtime</a> обеспечивают удобный
механизм доступа по имени к функциям gmtime() и localtime() соответственно.</p>
<p>Для решения всеобъемлющих задач представления даты и времени обратите внимание на 
модуль <a href="http://search.cpan.org/perldoc/DateTime">DateTime</a> на CPAN.</p>
]]>
        
    </content>
</entry>

<entry>
    <title>perlreftut - кратко о ссылках - Руководства</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/tutorials/2010/11/perl-reference.html" />
    <id>tag:blog.perl5doc.ru,2010:/tutorials//13.42</id>

    <published>2010-11-01T21:17:55Z</published>
    <updated>2010-11-01T22:47:52Z</updated>

    <summary> Одно из самых важных новшеств в Perl 5 - это возможность управления сложными структурами данных, такими, как многомерные массивы и вложенные хэши. Для этого в Perl 5 имеются ссылки, с помощью которых удобно работать со структурированной информацией. К сожалению,...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Ссылки Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/tutorials/">
        <![CDATA[<div style="color: brown">

</div>
<br />
<p>
Одно из самых важных новшеств в Perl 5 - это возможность управления сложными структурами данных, такими, как многомерные массивы и вложенные хэши. Для этого в Perl 5 имеются ссылки, с помощью которых удобно работать со структурированной информацией. К сожалению, приходится изучать довольно сложный синтаксис, а  руководству  по ссылкам <a href="http://perl5doc.ru/en/perlref">perlref</a> иногда трудно следовать. Руководство дает полное описание и в этом кроется проблема для начинающих - в большом объеме информации бывает сложно выделить важное от второстепенного.
</p>
<p>
К счастью, вам нужно знать только 10% того, что дает руководство, чтобы иметь 90% возможностей. <a href="http://perl5doc.ru/perlreftut">perlreftut</a> дает именно те важные 10%.</p>
<hr>
<div style="color: brown">
<p>Перевод документа обеспечил <a href="http://rak.at.tut.by/"> Иван Е. Рак </a>, за что ему большое спасибо, а я <s><i>стырил и</i></s> немного подредактировал для размещения на сайте perl5doc.ru.</p>
<i>
P.S. - <a href="http://perl5doc.ru/perlreftut">perlreftut</a>&nbsp;появился еще до выхода Perl версии 5.6.0, но актуален для всех версий вплоть до  5.13.*. К тому же с течением времени в нем происходили некоторые небольшие изменения, а именно в версии 5.8.* s/Bill Clinton/George Bush/,
а в версии 5.10.* s/George Bush/Barack Obama/. Так что Perl программисты политикой тоже интересуются.
</i>
</div>]]>
        
    </content>
</entry>

<entry>
    <title>perlfunc / open - чтение и запись в файл - Стандартные функции Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/perlfunc/2010/10/perl-open-read-write.html" />
    <id>tag:blog.perl5doc.ru,2010:/perlfunc//10.40</id>

    <published>2010-09-30T20:19:36Z</published>
    <updated>2010-10-27T17:58:42Z</updated>

    <summary><![CDATA[ Функция&nbsp;open открывает файл, имя которой задается в EXPR, и связывает его с внутренним указателем FILEHANDLE. Простой пример открытия файла для чтения: open(my $fh, '&lt;', "input.txt") or die $!; и для записи: open(my $fh, '&gt;', "output.txt") or die $!; Если...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Указатели файлов, файлы или директории" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/perlfunc/">
        <![CDATA[ <p>Функция&nbsp;<span class="Apple-style-span" style="font-family: monospace; white-space: pre; "><a class="l_k" href="http://perl5doc.ru/en/f-open" style="text-decoration: underline; ">open</a> </span>открывает файл, имя которой задается в EXPR, и связывает его с 
внутренним указателем FILEHANDLE.</p><meta http-equiv="content-type" content="text/html; charset=utf-8">
<p>Простой пример открытия файла для чтения:</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-open">open</a><span class="s">(</span><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$fh</span><span class="cm">,</span> <span class="q">'&lt;'</span><span class="cm">,</span> <span class="q">"input.txt"</span><span class="s">)</span> or <a class="l_k" href="http://perl5doc.ru/en/f-die">die</a> <span class="i">$!</span><span class="sc">;</span>
</pre><p>и для записи:</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-open">open</a><span class="s">(</span><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$fh</span><span class="cm">,</span> <span class="q">'&gt;'</span><span class="cm">,</span> <span class="q">"output.txt"</span><span class="s">)</span> or <a class="l_k" href="http://perl5doc.ru/en/f-die">die</a> <span class="i">$!</span><span class="sc">;</span>
</pre><p>Если FILEHANDLE является неопределенной скалярной переменной 
(а также массивом или элементом хэша), переменной присваивается ссылка 
на новый анонимный указатель файла. Иначе, если 
FILEHANDLE является выражением, его значение используется в качестве
имени существующего файлового дескриптора. (Так как возвращаемое значение
интерпретируется как символическая ссылка, необходимо, чтобы 
это выражение было вне области действия <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-use">use</a>&nbsp;<span class="w">strict</span>&nbsp;<span class="q">'refs'</span></code>.)</p>
<p>Если не указан параметр EXPR, то ведется поиск скалярной переменной
с тем же именем, что и FILEHANDLE. Эта переменная должна содержать имя файла
и необязательный режим. 
(Заметим, что лексические переменные, объявленные оператором <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a></code>,
не будут работать для этих целей; поэтому, если вы используете 
<code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a></code>, укажите EXPR в вашем вызове open.)</p>
<p>Если указано три или более аргументов, тогда подразумевается, что режим открытия и 
имя файла указаны раздельно. Если MODE содержит <code class="inline"><span class="q">'&lt;'</span></code> или пуст,
то файл открывается для чтения. Если MODE содержит <code class="inline"><span class="q">'&gt;'</span></code>, файл очищается и 
открывается для записи, при необходимости создается. Если MODE содержит <code class="inline"><span class="q">'&gt;&gt;'</span></code>,
файл открывается для дозаписи, также создается при необходимости.</p>
<p>Можно поместить символ <code class="inline"><span class="q">'+'</span></code> перед любым из символов <code class="inline"><span class="q">'&gt;'</span></code> или <code class="inline"><span class="q">'&lt;'</span></code> 
чтобы открыть файл одновременно для чтения и записи.
Так как режим <code class="inline"><span class="q">'+&gt;'</span></code> затирает содержимое файла прежде чем
можно будет что-нибудь из него прочесть, то режим <code class="inline"><span class="q">'+&lt;'</span></code> 
почти всегда предпочтительнее для чтения/обновления по записи. 
Можно рассматривать файл, открытый в режиме обновления, как базу 
данных с произвольным доступом и перемещаться к байту с заданным
номером при помощи <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-seek">seek</a></code>, но переменная длина записей в обычных
текстовых файлах делает непрактичным использование режима чтения-записи
для обновления таких файлов. Лучший подход к обновлению говорится
в описании параметра командной строки <b>i</b> в спецификации <a href="http://perl5doc.ru/en/perlrun">perlrun</a>. 
Файл создается с режимом доступа <code class="inline"><span class="n">0666</span></code>, данный режим зависит от текущей 
<code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-umask">umask</a></code> процесса.</p>
<p>Все эти префиксы соответствуют режимам <code class="inline"><span class="q">'r'</span></code>,
<code class="inline"><span class="q">'r+'</span></code>, <code class="inline"><span class="q">'w'</span></code>, <code class="inline"><span class="q">'w+'</span></code>, <code class="inline"><span class="q">'a'</span></code>, и <code class="inline"><span class="q">'a+'</span></code> в функции fopen(3).</p>
<p>Если <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-open">open</a></code> вызывается с одним или двумя аргументами, то режим
и имя файла должны быть объединены(в таком порядке), возможно
разделенные пробелом. Если режим не указан, тогда
предполагается режим для чтения  <code class="inline"><span class="q">'&lt;'</span></code>.</p>
<pre>  <a class="l_k" href="http://perl5doc.ru/en/f-open">open</a><span class="s">(</span><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$fh</span><span class="cm">,</span> <span class="q">"&lt;:encoding(UTF-8)"</span><span class="cm">,</span> <span class="q">"filename"</span><span class="s">)</span>
  || <a class="l_k" href="http://perl5doc.ru/en/f-die">die</a> <span class="q">"Ошибка при открытии файла в кодировке UTF-8: $!"</span><span class="sc">;</span>
</pre><p>открывает UTF-8 закодированный файл, см. <a href="http://perl5doc.ru/en/perluniintro">perluniintro</a>. Отметим, 
что если дисциплины указаны в трех-аргументной форме <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-open">open</a></code>, 
то по умолчанию дисциплины, содержащиеся в ${^OPEN}, игнорируются. 
(см. <a href="http://perl5doc.ru/en/perlvar">perlvar</a>, обычно устанавливается прагмой <b>open</b> 
или c помощью ключей командной строки <b>-CioD</b>)</p>
<p>Функция <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-open">open()</a></code> возвращает ненулевое значение в случае успеха и 
неопределенное значение в противном случае.</p>
<p>Если Perl исполняется на системе, которая различает текстовые
и двоичные(бинарные) файлы, то при открытии двоичного файла следует указать
двоичный режим с помощью функции <a href="http://perl5doc.ru/en/f-binmode.html">binmode</a>. Основное отличие систем,
в которых требуется <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-binmode">binmode</a></code>&nbsp;- в формате текстовых файлов.
Системам подобным Unix, Mac OS, и Plan 9, функция <code class="inline"><a class="l_k" href="http://perl5doc.ru/en/f-binmode">binmode</a></code> не требуется,
потому что в файлах данных систем каждая строка завершается одним символом, 
соответствующим тому, что на языке Си определяется как перевод строки - <code class="inline"><span class="q">"\n"</span></code>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Механизмы рендеринга в Mojolicious - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/08/mojolicious-rendering.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.36</id>

    <published>2010-08-31T17:28:49Z</published>
    <updated>2010-08-31T17:59:40Z</updated>

    <summary><![CDATA[На сайте Perl5doc.ru в разделе CPAN появился документ&nbsp;Mojolicious::Guides::Rendering, описывающий&nbsp;механизм рендеринга&nbsp;Mojolicious.Кратко говоря, "рендеринг" - это преобразование данных из одного формата в другой. &nbsp;В Mojolicious под этим термином подразумевается шаблонизация, генерация кодов состояния http, маршрутизация, работа с данными в формате JSON. Как...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<meta http-equiv="content-type" content="text/html; charset=utf-8">На сайте Perl5doc.ru в разделе CPAN появился документ&nbsp;<span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><a href="http://perl5doc.ru/cpan/Mojolicious::Guides::Rendering">Mojolicious::Guides::Rendering</a>, описывающий</span><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; ">&nbsp;механизм рендеринга&nbsp;<a href="http://perl5doc.ru/cpan/Mojolicious" style="text-decoration: none; color: rgb(153, 102, 153); ">Mojolicious</a>.</span><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"><br /></span></font><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; ">Кратко говоря, "рендеринг" - это преобразование данных из одного формата в другой. &nbsp;В Mojolicious под этим термином подразумевается шаблонизация, генерация кодов состояния http, маршрутизация, работа с данными в формате JSON. Как эти технологии реализованы в Mojolicious, вы узнаете из документа&nbsp;</span><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><a href="http://perl5doc.ru/cpan/Mojolicious::Guides::Rendering">Mojolicious::Guides::Rendering</a>.</span></div></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><br /></span></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><span class="Apple-style-span" style="font-size: 11px; ">Документации Mojolicious на русском языке накопилось достаточно, хотя еще многое предстоит сделать. Стоит отметить всех, кто принял посильное участие в переводе документации Mojolicious:</span></span></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><span class="Apple-style-span" style="font-size: 11px; "><br /></span></span></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><span class="Apple-style-span" style="font-size: 11px; ">Mojo::Base:&nbsp;</span></span><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; font-size: 11px; border-collapse: collapse; line-height: 16px; "><a href="http://perl5doc.ru" style="text-decoration: underline; color: rgb(51, 102, 153); ">zhdinar</a></span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><span class="Apple-style-span" style="font-size: 11px; ">Mojolicious:&nbsp;</span></span><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; font-size: 11px; border-collapse: collapse; line-height: 16px; ">&nbsp;<a href="http://perl5doc.ru" style="color: rgb(51, 102, 153); text-decoration: underline; ">zhdinar</a>,&nbsp;<a href="http://translated.by/Minoru/" style="color: rgb(153, 102, 153); text-decoration: none; ">Minoru</a>,&nbsp;<a href="http://translated.by/vti/" style="color: rgb(153, 102, 153); text-decoration: none; ">vti</a>&nbsp;.</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; font-size: 11px; border-collapse: collapse; line-height: 16px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(48, 48, 48); line-height: normal; font-size: 12px; ">Mojolicious::Guides::Cheatsheet:</span>&nbsp;&nbsp;<a href="http://translated.by/vti/" style="color: rgb(51, 102, 153); text-decoration: underline; ">vti</a>,&nbsp;<a href="http://translated.by/r3code/" style="color: rgb(34, 116, 168); text-decoration: none; ">Дмитрий</a>,&nbsp;<a href="http://translated.by/klik-klik/" style="color: rgb(153, 102, 153); text-decoration: none; ">klik-klik</a>.</span></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; font-size: 11px; border-collapse: collapse; line-height: 16px; ">Mojolicious::Guides::CodingGuidelines:&nbsp;<a href="http://translated.by/alexey-rusaleev/" style="color: rgb(51, 102, 153); text-decoration: underline; ">alexey-rusaleev</a>,&nbsp;<a href="http://andrey.opeykin.ru" style="color: rgb(153, 102, 153); text-decoration: none; ">xoma</a>,&nbsp;<a href="http://translated.by/vti/" style="color: rgb(153, 102, 153); text-decoration: none; ">vti</a>,&nbsp;<a href="http://translated.by/r3code/" style="color: rgb(34, 116, 168); text-decoration: none; ">Дмитрий</a>,&nbsp;<a href="http://translated.by/Foxcool/" style="color: rgb(34, 116, 168); text-decoration: none; ">Foxcool</a></span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><font class="Apple-style-span" color="#303030" face="verdana, sans-serif" size="3"><span class="Apple-style-span" style="font-size: 12px;">Mojolicious::Guides::Cookbook:&nbsp;</span></font><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 11px; "><a href="http://translated.by/r3code/" style="color: rgb(255, 111, 0); ">Дмитрий</a>,&nbsp;<a href="http://translated.by/shoorick/" style="color: rgb(2, 92, 166); ">shoorick</a>,&nbsp;<a href="http://translated.by/HeavyAnykey/" style="color: rgb(2, 92, 166); ">HeavyAnykey</a>,&nbsp;<a href="http://translated.by/Foxcool/" style="color: rgb(2, 92, 166); ">Foxcool</a>,&nbsp;<a href="http://perl5doc.ru" style="color: rgb(2, 92, 166); ">zhdinar</a>,&nbsp;<a href="http://translated.by/vti/" style="color: rgb(2, 92, 166); ">vti</a></span></div><div><span class="Apple-style-span" style="color: rgb(48, 48, 48); font-family: verdana, sans-serif; font-size: 12px; ">Mojolicious::Guides::Rendering:</span><span class="Apple-style-span" style="font-family: verdana, sans-serif; font-size: 12px; "><font class="Apple-style-span" color="#1E1E1E">&nbsp;</font></span><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; font-size: 11px; border-collapse: collapse; line-height: 16px; "><a href="http://andrey.opeykin.ru" style="color: rgb(51, 102, 153); text-decoration: underline; ">xoma</a>,&nbsp;<a href="http://translated.by/vti/" style="color: rgb(153, 102, 153); text-decoration: none; ">vti</a>,&nbsp;<a href="http://technix.in.ua/" style="color: rgb(153, 102, 153); text-decoration: none; ">Сергей</a>,&nbsp;<a href="http://translated.by/korshak/" style="color: rgb(153, 102, 153); text-decoration: none; ">korshak</a>,&nbsp;<a href="http://translated.by/r3code/" style="color: rgb(34, 116, 168); text-decoration: none; ">Дмитрий</a>,&nbsp;<a href="http://maxim.vuets.name/" style="color: rgb(153, 102, 153); text-decoration: none; ">Максим Вуец</a>,&nbsp;<a href="http://translated.by/koban/" style="color: rgb(34, 116, 168); text-decoration: none; ">koban</a>,&nbsp;<a href="http://translated.by/klik-klik/" style="color: rgb(153, 102, 153); text-decoration: none; ">klik-klik</a>,&nbsp;<a href="http://translated.by/dionys/" style="color: rgb(153, 102, 153); text-decoration: none; ">dionys</a>,&nbsp;<a href="http://translated.by/Dim_K/" style="color: rgb(34, 116, 168); text-decoration: none; ">Dim_K</a></span></div><div><span class="Apple-style-span" style="color: rgb(30, 30, 30); font-family: verdana, sans-serif; border-collapse: collapse; line-height: 16px; "><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br /></span></font></span></div><div><font class="Apple-style-span" color="#1E1E1E" face="verdana, sans-serif" size="3"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 11px; line-height: 16px;">Надеюсь, число участников будет только увеличиваться :)</span></font></div>]]>
        
    </content>
</entry>

<entry>
    <title>Сборник полезных программных решений Mojolicious. - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/08/mojolicious-cookbook.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.32</id>

    <published>2010-08-08T20:17:48Z</published>
    <updated>2010-08-08T21:16:05Z</updated>

    <summary> Эта статья является урезанной версией оригинального перевода на сайте translated.by. Оригинальная документация: Mojolicious::Guides::Cookbook.pod. Данный перевод также внесен в раздел документации фреймворка Mojolicious на сайте perl5doc.ru под названием Mojolicious::Guides::Cookbook РАЗВЕРТЫВАНИЕ Запуск Mojolicious и Mojolicious::Lite приложений на различных платформах. Встроенный сервер...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<div style="color: brown">
<p>
<i> Эта статья является урезанной версией <a href="http://translated.by/you/mojolicious-cookbook/into-ru/">оригинального перевода</a> на сайте translated.by. <br>
Оригинальная документация: <a href="http://github.com/kraih/mojo/blob/master/lib/Mojolicious/Guides/Cookbook.pod">Mojolicious::Guides::Cookbook.pod</a>. 
<br>Данный перевод также внесен  в раздел <a href="http://perl5doc.ru/cpan/Mojolicious-v.0.99992X">документации фреймворка Mojolicious </a> на сайте perl5doc.ru под названием <a href="http://perl5doc.ru/cpan/Mojolicious::Guides::Cookbook">Mojolicious::Guides::Cookbook</a>
</i>
</p>
</div>
<br>
<a name="DEPLOYMENT"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">РАЗВЕРТЫВАНИЕ </h1>
<p>Запуск <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> и <a href="http://search.cpan.org/perldoc/Mojolicious::Lite">Mojolicious::Lite</a> приложений на различных платформах.</p>
<a name="Builtin-Server"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Встроенный сервер </h2>
<p><a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> имеет ультрапортативный HTTP 1.1 совместимый web-сервер. 
Обычно он используются при разработке, но он также достаточно стабильный 
и быстрый для небольших и средних приложений.</p>
<p>Другим большим преимуществом является то, что он поддерживает из коробки 
TLS и ВебСокеты</p>
<a name="Builtin-Preforking-Server"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Встроенный Prefork Сервер </h2>
<p>Чтобы допускать масштабирование с несколькими процессорами (ядрами) и снизить 
потери производительности из-за блокирующего (медленного) API, встроенный 
веб-сервер имеет многопроцессовый preforking режим.
Это не работает на Windows из-за оптимизаций для UNIX, но это достаточно 
быстро и масштабируемо для больших приложений.</p>
<a name="Nginx"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Nginx</h2>
<p>Одним из наиболее популярных способов установки в настоящее время 
является встроенный preforking web сервер за инвертированным прокси Nginx.
Также вожможно использование доменных сокетов UNIX.
Встроенный web-сервер Mojolicious, конечно, так же их поддерживает.</p>
<p>Интересным побочным эффектом является то, что можно параллельно запустить 
несколько серверов, позволив им совместно использовать один и тот же 
сокет и файл блокировки. Это позволяет осуществлять так называемое 
<code class="inline"><span class="w">горячее</span>&nbsp;<span class="w">развёртывание</span></code>, означающее полное отсутствие простоя 
во время обновления программ.</p>
<a name="Apache%2fCGI"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Apache/CGI</h2>
<p><code class="inline"><span class="w">CGI</span></code> поддерживается &laquo;из коробки&raquo;, и ваше приложение на <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> 
автоматически определит, что оно запущено как <code class="inline"><span class="w">CGI</span></code>-скрипт.</p>
<a name="Apache%2fFastCGI"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Apache/FastCGI</h2>
<p><code class="inline"><span class="w">FastCGI</span></code> тоже поддерживается &laquo;из коробки&raquo;, и ваше приложение 
на <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> автоматически определит, что оно запущено 
как <code class="inline"><span class="w">FastCGI</span></code>-скрипт.</p>
<a name="PSGI%2fPlack"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">PSGI/Plack</h2>
<p><a href="http://search.cpan.org/perldoc/PSGI">PSGI</a> - это интерфейс между Perl веб-фреймворками и веб-серверами.
<a href="http://search.cpan.org/perldoc/Plack">Plack</a> -  это Perl модуль и набор разработчика, который содержит 
связующее ПО PSGI, вспомогательные инструменты и адаптеры для веб-серверов.
На создание <a href="http://search.cpan.org/perldoc/PSGI">PSGI</a> и <a href="http://search.cpan.org/perldoc/Plack">Plack</a> вдохновили Python WSGI и Ruby Rack.
Приложения <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> смехотворно просто разверачивать с помощью <a href="http://search.cpan.org/perldoc/Plack">Plack</a>.</p>
<a name="Apache%2fmod_perl-(PSGI%2fPlack)"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Apache/mod_perl (PSGI/Plack)</h2>
<p><code class="inline"><span class="w">mod_perl</span></code> это хороший пример <a href="http://search.cpan.org/perldoc/PSGI">PSGI</a> адаптера без использования 
<code class="inline"><span class="w">plackup</span></code>, помните что установка переменной окружения <code class="inline"><span class="w">PLACK_ENV</span></code> 
необходима <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> для автоматического обнаружения <a href="http://search.cpan.org/perldoc/PSGI">PSGI</a>.</p>
<a name="IIS6.0%2fFastCGI"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">IIS6.0/FastCGI</h2>
<p>Мы не советуем использовать IIS, ибо это страшно нестабильный веб-сервер. 
Избегайте работы с ним, если это возможно.</p>
<a name="FUN"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Развлекаемся </h1>
<p>Хаки, которые быть может и не очень полезны, но зато интересны! :)</p>
<a name="Hello-World"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Hello World</h2>
<p>Если экономить на каждом байте, то самое маленькое <code class="inline"><span class="w">Hello</span>&nbsp;<span class="w">World</span></code> 
приложение, написанное на <a href="http://search.cpan.org/perldoc/Mojolicious::Lite">Mojolicious::Lite</a>, имеет следующий вид:</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-use">use</a> <span class="w">Mojolicious::Lite</span><span class="sc">;</span>
<span class="w">get</span> <span class="q">&#39;/&#39;</span> <span class="cm">=&gt;</span> <span class="s">{</span><span class="w">text</span> <span class="cm">=&gt;</span> <span class="q">&#39;Hello World!&#39;</span><span class="s">}</span><span class="sc">;</span>
<span class="w">app</span><span class="w">-&gt;start</span><span class="sc">;</span>
</pre><p>Это работает, потому что автоматический рендеринг срабатывает, 
даже если код фактически не выполняется маршрутизатором, 
рендерер только забирает значение <code class="inline"><span class="w">text</span></code> из stash и формирует ответ.</p>]]>
        
    </content>
</entry>

<entry>
    <title>О Perl 6. - История и развитие Perl</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/history/2010/08/-perl-6.html" />
    <id>tag:blog.perl5doc.ru,2010:/history//2.30</id>

    <published>2010-08-01T20:40:17Z</published>
    <updated>2010-08-02T04:12:44Z</updated>

    <summary> Доброе время суток, рад сообщить, что в связи с выходом официального дистрибутива Perl на сайте Blog.Perl6doc.ru появилась первая статья :). А задесь приведу абзац из книги &quot;Справочник Perl 6 и Parrot&quot;, второе издание ( анг. &quot;Perl 6 and Parrot...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Разное" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/history/">
        <![CDATA[<p>
Доброе время суток, рад сообщить, что в связи с выходом официального дистрибутива Perl на сайте <a href="http://blog.perl6doc.ru"> Blog.Perl6doc.ru </a> появилась первая <a href="http://blog.perl6doc.ru/coredoc-perl6/2010/08/diff-perl-5-perl-6.html"> статья </a>   :).
</p>
<p>
<div style=""> А задесь приведу абзац из книги "Справочник Perl 6 и Parrot", второе издание ( анг. "Perl 6 and Parrot Essentials", second edition ). Данный отрывок из книги пятилетней давности объясняет одну из причин долгой разработки шестой версиии Perl.  </div>

</p>
<div style="font-size: 110%; font-style: italic;">
</p>
	  Perl 6 не является редакцией, предназначенной для использования в течение пары лет
	  и последующего отказа от нее. Для него предусматривается срок в 20 лет и более.
	  Такой долгосрочный подход воздействует на форму языка и процесс его создания.
	  Мы не заинтересованы в новейших причудах или в том, чтобы удивить всех захватывающими
	  трюками. Мы стремимся к сильным и надежным инструментам с большим запасом роста.
	  И мы не боимся затратить сейчас дополнительное время на то, чтобы все было правильным.
	  Это не значит, что Perl 6.0 будет верхом совершенства, что в равной мере относится
	  и к другим релизам. Это лишь еще один шаг прогресса.
</p>
</div>]]>
        
    </content>
</entry>

<entry>
    <title>Mojolicious - Руководство по разработке - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/07/mojolicious--.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.28</id>

    <published>2010-07-26T21:19:18Z</published>
    <updated>2010-07-26T21:39:21Z</updated>

    <summary> Эта статья является составной частью документации веб-фреймворка Mojolicious НАЗВАНИЕ Mojolicious::Guides::CodingGuidelines - Руководство по разработке ОБЗОР Данный документ описывает рекомендации по написанию программ, лежащие в основе разработки Mojo и Mojolicious. Пожалуйста, не присылайте патчи, если вы не согласны с этими...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<p>
Эта статья является составной частью документации веб-фреймворка <a href="http://perl5doc.ru/cpan/Mojolicious-v.0.99992X">Mojolicious</a>
</p>
<br>
<p>
<a name="NAME"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">НАЗВАНИЕ </h1>
<p><a href="http://perl5doc.ru/cpan/Mojolicious::Guides::CodingGuidelines">Mojolicious::Guides::CodingGuidelines</a> - Руководство по разработке</p>
<a name="OVERVIEW"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ОБЗОР </h1>
<p>Данный документ описывает рекомендации по написанию программ, лежащие в основе
разработки <a href="http://search.cpan.org/perldoc/Mojo">Mojo</a> и <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a>.</p>
<p>Пожалуйста, не присылайте патчи, если вы не согласны 
с этими рекомендациями.</p>
<a name="MISSION-STATEMENT"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">НАЗНАЧЕНИЕ </h1>
<p><a href="http://search.cpan.org/perldoc/Mojo">Mojo</a> это среда исполнения для Perl веб-фреймворков. Она предоставляет все
основные инструменты и средства, необходимые для написания как простых
веб-приложений, так и веб-фреймворков более высокого уровня, таких как
<a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a>.</p>
<p>Все компоненты должны иметь возможность быть использованными в других проектах
и, соответствуя философии UNIX, не должны быть сильно связаны между собой.</p>
<p>Специально для новичков в Perl, процесс установки и начала работы с Mojolicious
должен быть настолько прост, насколько это возможно. Написание веб-приложений
может быть одним из самых забавных способов изучения языка!</p>
<p>Для разработчиков других фреймворков должно быть возможным повторно
использовать всю инфраструктуру, рассматривая более высокие уровни дистрибутива
<a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> всего лишь примером приложения.</p>
<a name="RULES"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ПРАВИЛА </h1>
<ul>
<li>
<p>Все должно быть просто, никакой магии, за исключением случаев, когда она
абсолютно необходима.</p>
</li>
<li>
<p>Желательно писать код, не забывая о переходе на Perl6.</p>
</li>
<li>
<p>Никакого рефакторинга, за исключением случая, когда какое-то очень важное
свойство программы абсолютно зависит от него.</p>
</li>
<li>
<p>Без теста - функционал ничто!</p>
</li>
<li>
<p>Функциональная возможность программы нужна только тогда, когда большинство
пользователей получают пользу от неё.</p>
</li>
<li>
<p>Функциональные возможности не могут быть изменены, если они не устарели по
крайней мере для одного главного выпуска.</p>
</li>
<li>
<p>Желательно любой ценой избегать неодобрения свойств программы.</p>
</li>
<li>
<p>Крупной версией считается та, которая обозначена новым уникальным кодовым
названием, вне зависимости от номера версии.</p>
</li>
<li>
<p>Новые свойства программы могут быть помечены как экспериментальные, и в таком
случае на них не распространяются политики неодобрения.</p>
</li>
<li>
<p>Добавляйте предварительные требования только если они абсолютно необходимы.</p>
</li>
<li>
<p>Специализированные языки программирования желательно избегать, предпочитая
Perl&#39;овые решения.</p>
</li>
<li>
<p>Никакого внутристрочного POD.</p>
</li>
<li>
<p>За документацию отвечает книга, а POD в модуле &mdash; всего лишь справочник по API.</p>
</li>
<li>
<p>Строки не должны быть длиннее 78 символов и мы используем отступы в 4 пробела.</p>
</li>
<li>
<p>Код должен быть пропущен через <a href="http://search.cpan.org/perldoc/Perl::Tidy">Perl::Tidy</a> с предоставленными настройками в
<code class="inline">.perltidyrc</code>.</p>
</li>
<li>
<p>Нет спагетти-коду!</p>
</li>
<li>
<p>Код должен быть организован в блоки и эти блоки должны быть прокомментированны.</p>
</li>
<li>
<p>Комментариям желательно быть веселыми, если возможно.</p>
</li>
<li>
<p>Каждый файл должен содержать хотя бы одну цитату из <code class="inline"><span class="w">Симпсонов</span></code> или
<code class="inline"><span class="w">Футурамы</span></code>.</p>
</li>
<li>
<p>Никаких имен вне секции CREDITS файла Mojo.pm.</p>
</li>
<li>
<p>Никакого элитизма.</p>
</li>
<li>
<p>Мир!</p>
</li>
</ul>

<p> 
<small>Copyright (&copy;) 2008-2010, Sebastian Riedel.<br> 
Оригинал (английский): <a href="http://github.com/kraih/mojo/blob/master/lib/Mojolicious/Guides/CodingGuidelines.pod">Coding Guidelines</a></small> 
<br><small>Перевод: &copy;
<a href="http://translated.by/alexey-rusaleev/">alexey-rusaleev</a>, 
<a href="http://andrey.opeykin.ru">xoma</a>, 
<a href="http://translated.by/vti/">vti</a>, 
<a href="http://translated.by/r3code/">Дмитрий</a>, 
<a href="http://translated.by/Foxcool/">Foxcool</a> 
<br> 
Лицензия: The Artistic License 2.0
</small> 
 
<br><small><a href="http://translated.by/you/coding-guidelines/into-ru/">translated.by</a> переведено толпой </small> 
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Справочное руководство Mojolicious - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/07/-mojolicious.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.27</id>

    <published>2010-07-16T12:52:44Z</published>
    <updated>2010-07-16T13:48:24Z</updated>

    <summary>ИМЯ Mojolicious::Guides::Cheatsheet - Справочное руководство ОПИСАНИЕ Этот документ содержит краткое справочное руководство. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ Многие части Mojolicious могут быть настроены с помощью переменных окружения. Переменные для отладки не рассматриваются, так как их применяют только в процессе разработки. MOJO_APP Определяет какое...</summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<a name="NAME"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ИМЯ </h1>
<p>Mojolicious::Guides::Cheatsheet - Справочное руководство</p>
<a name="OVERVIEW"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ОПИСАНИЕ </h1>
<p>Этот документ содержит краткое справочное руководство.</p>
<a name="ENVIRONMENT-VARIABLES"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ </h1>
<p>Многие части <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> могут быть настроены с помощью переменных
окружения. Переменные для отладки не рассматриваются, так как их применяют
только в процессе разработки.</p>
<a name="MOJO_APP"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_APP</span></code></h2>
<p>Определяет какое будет использоваться <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> или <a href="http://search.cpan.org/perldoc/Mojo">Mojo</a> приложение.
Должно всегда содержать имя класса наподобие <code class="inline"><span class="w">MyApp</span></code>. Для удобства по
умолчанию содержит <a href="http://search.cpan.org/perldoc/Mojo::HelloWorld">Mojo::HelloWorld</a>.</p>
<pre><span class="w">MOJO_APP</span>=<span class="w">MyApp</span>
</pre><a name="MOJO_CA_FILE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_CA_FILE</span></code></h2>
<p>Путь к файлу с TLS CA доверенностями, должен всегда содержать путь в виде
<code class="inline">/etc/tls/cacarts.pem</code>. Стоить помнить, что для поддержки TLS необходимо
установить модуль <a href="http://search.cpan.org/perldoc/IO::Socket::SSL">IO::Socket::SSL</a>.</p>
<pre>MOJO_CA_FILE=/etc/tls/cacerts.pem</pre><a name="MOJO_CHUNK_SIZE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_CHUNK_SIZE</span></code></h2>
<p>Размер фрагмента данных для операций ввода-вывода в байтах, большие значения
ускоряют операции ввода-вывода, однако приводят к увеличению используемого
объема памяти.</p>
<pre><span class="w">MOJO_CHUNK_SIZE</span>=<span class="n">1024</span>
</pre><a name="MOJO_EPOLL"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_EPOLL</span></code></h2>
<p>Принудительное использование epoll в качестве основного цикла для операций
ввода-вывода. Стоит помнить, что для поддержки epoll необходимо установить
модуль <a href="http://search.cpan.org/perldoc/IO::Epoll">IO::Epoll</a>.</p>
<pre><span class="w">MOJO_EPOLL</span>=<span class="n">1</span>
</pre><a name="MOJO_HOME"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_HOME</span></code></h2>
<p>Домашний каталог <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> приложения, переменная должна всегда содержать
путь в виде <code class="inline">/home/sri/myapp</code>.</p>
<pre>MOJO_HOME=/home/sri/myapp</pre><a name="MOJO_KQUEUE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_KQUEUE</span></code></h2>
<p>Принудительное использование kqueue в качестве основного цикла для операций
ввода-вывода. Стоит помнить, что для поддержки kqueue необходимо установить
модуль <a href="http://search.cpan.org/perldoc/IO::KQueue">IO::KQueue</a>.</p>
<pre><span class="w">MOJO_KQUEUE</span>=<span class="n">1</span>
</pre><a name="MOJO_LOG_LEVEL"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_LOG_LEVEL</span></code></h2>
<p>Данная переменная устанавливает уровень подробности ведения журнала
<a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> приложением и должна содержать правильный уровень, например
<code class="inline"><span class="w">debug</span></code> или <code class="inline"><span class="w">error</span></code>.</p>
<pre><span class="w">MOJO_LOG_LEVEL</span>=<span class="w">debug</span>
<span class="w">MOJO_LOG_LEVEL</span>=<span class="w">error</span>
</pre><a name="MOJO_MAX_LINE_SIZE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_MAX_LINE_SIZE</span></code></h2>
<p>Максимальный размер строки HTTP сообщения для начальной строки и заголовков в
байтах, по умолчанию <code class="inline"><span class="n">10240</span></code>.</p>
<pre><span class="w">MOJO_MAX_LINE_SIZE</span>=<span class="n">2048</span>
</pre><a name="MOJO_MAX_MEMORY_SIZE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_MAX_MEMORY_SIZE</span></code></h2>
<p>Максимальный размер в байтах HTTP данных для хранения в памяти, при большем
размере данные записываются во временные файлы, по умолчанию <code class="inline"><span class="n">24576</span></code>.</p>
<pre><span class="w">MOJO_MAX_MEMORY_SIZE</span>=<span class="n">2048</span>
</pre><a name="MOJO_MAX_MESSAGE_SIZE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_MAX_MESSAGE_SIZE</span></code></h2>
<p>Максимальный размер HTTP сообщения в байтах, по умолчанию <code class="inline"><span class="n">524288</span></code>.</p>
<pre><span class="w">MOJO_MAX_MESSAGE_SIZE</span>=<span class="n">1024</span>
</pre><a name="MOJO_MODE"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_MODE</span></code></h2>
<p>Режим запуска <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> приложения, переменная должна содержать правильный
режим в виде <code class="inline"><span class="w">development</span></code> или <code class="inline"><span class="w">production</span></code>.</p>
<pre><span class="w">MOJO_MODE</span>=<span class="w">development</span>
<span class="w">MOJO_MODE</span>=<span class="w">production</span>
</pre><a name="MOJO_NO_IPV6"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_NO_IPV6</span></code></h2>
<p>Отключение поддержки IPv6 может улучшить производительность и сэкономить
память. Для поддержки IPv6 должен быть установлен модуль <a href="http://search.cpan.org/perldoc/IO::Socket::INET6">IO::Socket::INET6</a>.</p>
<pre><span class="w">MOJO_NO_IPV6</span>=<span class="n">1</span>
</pre><a name="MOJO_NO_TLS"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_NO_TLS</span></code></h2>
<p>Отключение поддержки TLS может улучшить производительность и сэкономить память.
Для поддержки TLS должен быть установлен модуль <a href="http://search.cpan.org/perldoc/IO::Socket::SSL">IO::Socket::SSL</a>.</p>
<pre><span class="w">MOJO_NO_TLS</span>=<span class="n">1</span>
</pre><a name="MOJO_POLL"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_POLL</span></code></h2>
<p>Принудительное использование poll в качестве основного цикла для операций
ввода-вывода. Это должно быть использовано только для тестирования, так как
другие основные циклы значительно быстрее и лучше масштабируются.</p>
<pre><span class="w">MOJO_POLL</span>=<span class="n">1</span>
</pre><a name="MOJO_RELOAD"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_RELOAD</span></code></h2>
<p>Включите перезагрузку <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> приложения и все изменения в коде будут
обнаруживаться автоматически, что исключает необходимость ручного перезапуска
сервера.</p>
<pre><span class="w">MOJO_RELOAD</span>=<span class="n">1</span>
</pre><a name="MOJO_REVERSE_PROXY"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_REVERSE_PROXY</span></code></h2>
<p>Включить поддержку обратного проксирования для <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> приложения.</p>
<pre><span class="w">MOJO_REVERSE_PROXY</span>=<span class="n">1</span>
</pre><a name="MOJO_TEMPLATE_CLASS"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_TEMPLATE_CLASS</span></code></h2>
<p>Класс, который <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> рендерер должен использовать для нахождения
шаблонов в секции <code class="inline"><span class="w">DATA</span></code>, по умолчанию <code class="inline"><span class="w">main</span></code>.</p>
<pre><span class="w">MOJO_TEMPLATE_CLASS</span>=<span class="w">MyApp</span>
</pre><a name="MOJO_TMPDIR"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline" style="background: inherit; border:0px;"><span class="w">MOJO_TMPDIR</span></code></h2>
<p>Каталог временных файлов, например для больших загружаемых файлов, по умолчанию
используется случайная временная директория на данной платформе.</p>
<pre>MOJO_TMPDIR=/tmp/mojo</pre>

<hr>
<div style="margin-left: 10px;">
<p>
<small>Copyright (&copy;) 2008-2010, Sebastian Riedel.<br>
Оригинал (английский): <a href="http://github.com/kraih/mojo/raw/master/lib/Mojolicious/Guides/Cheatsheet.pod">Mojolicious Reference</a></small>
<br><small>Перевод: &copy;
    <a href="http://translated.by/vti/">vti</a>, 
    <a href="http://translated.by/r3code/">Дмитрий</a>, 
    <a href="http://translated.by/klik-klik/">klik-klik</a>           .

</small>
<br><small><a href="http://translated.by/you/mojolicious-reference/into-ru/">translated.by</a> переведено толпой </small>
</p>
</div>]]>
        
    </content>
</entry>

<entry>
    <title>Mojolicious - атрибуты и методы - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/07/mojolicious-attr-and-methods.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.26</id>

    <published>2010-07-13T12:58:37Z</published>
    <updated>2010-07-13T13:21:30Z</updated>

    <summary><![CDATA[ Статья является частью документации Mojolicious АТРИБУТЫ Mojolicious наследует все атрибуты из Mojo и реализует следующие новые. controller_class my $class = $mojo-&gt;controller_class; $mojo = $mojo-&gt;controller_class(&#39;Mojolicious::Controller&#39;); Класс который будет использоваться в качестве контроллера, по умолчанию используется Mojolicious::Controller. mode my $mode =...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[<p>
Статья является частью документации  <a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a>
</p>


<a name="ATTRIBUTES"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">АТРИБУТЫ </h1>
<p><a href="http://perl5doc.ru/cpan/Mojolicious">Mojolicious</a> наследует все атрибуты из <a href="http://search.cpan.org/perldoc/Mojo">Mojo</a> и реализует следующие новые.</p>
<a name="controller_class"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">controller_class</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$class</span> = <span class="i">$mojo</span><span class="i">-&gt;controller_class</span><span class="sc">;</span>
<span class="i">$mojo</span>     = <span class="i">$mojo</span><span class="i">-&gt;controller_class</span><span class="s">(</span><span class="q">&#39;Mojolicious::Controller&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Класс который будет использоваться в качестве контроллера, по умолчанию используется <a href="http://search.cpan.org/perldoc/Mojolicious::Controller">Mojolicious::Controller</a>.</p>
<a name="mode"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">mode</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$mode</span> = <span class="i">$mojo</span><span class="i">-&gt;mode</span><span class="sc">;</span>
<span class="i">$mojo</span>    = <span class="i">$mojo</span><span class="i">-&gt;mode</span><span class="s">(</span><span class="q">&#39;production&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Режим работы для вашего приложения.
По умолчанию используется  значение переменной окружения <code class="inline"><span class="w">MOJO_MODE</span></code> или <code class="inline"><span class="w">development</span></code>.
Mojo назовёт лог-файл по текущему режиму; если режим отличается от <code class="inline"><span class="w">development</span></code>, логи будут ограничены.</p>
<p>Если вы хотите добавить в ваше приложение логику, зависящую от режима, 
можете добавить подпрограмму <code class="inline"><span class="i">$mode_mode</span></code>.</p>
<pre><a name="development_mode"></a>sub <span class="m">development_mode</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
<span class="s">}</span>

<a name="production_mode"></a>sub <span class="m">production_mode</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
<span class="s">}</span>
</pre><a name="plugins"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">plugins</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$plugins</span> = <span class="i">$mojo</span><span class="i">-&gt;plugins</span><span class="sc">;</span>
<span class="i">$mojo</span>       = <span class="i">$mojo</span><span class="i">-&gt;plugins</span><span class="s">(</span><span class="w">Mojolicious::Plugins</span><span class="w">-&gt;new</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Загрузчик плагина по умолчанию &mdash; объект <a href="http://search.cpan.org/perldoc/Mojolicious::Plugins">Mojolicious::Plugins</a>. 
Обычно вы можете оставить всё как есть, см. <a href="http://search.cpan.org/perldoc/Mojolicious::Plugin">Mojolicious::Plugin</a>, если хотите написать плагин.</p>
<a name="renderer"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">renderer</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$renderer</span> = <span class="i">$mojo</span><span class="i">-&gt;renderer</span><span class="sc">;</span>
<span class="i">$mojo</span>        = <span class="i">$mojo</span><span class="i">-&gt;renderer</span><span class="s">(</span><span class="w">MojoX::Renderer</span><span class="w">-&gt;new</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Используется для визуализации контента, по умолчанию <a href="http://search.cpan.org/perldoc/MojoX::Render">MojoX::Render</a>.
Два основных плагина визуализации <a href="http://search.cpan.org/perldoc/Mojolicious::Plugin::EpRenderer">Mojolicious::Plugin::EpRenderer</a> 
и <a href="http://search.cpan.org/perldoc/Mojolicious::Plugin::EplRenderer">Mojolicious::Plugin::EplRenderer</a> содержат более подробную информацию.</p>
<a name="routes"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">routes</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$routes</span> = <span class="i">$mojo</span><span class="i">-&gt;routes</span><span class="sc">;</span>
<span class="i">$mojo</span>      = <span class="i">$mojo</span><span class="i">-&gt;routes</span><span class="s">(</span><span class="w">MojoX::Dispatcher::Routes</span><span class="w">-&gt;new</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Диспетчер маршрутов, по умолчанию <a href="http://search.cpan.org/perldoc/MojoX::Dispatcher::Routes">MojoX::Dispatcher::Routes</a>. 
Вы используете его в стартовом методе для определения конечных точек url (анг. url endpoints) для вашего приложения.</p>
<pre><a name="startup"></a>sub <span class="m">startup</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>

    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$r</span> = <span class="i">$self</span><span class="i">-&gt;routes</span><span class="sc">;</span>
    <span class="i">$r</span><span class="i">-&gt;route</span><span class="s">(</span><span class="q">&#39;/:controller/:action&#39;</span><span class="s">)</span><span class="i">-&gt;to</span><span class="s">(</span><span class="q">&#39;test#welcome&#39;</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span>
</pre><a name="secret"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">secret</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$secret</span> = <span class="i">$mojo</span><span class="i">-&gt;secret</span><span class="sc">;</span>
<span class="i">$mojo</span>      = <span class="i">$mojo</span><span class="i">-&gt;secret</span><span class="s">(</span><span class="q">&#39;passw0rd&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Секретный пароль, используемый для подписанных cookies и т.п., по умолчанию 
&mdash; название приложения, что не очень надежно, поэтому вы должны изменить
его!!! До тех пор, пока вы будете использовать значение по умолчанию, 
в лог файл будут писаться отладочные сообщения с напоминанием о смене пароля.</p>
<a name="static"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">static</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$static</span> = <span class="i">$mojo</span><span class="i">-&gt;static</span><span class="sc">;</span>
<span class="i">$mojo</span>      = <span class="i">$mojo</span><span class="i">-&gt;static</span><span class="s">(</span><span class="w">MojoX::Dispatcher::Static</span><span class="w">-&gt;new</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Для обслуживания статических ресурсов из каталога <code class="inline"><span class="w">public</span></code>, по
умолчанию <a href="http://search.cpan.org/perldoc/MojoX::Dispatcher::Static">MojoX::Dispatcher::Static</a>.</p>
<a name="types"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">types</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$types</span> = <span class="i">$mojo</span><span class="i">-&gt;types</span><span class="sc">;</span>
<span class="i">$mojo</span>     = <span class="i">$mojo</span><span class="i">-&gt;types</span><span class="s">(</span><span class="w">MojoX::Types</span><span class="w">-&gt;new</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Отвечает за отслеживание типов контента, который вы хотите
обслуживать в приложении, по умолчанию <a href="http://search.cpan.org/perldoc/MojoX::Types">MojoX::Types</a>. 
Вы можете легко зарегистрировать новый тип.</p>
<pre><span class="i">$mojo</span><span class="i">-&gt;types</span><span class="i">-&gt;type</span><span class="s">(</span><span class="w">vti</span> <span class="cm">=&gt;</span> <span class="q">&#39;help/vampire&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><a name="METHODS"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">МЕТОДЫ </h1>
<p><a href="http://search.cpan.org/perldoc/Mojolicious">Mojolicious</a> наследует все методы от <a href="http://search.cpan.org/perldoc/Mojo">Mojo</a> и реализует следующие новые.</p>
<a name="new"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">new</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$mojo</span> = <span class="w">Mojolicious</span><span class="w">-&gt;new</span><span class="sc">;</span>
</pre><p>Создаёт новое приложение <a href="http://search.cpan.org/perldoc/Mojolicious">Mojolicious</a>. 
Автоматически определяет ваш домашний каталог и устанавливает логирование, 
основываясь на вашем текущем режиме работы. Кроме того, устанавливается 
маршрутизация, статическая диспетчеризация и стандартный набор плагинов.</p>
<a name="defaults"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">defaults</span></code></h2>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$defaults</span> = <span class="i">$mojo</span><span class="i">-&gt;default</span><span class="sc">;</span>
<a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$foo</span>      = <span class="i">$mojo</span><span class="i">-&gt;defaults</span><span class="s">(</span><span class="q">&#39;foo&#39;</span><span class="s">)</span><span class="sc">;</span>
<span class="i">$mojo</span>        = <span class="i">$mojo</span><span class="i">-&gt;defaults</span><span class="s">(</span><span class="s">{</span><span class="w">foo</span> <span class="cm">=&gt;</span> <span class="q">&#39;bar&#39;</span><span class="s">}</span><span class="s">)</span><span class="sc">;</span>
<span class="i">$mojo</span>        = <span class="i">$mojo</span><span class="i">-&gt;defaults</span><span class="s">(</span><span class="w">foo</span> <span class="cm">=&gt;</span> <span class="q">&#39;bar&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Значения по умолчанию для stash.
Обратите внимание, что этот метод ЭКСПЕРИМЕНТАЛЬНЫЙ и может быть изменен без предупреждения!</p>
<pre><span class="i">$mojo</span><span class="i">-&gt;defaults</span>-&gt;{<span class="w">foo</span>} = <span class="q">&#39;bar&#39;</span><span class="sc">;</span>
<a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$foo</span> = <span class="i">$mojo</span><span class="i">-&gt;defaults</span>-&gt;{<span class="w">foo</span>}<span class="sc">;</span>
<a class="l_k" href="http://perl5doc.ru/en/f-delete">delete</a> <span class="i">$mojo</span><span class="i">-&gt;defaults</span>-&gt;{<span class="w">foo</span>}<span class="sc">;</span>
</pre><a name="dispatch"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">dispatch</span></code></h2>
<pre><span class="i">$mojo</span><span class="i">-&gt;dispatch</span><span class="s">(</span><span class="i">$c</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Сердце каждого приложения Mojolicious, вызывает диспетчеры 
статических файлов и маршрутов для каждого запроса.</p>
<a name="finish"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">finish</span></code></h2>
<pre><span class="i">$mojo</span><span class="i">-&gt;finish</span><span class="s">(</span><span class="i">$c</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Чистка после обработки запроса, как правило, вызывается автоматически.</p>
<a name="handler"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">handler</span></code></h2>
<pre><span class="i">$tx</span> = <span class="i">$mojo</span><span class="i">-&gt;handler</span><span class="s">(</span><span class="i">$tx</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Устанавливает контроллер по умолчанию и вызывает процесс для каждого запроса.</p>
<a name="plugin"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">plugin</span></code></h2>
<pre><span class="i">$mojo</span><span class="i">-&gt;plugin</span><span class="s">(</span><span class="q">&#39;something&#39;</span><span class="s">)</span><span class="sc">;</span>
<span class="i">$mojo</span><span class="i">-&gt;plugin</span><span class="s">(</span><span class="q">&#39;something&#39;</span><span class="cm">,</span> <span class="w">foo</span> <span class="cm">=&gt;</span> <span class="n">23</span><span class="s">)</span><span class="sc">;</span>
<span class="i">$mojo</span><span class="i">-&gt;plugin</span><span class="s">(</span><span class="q">&#39;something&#39;</span><span class="cm">,</span> <span class="s">{</span><span class="w">foo</span> <span class="cm">=&gt;</span> <span class="n">23</span><span class="s">}</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Загрузка плагина.</p>
<a name="process"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">process</span></code></h2>
<pre><span class="i">$mojo</span><span class="i">-&gt;process</span><span class="s">(</span><span class="i">$c</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Данный метод может быть перегружен, чтобы сделать логику, 
зависящую от запроса, по умолчанию просто вызывает <code class="inline"><span class="w">dispatch</span></code>.
Вообще-то, вместо него вы будете использовать плагин или контроллер, 
рассматривая его кувалду в вашем набор инструментов.</p>
<pre><a name="process"></a>sub <span class="m">process</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="s">(</span><span class="i">$self</span><span class="cm">,</span> <span class="i">$c</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
    <span class="i">$self</span><span class="i">-&gt;dispatch</span><span class="s">(</span><span class="i">$c</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span>
</pre><a name="start"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">start</span></code></h2>
<pre><span class="w">Mojolicious</span><span class="w">-&gt;start</span><span class="sc">;</span>
<span class="w">Mojolicious</span><span class="w">-&gt;start</span><span class="s">(</span><span class="q">&#39;daemon&#39;</span><span class="s">)</span><span class="sc">;</span>
</pre><p>Запускает интерфейс командной строки <a href="http://search.cpan.org/perldoc/Mojolicious::Commands">Mojolicious::Commands</a>  для
вашего приложения</p>
<a name="startup"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;"><code class="inline"><span class="w">startup</span></code></h2>
<pre><span class="i">$mojo</span><span class="i">-&gt;startup</span><span class="sc">;</span>
</pre><p>Это ваш основной хук в приложении, он будет вызываться при запуске.</p>
<pre><a name="startup"></a>sub <span class="m">startup</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
<span class="s">}</span>
</pre>]]>
        
    </content>
</entry>

<entry>
    <title>Mojolicious - обзор возможностей фреймворка - Модули CPAN</title>
    <link rel="alternate" type="text/html" href="http://blog.perl5doc.ru/cpan_modules/2010/07/mojolicious-depiction.html" />
    <id>tag:blog.perl5doc.ru,2010:/cpan_modules//5.24</id>

    <published>2010-07-11T19:48:44Z</published>
    <updated>2010-07-11T20:28:18Z</updated>

    <summary><![CDATA[ НАЗВАНИЕ Mojolicious - Веб в коробке! СИНОПСИС # Mojolicious приложение package MyApp; use base &#39;Mojolicious&#39;; sub startup { my $self = shift; # Routes my $r = $self-&gt;routes; # Default route $r-&gt;route(&#39;/:controller/:action/:id&#39;)-&gt;to(&#39;foo#welcome&#39;); } # Mojolicious контроллер package MyApp::Foo; use...]]></summary>
    <author>
        <name>Dinar</name>
        
    </author>
    
        <category term="Mojolicious" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.perl5doc.ru/cpan_modules/">
        <![CDATA[
<a name="NAME"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">НАЗВАНИЕ </h1>
<p>Mojolicious - Веб в коробке!</p>
<a name="SYNOPSIS"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">СИНОПСИС </h1>
<pre><span class="c"># Mojolicious приложение </span>
<a name="package-MyApp"></a>package <span class="i">MyApp</span><span class="sc">;</span>

<a class="l_k" href="http://perl5doc.ru/en/f-use">use</a> <span class="w">base</span> <span class="q">&#39;Mojolicious&#39;</span><span class="sc">;</span>

<a name="startup"></a>sub <span class="m">startup</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>

    <span class="c"># Routes</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$r</span> = <span class="i">$self</span><span class="i">-&gt;routes</span><span class="sc">;</span>

    <span class="c"># Default route</span>
    <span class="i">$r</span><span class="i">-&gt;route</span><span class="s">(</span><span class="q">&#39;/:controller/:action/:id&#39;</span><span class="s">)</span><span class="i">-&gt;to</span><span class="s">(</span><span class="q">&#39;foo#welcome&#39;</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span>

<span class="c"># Mojolicious контроллер </span>
<a name="package-MyApp::Foo"></a>package <span class="i">MyApp::Foo</span><span class="sc">;</span>

<a class="l_k" href="http://perl5doc.ru/en/f-use">use</a> <span class="w">base</span> <span class="q">&#39;Mojolicious::Controller&#39;</span><span class="sc">;</span>

<span class="c"># Say hello</span>
<a name="welcome"></a>sub <span class="m">welcome</span> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
    <span class="i">$self</span><span class="i">-&gt;render_text</span><span class="s">(</span><span class="q">&#39;Hi there!&#39;</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span>

<span class="c"># Say goodbye from a template (foo/bye.html.ep)</span>
<a name="bye"></a>sub <span class="m">bye</span> <span class="s">{</span> <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="i">-&gt;render</span> <span class="s">}</span>
</pre><a name="DESCRIPTION"></a><h1 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">ОПИСАНИЕ </h1>
<p>Еще в начале дня Интернета была эта прекрасная библиотека Perl называемая
<a href="http://perl5doc.ru/en/CGI">CGI</a>, многие люди изучали Perl только из за неё.  Она достаточно проста,
чтобы начать работу, не зная многого о языке и достаточно мощна, чтобы держать
вас в курсе обо всем, что происходит с приложением, обучение на практике
было очень увлекательно.  Хотя большинство методов, используемых в настоящее время
устарело, сама идея остается актуальной.  <a href="http://search.cpan.org/perldoc/Mojolicious">Mojolicious</a> это новая
попытка реализации этой идеи c использованием передовых технологий.</p>
<a name="Features"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Возможности </h2>
<ul>
<li>
<p>Великолепный MVC веб-фреймворк, позволяющий написать полноценное приложение в одном файле</p>
</li>
<li>
<p>Очень чистый, портативный и объектно-ориентированный чистый Perl API без
какой-либо скрытой магии и никаких требований, кроме как поддержка 
Perl начиная с версии 5.8.7.</p>
</li>
<li>
<p>Полная поддержка HTTP 1.1 и WebSocket клиент/серверая реализация с IPv6,
TLS, IDNA, pinelining, распределение памяти и поддержка multipart.</p>
</li>
<li>
<p>Встроенный асинхронный ввод-вывод, prefork-веб с поддержкой epoll и 
kqueue, &quot;горячая&quot; разработка и использование 
доменного сокета UNIX (анг. Unix domain socket sharing)</p>
</li>
<li>
<p>Поддержка CGI, FastCGI и <a href="http://search.cpan.org/perldoc/PSGI">PSGI</a>.</p>
</li>
<li>
<p>Свежий код, основанный на многолетнем опыте разработки Catalyst.</p>
</li>
<li>
<p>Мощные возможности из коробки с RESTful роутерами, плагинами, сессиями,
signed cookies, сервером статических файлов (static file server),
тестированием фреймворка, шаблонизацией в стиле perl, JSON, I18N,</p>
</li>
</ul>
<a name="Duct-Tape-for-HTML5-Web"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">Duct Tape для HTML5 Web  </h2>
<p>Веб-разработка для людей, делающих сложные вещи возможными 
и прочие развлечения.</p>
<pre><a class="l_k" href="http://perl5doc.ru/en/f-use">use</a> <span class="w">Mojolicious::Lite</span><span class="sc">;</span>

<span class="w">get</span> <span class="q">&#39;/hello&#39;</span> <span class="cm">=&gt;</span> <a class="l_k" href="http://perl5doc.ru/en/f-sub">sub</a> <span class="s">{</span> <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="i">-&gt;render</span><span class="s">(</span><span class="w">text</span> <span class="cm">=&gt;</span> <span class="q">&#39;Hello World!&#39;</span><span class="s">)</span> <span class="s">}</span>

<span class="w">get</span> <span class="q">&#39;/time&#39;</span> <span class="cm">=&gt;</span> <span class="q">&#39;clock&#39;</span><span class="sc">;</span>

<span class="w">websocket</span> <span class="q">&#39;/echo&#39;</span> <span class="cm">=&gt;</span> <a class="l_k" href="http://perl5doc.ru/en/f-sub">sub</a> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
    <span class="i">$self</span><span class="i">-&gt;receive_message</span><span class="s">(</span>
        <a class="l_k" href="http://perl5doc.ru/en/f-sub">sub</a> <span class="s">{</span>
            <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="s">(</span><span class="i">$self</span><span class="cm">,</span> <span class="i">$message</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span>
            <span class="i">$self</span><span class="i">-&gt;send_message</span><span class="s">(</span><span class="q">&quot;echo: $message&quot;</span><span class="s">)</span><span class="sc">;</span>
        <span class="s">}</span>
    <span class="s">)</span><span class="sc">;</span>
<span class="s">}</span><span class="sc">;</span>

<span class="w">get</span> <span class="q">&#39;/title&#39;</span> <span class="cm">=&gt;</span> <a class="l_k" href="http://perl5doc.ru/en/f-sub">sub</a> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span> = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$url</span>  = <span class="i">$self</span><span class="i">-&gt;param</span><span class="s">(</span><span class="q">&#39;url&#39;</span><span class="s">)</span><span class="sc">;</span>
    <span class="i">$self</span><span class="i">-&gt;render</span><span class="s">(</span><span class="w">text</span> <span class="cm">=&gt;</span>
          <span class="i">$self</span><span class="i">-&gt;client</span><span class="i">-&gt;get</span><span class="s">(</span><span class="i">$url</span><span class="s">)</span><span class="i">-&gt;success</span><span class="i">-&gt;dom</span><span class="i">-&gt;at</span><span class="s">(</span><span class="q">&#39;title&#39;</span><span class="s">)</span><span class="i">-&gt;text</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span><span class="sc">;</span>

<span class="w">post</span> <span class="q">&#39;/:offset&#39;</span> <span class="cm">=&gt;</span> <a class="l_k" href="http://perl5doc.ru/en/f-sub">sub</a> <span class="s">{</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$self</span>   = <a class="l_k" href="http://perl5doc.ru/en/f-shift">shift</a><span class="sc">;</span>
    <a class="l_k" href="http://perl5doc.ru/en/f-my">my</a> <span class="i">$offset</span> = <span class="i">$self</span><span class="i">-&gt;param</span><span class="s">(</span><span class="q">&#39;offset&#39;</span><span class="s">)</span> || <span class="n">23</span><span class="sc">;</span>
    <span class="i">$self</span><span class="i">-&gt;render</span><span class="s">(</span><span class="w">json</span> <span class="cm">=&gt;</span> <span class="s">{</span><span class="w">list</span> <span class="cm">=&gt;</span> <span class="s">[</span><span class="n">0</span> .. <span class="i">$offset</span><span class="s">]</span><span class="s">}</span><span class="s">)</span><span class="sc">;</span>
<span class="s">}</span><span class="sc">;</span>

<span class="w">app</span><span class="w">-&gt;start</span><span class="sc">;</span>
<a name="__DATA__"></a>__DATA__

<span class="q">@@ clock.html.ep</span>
<span class="q">% my ($second, $minute, $hour) = (localtime(time))[0, 1, 2];</span>
<span class="q">The time is &lt;%= $hour %&gt;:&lt;%= $minute %&gt;:&lt;%= $second %&gt;.</span>
</pre><p>См. более дружественную к пользователю документацию <a href="http://search.cpan.org/perldoc/Mojolicious::Guides">Mojolicious::Guides</a>
и <a href="http://search.cpan.org/perldoc/Mojolicious::Lite">Mojolicious::Lite</a>.</p>
<p>

</p>
<a name="Вот-такие-пироги-(Have-Some-Cake)"></a><h2 style="font-weight: bold; border-bottom:1px solid #AAAAAA;">&#x412;&#x43E;&#x442; &#x442;&#x430;&#x43A;&#x438;&#x435; &#x43F;&#x438;&#x440;&#x43E;&#x433;&#x438; (Have Some Cake)</h2>
<pre>.---------------------------------------------------------------.
|                             Fun!                              |
'---------------------------------------------------------------'
.---------------------------------------------------------------.
|                                                               |
|                .----------------------------------------------'
|                | .--------------------------------------------.
|   Application  | |              Mojolicious::Lite             |
|                | '--------------------------------------------'
|                | .--------------------------------------------.
|                | |                 Mojolicious                |
'----------------' '--------------------------------------------'
.---------------------------------------------------------------.
|                             Mojo                              |
'---------------------------------------------------------------'
.-------. .-----------. .--------. .------------. .-------------.
|  CGI  | |  FastCGI  | |  PSGI  | |  HTTP 1.1  | |  WebSocket  |
'-------' '-----------' '--------' '------------' '-------------'</pre>

<p>
Хорошим дополнением к документации Mojolicious послужит приведенная ниже презентация:
</p>
<div style="width:425px" id="__ss_3693255"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/rit2010/mojolicious-3693255" title="анатолий шарифулин Mojolicious   финальная версия">анатолий шарифулин Mojolicious   финальная версия</a></strong><object id="__sse3693255" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mojolicious-100411173321-phpapp01&stripped_title=mojolicious-3693255" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3693255" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mojolicious-100411173321-phpapp01&stripped_title=mojolicious-3693255" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/rit2010">rit2010</a>.</div></div>]]>
        
    </content>
</entry>

</feed>

