SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Модули Net::*,
                      использующие
                 LWP::UserAgent – зло?!
                       YAPC::Russia 2009
                         Блиц-доклад




17 мая 2009 г.
YAPC Russia 2008
17 мая 2009 г.
CGI.pm – зло!?
17 мая 2009 г.
Net::* и WWW::*

                 • Net::LastFM
                 • Net::LastFM::Submission
                 • Net::Twitter
                 • Net::FriendFeed
                 • WWW::Alexa::TrafficRank

17 мая 2009 г.
Net::* и WWW::*

                 • Net::LastFM
                 • Net::LastFM::Submission
                 • Net::Twitter
                 • Net::FriendFeed
                 • WWW::Alexa::TrafficRank

17 мая 2009 г.
Perl interface to the
                       XXX API


17 мая 2009 г.
use LWP::UserAgent;



17 мая 2009 г.
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 г.
Все хорошо,
                 все работает!


17 мая 2009 г.
но...



17 мая 2009 г.
LWP::UserAgent –
                  блокирующий


17 мая 2009 г.
LWP::UserAgent::POE –
                   неблокирующий


17 мая 2009 г.
Не решает всех
                   проблем :)


17 мая 2009 г.
Не решает всех
                         проблем

                 • «Связывает» руки
                 • Невозможно использовать свой POE-клиент
                 • Хочу AnyEvent, IO::Lambda или что-то свое :)


17 мая 2009 г.
POE::Component::
        WWW::Alexa::TrafficRank
                      non-blocking wrapper
                 around WWW::Alexa::TrafficRank




17 мая 2009 г.
use POE::Wheel::Run;
                        Форкается :)




17 мая 2009 г.
Нехорошо
                 Т. к. нужно выполнить только блокирующий запрос
                                  LWP::UserAgent




17 мая 2009 г.
Что же делать?



17 мая 2009 г.
POE::Component::Twitter
                 Собственная реализация Twitter API,
                     не использует Net::Twitter




17 мая 2009 г.
Нехорошо
                 Т. к. не использует Net::Twitter
                             Клон!? :)




17 мая 2009 г.
Что же делать?
                 • Net::LastFM::Submission
                  • разделить механизм создания запроса и
                     обработки ответа от посылки запроса и
                     ожидания ответа
                      • решает все проблемы
                      • очень легко!
                      • гармонично :)
17 мая 2009 г.
Net::LastFM::Submission
                 • Создание запросов: HTTP::Request
                     • _request_handshake
                     • _request_now_playing
                     • _request_submit
                 • Обрабокта ответа: HTTP::Response
                     • _response
17 мая 2009 г.
Не использовать в
                    этих методах
                 die / croak / confess
                        Рекомендация




17 мая 2009 г.
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 г.
POE::Component::
                 Net::LastFM::Submission
                       non-blocking wrapper
                       truelly asynchronously




17 мая 2009 г.
POE::Component::
                 Net::LastFM::Submission
                        use POE::Component::Client::HTTP;
                  также поддерживает возможность использовать
                                 свой POE-клиет




17 мая 2009 г.
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 г.
Net::LastFM::Submission
      P::C::N::LastFM::Submission
                 http://github.com/sharifulin/net-lastfm-submission




17 мая 2009 г.
Net::LastFM
                 P::C::Net::LastFM
                 http://github.com/sharifulin/net-lastfm




17 мая 2009 г.
Модули Net::*,
                   использующие тупо
                 LWP::UserAgent – зло!


17 мая 2009 г.
Net::FriendFeed
                       Каппа, я тебя убедил?
                 Внесешь изменения в свой модуль? :)




17 мая 2009 г.
use Perl
                   or die




17 мая 2009 г.
JFDI



17 мая 2009 г.
Спасибо за внимание!
                      Анатолий Шарифулин
                        RostovOnDon.pm




17 мая 2009 г.

Weitere ähnliche Inhalte

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

CPAN: modules, authors and documentation
CPAN: modules, authors and documentationCPAN: modules, authors and documentation
CPAN: modules, authors and documentationAnatoly Sharifulin
 
Microblogging via XMPP
Microblogging via XMPPMicroblogging via XMPP
Microblogging via XMPPStoyan Zhekov
 
11 Ban Net Scaler Xa
11 Ban Net Scaler Xa11 Ban Net Scaler Xa
11 Ban Net Scaler XaLiudmila Li
 
