SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Модули 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 г.

Contenu connexe

Similaire à Модули 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
 

Similaire à Модули 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
 

Plus de 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
 

Plus de 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: зачем оно нужно, если есть «букинг»?
 

Dernier

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Модули 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 г.