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

Like this? Share it with your network

Share

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

  • 2,629 views
Uploaded on

YAPC::Russia 2009 "May Perl 2"

YAPC::Russia 2009 "May Perl 2"

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,629
On Slideshare
2,622
From Embeds
7
Number of Embeds
2

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 7

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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 г.