Perl в хэке и хэки в Perl
Perl в хэке и хэки в PerlPerl в хэке и хэки в Perl
Perl в хэке и хэки в Perlmayperl
 
распознавание для Web
распознавание для Webраспознавание для Web
распознавание для Websef2009
 
Ruby off Rails (japanese)
Ruby off Rails (japanese)Ruby off Rails (japanese)
Ruby off Rails (japanese)Stoyan Zhekov
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPAtsuhiro Kubo
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎mayperl
 
『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラ『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラMasaaki HIROSE
 
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoCorporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoYusuke Kawasaki
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud ComputingSSA KPI
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targetingguest258f78a
 
bioinfolec_2nd_20070622
bioinfolec_2nd_20070622bioinfolec_2nd_20070622
bioinfolec_2nd_20070622sesejun
 
Основы работы с Memcached
Основы работы с MemcachedОсновы работы с Memcached
Основы работы с Memcachedrailsclub
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media ServicesSQALab
 

Ähnlich wie Модули Net::*, использующие LWP::UserAgent – зло?! (20)

CPAN: modules, authors and documentation
CPAN: modules, authors and documentationCPAN: modules, authors and documentation
CPAN: modules, authors and documentation
 
Microblogging via XMPP
Microblogging via XMPPMicroblogging via XMPP
Microblogging via XMPP
 
11 Ban Net Scaler Xa
11 Ban Net Scaler Xa11 Ban Net Scaler Xa
11 Ban Net Scaler Xa
 
Perl в хэке и хэки в Perl
Perl в хэке и хэки в PerlPerl в хэке и хэки в Perl
Perl в хэке и хэки в Perl
 
распознавание для Web
распознавание для Webраспознавание для Web
распознавание для Web
 
Ruby off Rails (japanese)
Ruby off Rails (japanese)Ruby off Rails (japanese)
Ruby off Rails (japanese)
 
May POE
May POEMay POE
May POE
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
 
XMPP - Beyond IM
XMPP - Beyond IMXMPP - Beyond IM
XMPP - Beyond IM
 
за Ruby
за Rubyза Ruby
за Ruby
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎
 
『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラ『Ficia』インフラとPerlにまつわるエトセトラ
『Ficia』インフラとPerlにまつわるエトセトラ
 
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 TokyoCorporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
Corporate Perl in Recruit, OpenSocial and Emoji‎ - YAPC::Asia 2009 Tokyo
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Why Ror
Why RorWhy Ror
Why Ror
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targeting
 
Revisited
RevisitedRevisited
Revisited
 
bioinfolec_2nd_20070622
bioinfolec_2nd_20070622bioinfolec_2nd_20070622
bioinfolec_2nd_20070622
 
Основы работы с Memcached
Основы работы с MemcachedОсновы работы с Memcached
Основы работы с Memcached
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media Services
 

Mehr von Anatoly Sharifulin

Ещё один способ привлекать и удерживать пользователей в играх
Ещё один способ привлекать и удерживать пользователей в играхЕщё один способ привлекать и удерживать пользователей в играх
Ещё один способ привлекать и удерживать пользователей в играхAnatoly Sharifulin
 
ASO Аудит для приложений и игр
ASO Аудит для приложений и игрASO Аудит для приложений и игр
ASO Аудит для приложений и игрAnatoly Sharifulin
 
ASO для iOS 11 (продвижение In-App Prurchases)
ASO для iOS 11 (продвижение In-App Prurchases)ASO для iOS 11 (продвижение In-App Prurchases)
ASO для iOS 11 (продвижение In-App Prurchases)Anatoly Sharifulin
 
AppFollow митап в Москве
AppFollow митап в МосквеAppFollow митап в Москве
AppFollow митап в МосквеAnatoly Sharifulin
 
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...Anatoly Sharifulin
 
Конкурентный анализ мобильных приложений
Конкурентный анализ мобильных приложенийКонкурентный анализ мобильных приложений
Конкурентный анализ мобильных приложенийAnatoly Sharifulin
 
Аналитика приложений конкурентов
Аналитика приложений конкурентовАналитика приложений конкурентов
Аналитика приложений конкурентовAnatoly Sharifulin
 
Аналитика магазинов приложений
Аналитика магазинов приложенийАналитика магазинов приложений
Аналитика магазинов приложенийAnatoly Sharifulin
 
Аналитика мобильных приложений
Аналитика мобильных приложенийАналитика мобильных приложений
Аналитика мобильных приложенийAnatoly Sharifulin
 
