Событийная машина POE и сетевая многозадачность.

24 сентября 2007 1:01
Тэги: , , ,
Оставить комментарий
Что такое событийная машина POE я кратко рассказывал в одной из предыдущих заметок.
Под сетевой многозадачностью будем понимать параллельную обработку входящих и/или исходящих сетевых соединений системными, либо прикладными приложениями.

Почему именно POE? Вопрос, конечно, требующий обоснования. Для начала рассмотрим какие вообще бывают способы обеспечения многозадачности. Я знаю три
  • параллельные процессы
  • событийные машины
  • многопоточность

Рассмотрим эти способы подробнее
В закладки: Запомнить эту страницу В МоёМесто Забобрить Delicious Digg Добавить новость на МойКруг

POE - portable multitasking and networking framework for Perl.

31 июля 2007 12:54
Тэги: ,
Оставить комментарий
А по-русски, платформонезависимый фреймворк для создания многозадачных и сетевых приложений на Perl.

POE позволяет достаточно просто и быстро создавать многозадачные приложения, особо не задумываясь об управлении процессами и другими приятными вещами, с которыми приходится сталкиваться при желании написать многозадачное приложение. Всю эту нагрузку на себя берет POE, мы лишь описываем, что мы хотим делать. В большинстве случаев все приложение выполняется одним процессом, но при необходимости, POE умеет порождать дочерние процессы и общаться с ними.

Читать далее...
В закладки: Запомнить эту страницу В МоёМесто Забобрить Delicious Digg Добавить новость на МойКруг

POE::Component::Client::HTTP

10 мая 2007 12:58
Тэги: ,
Оставить комментарий
Вот блин...
Неожиданно наткнулся на одну проблемку.
При написании скрипта на Perl нашел то ли баг, то ли не знаю что в модуле POE::Component::Client::HTTP. Дело в том, что во время выполнения запроса при получении объекта HTTP::Response в заголовке запроса исчезают куки. Вернее не исчезают, а остается только последняя. В версии клиента 0.57 (именно она ставится при помощи модуля ppm) все было нормально, в версиях 0.79 и 0.80 (последняя на сегодня) этот "баг" был мной обнаружен. Сейчас буду изучать код в поисках истины.

Нашел.
Перебрал весь код POE::Component::Client::HTTP. А дело оказалось даже не в нем
Проблема в POE::Filter::HTTPHead строка 90.
$self->[WORK_RESPONSE]->header($1, $2);
Дело в том, что метод header добавляет заголовок в объект HTTP::Response, но если такой заголовок уже есть, он перезаписывается.

Рассмотрим след. заголовок:
HTTP/1.1 200 OK
Cache-Control: no-cache, pre-check=0, post-check=0
Connection: Close
Date: Mon, 22 Jan 2007 10:19:49 GMT
Pragma: no-cache
Server: Apache/2.0.53 (ASPLinux)
Content-Type: text/html; charset=WINDOWS-1251
Expires: 0
Set-Cookie: phpbb2mysql_data=a%3A0%3A%7B%7D; expires=Tue, 22 Jan 2008 10:19:49 GMT; path=/;
Set-Cookie: phpbb2mysql_sid=79cd66857632c3e75c16d0b8
4034a95a; path=/;
Set-Cookie: phpbb2mysql___lastvisit=1169461190; expires=Fri, 01 Jan 1971 00:00:00 GMT; path=/;
Set-Cookie: phpbb2mysql___f_all=0; path=/;
Set-Cookie: phpbb2mysql___f=a%3A0%3A%7B%7D; path=/;
Set-Cookie: phpbb2mysql___t=a%3A0%3A%7B%7D; path=/;
Set-Cookie: phpbb2mysql___uf=0; expires=Tue, 22 Jan 2008 10:19:50 GMT; path=/;
Set-Cookie: phpbb2mysql___u=a%3A0%3A%7B%7D; expires=Tue, 22 Jan 2008 10:19:50 GMT; path=/;

После обработки этим фильтром мы получим:
HTTP/1.1 200 OK
Cache-Control: no-cache, pre-check=0, post-check=0
Connection: Close
Date: Mon, 22 Jan 2007 10:19:49 GMT
Pragma: no-cache
Server: Apache/2.0.53 (ASPLinux)
Content-Type: text/html; charset=WINDOWS-1251
Expires: 0
Set-Cookie: phpbb2mysql___u=a%3A0%3A%7B%7D; expires=Tue, 22 Jan 2008 10:19:50 GMT; path=/;

Т.о. мы потеряли все куки кроме последней.
Исправляется данная проблема просто. В строке 90 вместо $self->[WORK_RESPONSE]->header($1, $2) пишем $self->[WORK_RESPONSE]->push_header($1, $2).

от 22.01.2007
В закладки: Запомнить эту страницу В МоёМесто Забобрить Delicious Digg Добавить новость на МойКруг

POE

7 апреля 2007 11:32
Тэги: ,
Оставить комментарий
Очень радуют разработчики данного сабжа.

Модуль POE::Kernel

if ($^O eq 'MSWin32') {
*{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 1 };
} else {
*{ __PACKAGE__ . '::RUNNING_IN_HELL' } = sub { 0 };
}

Модуль POE::Wheel::Run
if (POE::Kernel::RUNNING_IN_HELL) {
eval { require Win32::Console; };
if ($@) { die "Win32::Console failed to load:\n$@" }
else { Win32::Console->import(); };

eval { require Win32API::File; };
if ($@) { die "Win32API::File but failed to load:\n$@" }
else { Win32API::File->import( qw(FdGetOsFHandle) ); };
}

КЗТП
В закладки: Запомнить эту страницу В МоёМесто Забобрить Delicious Digg Добавить новость на МойКруг

Поехали

6 апреля 2007 18:25
Тэги: , ,
Оставить комментарий

Сбылась мечта идиота. Я зарегистрировал себе хостинг и разместил на нем блог ) Ура.

Все здесь является творением моих рук. Спасибо pavel_kudinov за движок на котором я написал свой блог )


В закладки: Запомнить эту страницу В МоёМесто Забобрить Delicious Digg Добавить новость на МойКруг

Теги

Страницы

Ссылки

Новости XML и обзоры

Друзья

Дамочка в поиске Дамочка в поиске
Отражение в сети

META

Valid XHTML
XHTML Friends Network
RSS 2.0 Feed
Читать в Яндекс.Ленте
Add to Google
количество читателей онлайн и всего
© 2007 Gorinich.net