Очередная спорная заметка. Я точно знаю, что в ИТ-сообществе много людей, которые очень близко знакомы с темой эзотерики. Хотя, как правило, они умело "шифруются", не афишируют свои взгляды и опыты. Но человеку, который не первый год в теме, не составит труда выявить сообщника по каким-то особым речевым оборотам, случайно сказанным словам и терминологии, образу жизни и прочим признакам. Эта небольшая подборка книг - специально для тех программистов, кто интересуется эзотерикой.
Catalyst::Engine
Методы
Примечание: логика работы Catalyst с движками, изменилась, начиная с версии 5.9. В данном случае по большей части рассматривается версия 5.8. Начиная с версии Catalyst 5.9 прекратилась поддержка множества движков, в том числе был удален модуль Catalyst::Engine::HTTP .
$self->finalize_body($c)
Получает подготовленный $c->response->body и пишет данные в буфер, на вывод.
$self->finalize_cookies($c)
Создает объект CGI::Simple::Cookie на основе $c->res->cookies, и добавляет cookies в заголовки ответа.
$self->finalize_error($c)
Метод формирует html-страницу для вывода сообщения об ошибке, передает ее объекту Response - $c->res->{body}.
Выведет ошибку, если Catalyst находится в режиме отладки (установлен $c->debug), или сообщение 'please come back later' в другом случае.
Вызывается в модуле Catalyst.pm :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
my $engine = $c->engine; if ( my $code = $engine->can('finalize') ) { $engine->$code($c); } else { $c->finalize_uploads; # Error if ( $#{ $c->error } >= 0 ) { $c->finalize_error; } ... } |
$self->finalize_headers($c)
Абстрактный метод, переопределяется в конкретных движках. Позволяет движкам записать отправить в ответе заголовки.
$self->finalize_uploads($c)
Удаление временных файлов после выполненных загрузок.
$self->prepare_body($c)
Устанавливает Catalyst::Request с использованием HTTP::Body.
$self->prepare_body_chunk($c)
Считывает блок входящих данных и добавляет его в тело запроса.
prepare_connection($c)
Абстрактный метод, реализуется в конкретном движке.
$self->prepare_path($c)
Абстрактный метод, реализуется в конкретном движке.
$self->prepare_request($c)
$self->prepare_query_parameters($c)
Обрабатывает строку запроса и извлекает из нее параметры. Добавляет параметры в $c->request().
$self->prepare_read($c)
Подготовка к чтению входящих данных из сокета.
$self->prepare_request(@arguments)
Заполняет context-объект данными из объекта запроса.
$self->prepare_uploads($c)
Подготавливает загружаемые данные для дальнейшей работы.
$self->write($c, $buffer)
Абстрактный метод, реализуется в движке. Делает запись в буфер клиента.
$self->read($c, [$maxlength])
Читает данные из входящего потока с помощью вызова "$self->read_chunk".
$self->read_chunk($c, \$buffer, $length)
Метод read_chunk реализуется в конкретном движке. Метод должен выполнять чтение блока данных из входящего потока.
$self->run($app, $server)
Метод должен быть переопределен в конкретном движке. Запускает движок. Создает сокеты, организует процесс приема запросов, их обработки и отправки ответов клиентам.
В Catalyst версии 5.9 работа этого метода уже организована по-другому.
$self->unescape_uri($uri)
Возвращает непреобразованный URI.
$self->env
Хэш содержащий информацию о переменных окружения, включая многие специальные переменные, добавленные сервером, такие как SERVER_*, REMOTE_*, HTTP_* и т.д.
Лучшие книги о Perl
На блоге dev-lab.info уже были заметки про книги о perl. Но на тот момент, это были первые заметки о книгах вообще, и формат, в котором я их опубликовала, сильно отличался от того, какой стала использовать позднее. Решила, что пришло время переработать эти несколько страниц и объединить в одну.
Ниже - список хороших книг о perl, которыми я продолжаю пользоваться в качестве справочников или те, которые мне просто когда-то помогли.
Логика работы Catalyst. Часть 1
Заметка по логике работы Catalyst. В данной заметке я не ставлю перед собой цели написать понятный текст :) , не знаю, возможно ли это вообще, когда речь идет о логике Catalyst. Только сохранить для себя важные моменты, куски кода. Но возможно, кому-то пригодится.
Попытка разобраться в логике запуска стандартного сервера Catalyst-приложения.
Ниже приведено очень много кода из модулей Catalyst-фреймворка и простого Catalyst-приложения. Весь код приведен с большими сокращениями.
Лучшие книги о кулинарии
Сегодня заметка не о программировании, просто делюсь очередной информацией о книгах. Возможно, кому-то пригодится.
Книг о кулинарии - огромное множество. Хороших - почти нет. Книги красивые, но когда начинаешь готовить по ним, получается либо не вкусно, либо совсем не то, что ожидал, рассматривая изображения. Другой вариант - слишком сложные рецепты, на которые надо потратить несколько часов, с ингредиентами, за которыми приходится ездить по всему городу.
Мне нравится праздничная кулинария, но ежедневная кухня тоже должна быть интересной, разнообразной, и вот именно для ежедневной готовки большинство книг не подходят.
Cложно удержаться от покупки, когда вижу отличную по всем параметрам книгу. В моей коллекции побывало много разных книг. Покупала, готовила пару раз и избавлялась, оставляя в подъезде на батарее, отдавая знакомым.
Ниже - список книг, которые я давно купила, сохранила и продолжаю ими пользоваться каждый день.
Catalyst::ScriptRunner
|
1 2 |
use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('MyApp', 'Create'); |
Модуль отвечает за загрузку и запуск скриптов в пространстве имен приложения (например, MyApp::Script::Server), или в пространстве имен Catalyst (например, Catalyst::Script::Server).
Catalyst::Stats
Catalyst::Stats - класс Catalyst, работа со статистикой, измерение времени выполнения отдельных экшенов.
Модуль Catalyst::Stats используется по-умолчанию, для вывода информации в логе Сatalyst-приложения. Если вы хотите заменить стандартный модуль чем-то своим, понадобится внести изменения в конфиг MyApp.pm:
|
1 |
__PACKAGE__->stats_class( "My::Stats" ); |
Как изменить окончания строк и удалить в тексте ^M . Как изменить кодировку файла
Файлы в ASCII-кодировке или совместимом наборе символов, для обозначения конца строки используют символы:
- LF (от англ. Line feed (перевод строки), 0x0A)
- CR (от англ. Carriage Return, 0x0D)
- CRLF (т.е. оба символа).
В windows-системах обычно используется CRLF, в unix - LF . В web-разработке преимущественно используются unix-системы, и как следствие, принято, чтобы в файлах окончания строк обозначались с помощью LF.
Devel::InnerPackage
Модуль предоставляет всего одну функцию list_packages(), которая ищет все вложенные пакеты в указанном пакете и возвращает их названия в виде списка.
Как увеличить размер виртуального жесткого диска в VirtualBox
Проблема: на виртуальной рабочей машине неожиданно закончилось свободное место. Некоторое время ситуацию удавалось исправить, почистив логи. Но в конце концов настал тот момент, когда база данных и git-репозиторий разрослись настолько, что чистка логов перестала помогать.