Author Archives: Natalie

Catalyst, Sphinx и realtime индекс

Как создать realtime индекс Sphinx. Использование realtime индексов в Catalyst-приложении.

Эксперименты проводились на Sphinx версий 2.2.10 и 2.0.4.

Продолжаем развивать код из первой заметки про Sphinx. Возьмем его за основу и добавим в Catalyst использование realtime индекса.

Continue reading

Sphinx и Catalyst

Как реализовать поиск помощью Sphinx в Catalyst-приложении. Как создать приложение Catalyst, конфиги для Sphinx.

Приложение создавалось на Ubuntu 14.04, perl 5.18, Sphinx версии 2.2.10, модуль Sphinx::Search 0.29. Sphinx от версии к версии меняет функциональность и принципы работы, иногда очень значительно. Модуль Sphinx::Search тоже. Поэтому, не факт, что приведенный ниже код будет работать и у вас в неизменном виде.

В общем, собираясь углубиться в Sphinx тему, надо быть готовым к проблемам совместимости, версионности и т.п.

Continue reading

Настройка сети на гостевой ОС в VirtualBox (ssh, ftp)

  • Базовая система: Windows XP
  • VirtualBox v.4.3
  • Гостевая OS: Ubuntu 16.04 LTS xenial

На виртуальную машину была установлена Ubuntu. Сразу после этого потребовалось настроить к ней ssh-доступ (для более удобного взаимодействия).

Виртуальная машина используется только для “домашних” исследований и обучения. Поэтому, аспекты безопасности при настройке ssh и ftp не рассматриваются.

Continue reading

Как подключиться к базе данных mysql через SSH-туннель

Очень неудобно работать с БД через стандартный mysql-клиент, который доступен на удаленном сервере. Часто требуется делать сложные запросы, сравнивать результаты, быстро просматривать список таблиц – намного удобнее делать это через клиент с графическим интерфейсом.

Однако, обычно рабочее окружение настолько защищено, что просто так, с локального компьютера, к БД не подключишься. PhpMyAdmin на сервере тоже установлен далеко не всегда. Десктоп и графические приложения на удаленном сервере обычно не настроены.

Хороший вариант в таком случае – использовать SSH-туннель. SSH-доступ обычно есть у каждого разработчика бекенда. Как и при любом SSH-соединении, весь трафик между вами и БД будет шифроваться.

Continue reading

Лучшие эзотерические книги

Очередная спорная заметка. Я точно знаю, что в ИТ-сообществе много людей, которые очень близко знакомы с темой эзотерики. Хотя, как правило, они умело “шифруются”, не афишируют свои взгляды и опыты. Но человеку, который не первый год в теме, не составит труда выявить сообщника по каким-то особым речевым оборотам, случайно сказанным словам и терминологии, образу жизни и прочим признакам. Эта небольшая подборка книг – специально для тех программистов, кто интересуется эзотерикой.

Continue reading

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 :

$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, которыми я продолжаю пользоваться в качестве справочников или те, которые мне просто когда-то помогли.

Continue reading

Логика работы Catalyst. Часть 1

Заметка по логике работы Catalyst. В данной заметке я не ставлю перед собой цели написать понятный текст :) , не знаю, возможно ли это вообще, когда речь идет о логике Catalyst. Только сохранить для себя важные моменты, куски кода. Но возможно, кому-то пригодится.

Попытка разобраться в логике запуска стандартного сервера Catalyst-приложения.

Ниже приведено очень много кода из модулей Catalyst-фреймворка и простого Catalyst-приложения. Весь код приведен с большими сокращениями.

Continue reading

Лучшие книги о кулинарии

Сегодня заметка не о программировании, просто делюсь очередной информацией о книгах. Возможно, кому-то пригодится.

Книг о кулинарии – огромное множество. Хороших – почти нет. Книги красивые, но когда начинаешь готовить по ним, получается либо не вкусно, либо совсем не то, что ожидал, рассматривая изображения. Другой вариант – слишком сложные рецепты, на которые надо потратить несколько часов, с ингредиентами, за которыми приходится ездить по всему городу.

Мне нравится праздничная кулинария, но ежедневная кухня тоже должна быть интересной, разнообразной, и вот именно для ежедневной готовки большинство книг не подходят.

Cложно удержаться от покупки, когда вижу отличную по всем параметрам книгу. В моей коллекции побывало много разных книг. Покупала, готовила пару раз и избавлялась, оставляя в подъезде на батарее, отдавая знакомым.

Ниже – список книг, которые я давно купила, сохранила и продолжаю ими пользоваться каждый день.

Continue reading