Анализ приложений конкурентов
Анализ приложений конкурентовАнализ приложений конкурентов
Анализ приложений конкурентовAnatoly Sharifulin
 
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»Anatoly Sharifulin
 
Продвижение мобильных приложений: с чего начать?
Продвижение мобильных приложений: с чего начать?Продвижение мобильных приложений: с чего начать?
Продвижение мобильных приложений: с чего начать?Anatoly Sharifulin
 
Основной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ruОсновной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ruAnatoly Sharifulin
 
ASO оптимизация и продвижение мобильных приложений
ASO  оптимизация и продвижение мобильных приложенийASO  оптимизация и продвижение мобильных приложений
ASO оптимизация и продвижение мобильных приложенийAnatoly Sharifulin
 
Удержание пользователя в приложении
Удержание пользователя в приложенииУдержание пользователя в приложении
Удержание пользователя в приложенииAnatoly Sharifulin
 
Мобильный сайт или мобильное приложение?
Мобильный сайт или мобильное приложение?Мобильный сайт или мобильное приложение?
Мобильный сайт или мобильное приложение?Anatoly Sharifulin
 
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?Anatoly Sharifulin
 

Mehr von Anatoly Sharifulin (20)

Ещё один способ привлекать и удерживать пользователей в играх
Ещё один способ привлекать и удерживать пользователей в играхЕщё один способ привлекать и удерживать пользователей в играх
Ещё один способ привлекать и удерживать пользователей в играх
 
ASO Аудит для приложений и игр
ASO Аудит для приложений и игрASO Аудит для приложений и игр
ASO Аудит для приложений и игр
 
ASO для iOS 11 (продвижение In-App Prurchases)
ASO для iOS 11 (продвижение In-App Prurchases)ASO для iOS 11 (продвижение In-App Prurchases)
ASO для iOS 11 (продвижение In-App Prurchases)
 
ASO для iOS 11
ASO для iOS 11ASO для iOS 11
ASO для iOS 11
 
AppFollow митап в Москве
AppFollow митап в МосквеAppFollow митап в Москве
AppFollow митап в Москве
 
ASO Best Practices 2016
ASO Best Practices 2016ASO Best Practices 2016
ASO Best Practices 2016
 
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...
То, что русскому — ФРИИ, финну — Startup Sauna. Опыт прохождения акселерации ...
 
ASO FAQ
ASO FAQASO FAQ
ASO FAQ
 
Конкурентный анализ мобильных приложений
Конкурентный анализ мобильных приложенийКонкурентный анализ мобильных приложений
Конкурентный анализ мобильных приложений
 
Аналитика приложений конкурентов
Аналитика приложений конкурентовАналитика приложений конкурентов
Аналитика приложений конкурентов
 
Аналитика магазинов приложений
Аналитика магазинов приложенийАналитика магазинов приложений
Аналитика магазинов приложений
 
Аналитика мобильных приложений
Аналитика мобильных приложенийАналитика мобильных приложений
Аналитика мобильных приложений
 
Анализ приложений конкурентов
Анализ приложений конкурентовАнализ приложений конкурентов
Анализ приложений конкурентов
 
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»
ASO оптимизация мобильных приложений: «Что такое хорошо и что такое плохо?»
 
Продвижение мобильных приложений: с чего начать?
Продвижение мобильных приложений: с чего начать?Продвижение мобильных приложений: с чего начать?
Продвижение мобильных приложений: с чего начать?
 
Основной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ruОсновной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ru
 
ASO оптимизация и продвижение мобильных приложений
ASO  оптимизация и продвижение мобильных приложенийASO  оптимизация и продвижение мобильных приложений
ASO оптимизация и продвижение мобильных приложений
 
Удержание пользователя в приложении
Удержание пользователя в приложенииУдержание пользователя в приложении
Удержание пользователя в приложении
 
Мобильный сайт или мобильное приложение?
Мобильный сайт или мобильное приложение?Мобильный сайт или мобильное приложение?
Мобильный сайт или мобильное приложение?
 
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?
Мобильное приложение Ostrovok.ru: зачем оно нужно, если есть «букинг»?
 

Kürzlich hochgeladen

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 

Kürzlich hochgeladen (20)

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 

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

  • 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 г.
  • 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 г.
  • 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 г.
  • 34. Спасибо за внимание! Анатолий Шарифулин RostovOnDon.pm 17 мая 2009 г.