YAPC::EU 2015 - Perl Conferences

44

Transcript of YAPC::EU 2015 - Perl Conferences

Page 2: YAPC::EU 2015 - Perl Conferences

From: YAPC::[email protected]. Web Scrapers 2. Platform incompatibilites 3. Compiler status 4. WebService::Simple 5. Server::Starter 6. Starlet 7. Cookie::Baker 8. Gazelle 9. Furl 10. Riki 11. Perl::Lint 12. Carmel

Page 3: YAPC::EU 2015 - Perl Conferences

Granada ?

Page 4: YAPC::EU 2015 - Perl Conferences

Granada, Spain

Page 5: YAPC::EU 2015 - Perl Conferences
Page 6: YAPC::EU 2015 - Perl Conferences

Web Scrapersfrom @Sawyer

Page 7: YAPC::EU 2015 - Perl Conferences

Web Scrapers•What is it ? application to extract content from a webpage….

1. Crawl

2. Parse

3. Extract content

• But Why ?1. Website without API…

2. Website with an API…

Html code can change…but api also…

Page 8: YAPC::EU 2015 - Perl Conferences

Web ScrapersScrapers for dummies

Page 9: YAPC::EU 2015 - Perl Conferences

Web ScrapersTwo tools for scrapping:

•WWW::Mechanizebrowser in an objectforms, links, “back button”, “reload button”

•Web::Queryselector based

Page 10: YAPC::EU 2015 - Perl Conferences

Web Scrapers: WWW::Mechanize

Page 11: YAPC::EU 2015 - Perl Conferences

Web Scrapers: Web::Query by Tokuhiro Matsuno

Page 12: YAPC::EU 2015 - Perl Conferences

Platform incompatibilities

Talk by Mark Overmeerauthor of POSIX::1003

• POSIX 1003.1: attempt to standardize the operating systems since 1984: libraries: libc, libc, …OS: I/O, events, permissions, memory,…

• over 1200 functions

Page 13: YAPC::EU 2015 - Perl Conferences

POSIX is difficult

> perldoc -f print

Page 14: YAPC::EU 2015 - Perl Conferences

POSIX.pm is old

> perldoc POSIX

Page 15: YAPC::EU 2015 - Perl Conferences

POSIX is weakSample with select

> perldoc -f select select FILEHANDLE select RBITS, WBITS, EBITS, TIMEOUT

> perldoc POSIX::1003::Events

Page 16: YAPC::EU 2015 - Perl Conferences

POSIX: other issues

• getpid => $$  # 12 simple rewrites • POSIX::open != open| # 57 name clashes • 20 croak “use method xxx instead" • 59 croak “xxx is C-specific use yyy"

Page 17: YAPC::EU 2015 - Perl Conferences

POSIX::1003

Page 18: YAPC::EU 2015 - Perl Conferences

POSIX::1003Exporter trick: +1

Sample

…what’s the trick ?

Page 19: YAPC::EU 2015 - Perl Conferences

POSIX::1003

Page 20: YAPC::EU 2015 - Perl Conferences

Compiler status

perl compiler B::C - 5.14.4 in production since 2014 @cPanel [ CentOS 5,6,7 ]

Advantages: • 10 to 20 % less memory usage • faster startup • no need to ship your modules / code

( dynamic modules are loaded on demand )

Page 21: YAPC::EU 2015 - Perl Conferences

Japanese“Why does it need to be so fast ? because we are…”

Junichi Ishida aka uzulla slides: http://bit.ly/uzulla_yapceu2015

Page 22: YAPC::EU 2015 - Perl Conferences

WebService::Simple

Page 23: YAPC::EU 2015 - Perl Conferences

Server::Starter• extra protection layer on top of your plack server

• "a superdaemon for hot-deploying server programs"

• Gracefull restart (hot-deploying)

• Only exit old process if new process is successfully booted.(safe!)

• No resource leak (known)

Page 24: YAPC::EU 2015 - Perl Conferences

Starlet• "a simple, high-performance PSGI/Plack HTTP server"

• Very heavily used in japan.

Page 25: YAPC::EU 2015 - Perl Conferences

Cookie::Baker

Page 26: YAPC::EU 2015 - Perl Conferences

Gazellea very fast{/jp} PSGI server

x2 faster than starman

Page 27: YAPC::EU 2015 - Perl Conferences

Furlsimple & fast http client [made in Japan]

Page 28: YAPC::EU 2015 - Perl Conferences

Furl - post sample

Page 29: YAPC::EU 2015 - Perl Conferences

Riji - git based blog tool

publish [static] files

Page 30: YAPC::EU 2015 - Perl Conferences

Perl::Lint by KawakamiWhy ?• "Yet Another Perl Source Code Linter"

• faster than other lint tools

• fast and flexible static analyzer for Perl5

• compatibility with Perl::Critic

• easy to extend/add policies

Page 31: YAPC::EU 2015 - Perl Conferences

Perl::Lint by Kawakami

Page 32: YAPC::EU 2015 - Perl Conferences

Carmel (or Carton 2)Talk from Tatsuhiko Miyazawa (>200 CPAN modules):

• cpanminus

• carton

• Corona

• PSGI

• Plack

• Starman

• Twiggy

• …

Page 33: YAPC::EU 2015 - Perl Conferences

Carmel (or Carton 2)Carton with cache to speedup

cache blib in a common directory$HOME/.carmel/{version}-{archname}/builds

Page 34: YAPC::EU 2015 - Perl Conferences

Carmel (or Carton 2)

Page 35: YAPC::EU 2015 - Perl Conferences
Page 36: YAPC::EU 2015 - Perl Conferences
Page 37: YAPC::EU 2015 - Perl Conferences
Page 38: YAPC::EU 2015 - Perl Conferences
Page 39: YAPC::EU 2015 - Perl Conferences
Page 40: YAPC::EU 2015 - Perl Conferences
Page 41: YAPC::EU 2015 - Perl Conferences
Page 42: YAPC::EU 2015 - Perl Conferences
Page 43: YAPC::EU 2015 - Perl Conferences

…and also• Benchmark::Perl::Formance • Eixo::Zone: interact with (OS) namespaces • JWT tokens - http://jwt.io

• JSON::WebToken • Crypt::JWT

• Monitoring graphs • GrowthForecast (needs rrdtool) • HRForecast (no rrdtool required

• Test::mysqld • Test::Valgrind

valgrind frontend: memory errors & leaks • mRuby is mruby binding for perl5 • Measure::Everything

provides a standard measuring API for modules • Menlo: cpanminus 2 • WebService::Mackerel - client for mackerel.io (performance monitor tool on cloud)

Page 44: YAPC::EU 2015 - Perl Conferences

Thank you !