Модули Net::*, использующие LWP::UserAgent – зло?!
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Модули Net::*, использующие LWP::UserAgent – зло?!

on

  • 2,610 views

YAPC::Russia 2009 "May Perl 2"

YAPC::Russia 2009 "May Perl 2"

Statistics

Views

Total Views
2,610
Views on SlideShare
2,603
Embed Views
7

Actions

Likes
0
Downloads
4
Comments
0

2 Embeds 7

http://lj-toys.com 6
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Модули Net::*, использующие LWP::UserAgent – зло?! Presentation Transcript

  • 1. Модули Net::*, использующие LWP::UserAgent – зло?! YAPC::Russia 2009 Блиц-доклад 17 мая 2009 г.
  • 2. YAPC Russia 2008 17 мая 2009 г.
  • 3. CGI.pm – зло!? 17 мая 2009 г.
  • 4. Net::* и WWW::* • Net::LastFM • Net::LastFM::Submission • Net::Twitter • Net::FriendFeed • WWW::Alexa::TrafficRank 17 мая 2009 г.
  • 5. Net::* и WWW::* • Net::LastFM • Net::LastFM::Submission • Net::Twitter • Net::FriendFeed • WWW::Alexa::TrafficRank 17 мая 2009 г.
  • 6. Perl interface to the XXX API 17 мая 2009 г.
  • 7. use LWP::UserAgent; 17 мая 2009 г.
  • 8. Net::* и WWW::* my $submit = Net::LastFM::Submission->new( . . ., ua => LWP::UserAgent->new( agent => 'nls', timeout => 5, ), ); my $twitter = Net::Twitter->new( . . ., useragent_class => LWP::UserAgent->new(...), ); my $alexa = WWW::Alexa::Traffic->new(timeout => 5); 17 мая 2009 г.
  • 9. Все хорошо, все работает! 17 мая 2009 г.
  • 10. но... 17 мая 2009 г.
  • 11. LWP::UserAgent – блокирующий 17 мая 2009 г.
  • 12. LWP::UserAgent::POE – неблокирующий 17 мая 2009 г.
  • 13. Не решает всех проблем :) 17 мая 2009 г.
  • 14. Не решает всех проблем • «Связывает» руки • Невозможно использовать свой POE-клиент • Хочу AnyEvent, IO::Lambda или что-то свое :) 17 мая 2009 г.
  • 15. POE::Component:: WWW::Alexa::TrafficRank non-blocking wrapper around WWW::Alexa::TrafficRank 17 мая 2009 г.
  • 16. use POE::Wheel::Run; Форкается :) 17 мая 2009 г.
  • 17. Нехорошо Т. к. нужно выполнить только блокирующий запрос LWP::UserAgent 17 мая 2009 г.
  • 18. Что же делать? 17 мая 2009 г.
  • 19. POE::Component::Twitter Собственная реализация Twitter API, не использует Net::Twitter 17 мая 2009 г.
  • 20. Нехорошо Т. к. не использует Net::Twitter Клон!? :) 17 мая 2009 г.
  • 21. Что же делать? • Net::LastFM::Submission • разделить механизм создания запроса и обработки ответа от посылки запроса и ожидания ответа • решает все проблемы • очень легко! • гармонично :) 17 мая 2009 г.
  • 22. Net::LastFM::Submission • Создание запросов: HTTP::Request • _request_handshake • _request_now_playing • _request_submit • Обрабокта ответа: HTTP::Response • _response 17 мая 2009 г.
  • 23. Не использовать в этих методах die / croak / confess Рекомендация 17 мая 2009 г.
  • 24. Net::LastFM::Submission no strict 'refs'; for my $m ('handshake', 'now_playing', 'submit') { *{$m} = sub { my $self = shift; my $r = $self->${quot;_request_$mquot;}(@_); ... my $data = $self->_response( $self->{'ua'}->request($r) ); ... return $data; }; } 17 мая 2009 г.
  • 25. POE::Component:: Net::LastFM::Submission non-blocking wrapper truelly asynchronously 17 мая 2009 г.
  • 26. POE::Component:: Net::LastFM::Submission use POE::Component::Client::HTTP; также поддерживает возможность использовать свой POE-клиет 17 мая 2009 г.
  • 27. POE::Component:: Net::LastFM::Submission (map { my $m = $_; $m => sub { my $request = $_[HEAP]->{'submit'} ->${quot;_request_$mquot;}($_[ARG1]); ... $_[KERNEL]->post( $_[HEAP]->{'client'} => 'request' => 'response', $request, ); }; } 'handshake', 'now_playing', 'submit'), 17 мая 2009 г.
  • 28. Net::LastFM::Submission P::C::N::LastFM::Submission http://github.com/sharifulin/net-lastfm-submission 17 мая 2009 г.
  • 29. Net::LastFM P::C::Net::LastFM http://github.com/sharifulin/net-lastfm 17 мая 2009 г.
  • 30. Модули Net::*, использующие тупо LWP::UserAgent – зло! 17 мая 2009 г.
  • 31. Net::FriendFeed Каппа, я тебя убедил? Внесешь изменения в свой модуль? :) 17 мая 2009 г.
  • 32. use Perl or die 17 мая 2009 г.
  • 33. JFDI 17 мая 2009 г.
  • 34. Спасибо за внимание! Анатолий Шарифулин RostovOnDon.pm 17 мая 2009 г.