perlbrew yapcasia 2010
-
Upload
kang-min-liu -
Category
Technology
-
view
2.391 -
download
0
description
Transcript of perlbrew yapcasia 2010
![Page 1: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/1.jpg)
![Page 2: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/2.jpg)
![Page 3: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/3.jpg)
Perl
Kang-min Liu@gugod
![Page 4: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/4.jpg)
.meta
•twitter.com/gugod
•Perl / Javascript / Ruby programmer
•CPAN Author for ~100 distributions
•perlbrew
![Page 5: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/5.jpg)
perlbrew
![Page 6: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/6.jpg)
•A tool to install tons of perls
•switch between them
•build with customized options(-D -A -U)
•build from tarball or git
perlbrew
![Page 7: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/7.jpg)
Usage
perlbrew install perl-5.12.2perlbrew install perl-5.13.5
* Internet connection is required
![Page 8: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/8.jpg)
Usage
perlbrew install perl-5.10.1perlbrew install perl-5.8.8
* Internet connection is required
![Page 9: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/9.jpg)
Usage
# git checkoutcd ~/src/perlperlbrew install .
* Internet connection is not required
![Page 10: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/10.jpg)
Usage
perlbrew installed
![Page 11: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/11.jpg)
> perlbrew installedperl-5.10.0perl-5.10.1perl-5.11.1perl-5.11.5perl-5.12.0perl-5.12.0-RC0perl-5.12.0-RC3perl-5.12.1perl-5.12.2(*)perl-5.13.0perl-5.13.2perl-5.13.4perl-v5.11.5-15-gd3b0eb1/Users/gugod/perl5/perlbrew/bin/perl/Users/gugod/perl5/perlbrew/perls/current/bin/perl/usr/bin/perl
![Page 12: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/12.jpg)
Usage
perlbrew switch perl-5.12.2
# Disable perlbrewperlbrew off
![Page 13: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/13.jpg)
Installation
curl −LO http://xrl.us/perlbrewchmod +x perlbrew./perlbrew install
![Page 15: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/15.jpg)
Installation
cpan -i App::perlbrew
* Not recommended
![Page 16: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/16.jpg)
Properties
•does not require sudo
•perl installation are isolated
•site_lib, bin, lib
• install a new version ≠ upgrade
•@INC does not include old site_lib
![Page 17: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/17.jpg)
Benefits
•Easier-to-clean perl environments
•Nuke the whole thing to clean the mess
•Old @INC does not accumulate with old perls
![Page 18: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/18.jpg)
Benefits•per-app isolated perl environments
setup.
•avoid, in advance, any possible incompatible issues with other apps.
•know your site_libs
• ‘sudo cpan’ is no more.
![Page 19: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/19.jpg)
Why?
•Don’t mess up vendor perl too much.
•Learn new stuffs in the dev version of perl.
•keep up with the fashion
![Page 20: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/20.jpg)
Why?
•Test modules or apps
• ... with newer perl
• ... with older perl
![Page 21: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/21.jpg)
Why?
•Test perl itself
•Threaded perl
•64bit perl
•performance
•smokebrew
![Page 22: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/22.jpg)
Why?
•Play dark magic kitchen fire
•Devel::Declare, B::*, XS
•Better with a perl built with DEBUGING
![Page 23: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/23.jpg)
development
•github.com/gugod/App-perlbrew
•so many pull requests
•20 contributors
•send me pull requests any time!
![Page 24: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/24.jpg)
development
•better bash integration / experiments
•easy site_lib management (clone / bundle / nuke)
•Steal some goodies from Devel::PPPort
![Page 25: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/25.jpg)
←
![Page 26: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/26.jpg)
← perlbrew
•/usr/local/bin/perl/opt/local/bin/perl/home/gugod/local/bin/perl
•site_lib is preserved after upgrade
![Page 27: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/27.jpg)
← perlbrew
•perl is so backward compatible
• Ideal for developing and production
•keep upgrading perl is generally OK
![Page 28: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/28.jpg)
← perlbrew
•Upgrading CPAN modules isn’t necessarily OK.
•Errors happens at runtime, when it’s not binary-compatible.
•Developers must correctly specify module dependencies.
![Page 29: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/29.jpg)
← perlbrew
• In CPAN Distribution you do that in Makefile.PL / META.yml
•Same tool for App
![Page 30: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/30.jpg)
Simple is Hard
•support for legacy code and decisions.
•perl, cpan
•cpanm, perlbrew: new tools for the current fashion
![Page 31: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/31.jpg)
Thoughts
perlbrew « cpanm, rvm
![Page 32: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/32.jpg)
Thoughts
•Standalone program
•embed non-core modules
•very easy distribution
•runs a tiny bit faster
![Page 33: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/33.jpg)
Thoughts
•« rvm
•bash programming master-piece
•developer-friendly experiences
•production server
![Page 34: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/34.jpg)
Further Thoughts• Test::Continuous
• perlbrew
• local::lib
• App::local::lib::helper
• cpanm
• cpan-outdated
• cpansearch
![Page 35: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/35.jpg)
rapidly improves somethinga little bit better
![Page 36: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/36.jpg)
rapidly improves somethinga little bit better ❤
![Page 37: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/37.jpg)
Hates
![Page 38: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/38.jpg)
Hates•CPAN dependency list for
$framework is too long
•CPAN $modules takes too long to install / tests takes very long time to finish
•$software is too fat (eats too much memory space) and slow
![Page 39: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/39.jpg)
Less Hateful
•bundle cpan dists with your distribution
•PAR / Shipwright / %INC hack
•Avoid long dependency list
![Page 40: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/40.jpg)
•smaller, single-purpose
• less memory consumption
• less sub-commands to be memorized
• less memory consumption in your brain
•easier to maintain / be faster
Less Hateful
![Page 41: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/41.jpg)
cpan install can run 90% faster...
![Page 42: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/42.jpg)
cpan install can run 90% faster...
By skiping all tests,
![Page 43: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/43.jpg)
Less Hateful
•To skip for tests safely, consult cpantester.org first
•A cpan/cpanm plugin shall be written to automates that.
![Page 44: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/44.jpg)
Less Hateful
•Solving long dependency list problem is a no-op
• if cpan installation is super fast
• like < 1 second / module
![Page 45: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/45.jpg)
天下武功唯快不破
Fast fists cannot be broken
![Page 46: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/46.jpg)
side projects
![Page 47: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/47.jpg)
• cpan-sets: local::lib switcher wrote in
• « rvm gemset, bundler
• App::local::lib::helper
• experimental project
• per-app bundle
cpan-sets
![Page 48: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/48.jpg)
cpanfile# Install with: cpanm < cpanfilehttp://github.com/bestpractical/jifty-dbi/tarball/masterhttp://github.com/bestpractical/jifty/tarball/masterhttp://github.com/bestpractical/jifty-plugin-openidB::Hooks::EndOfScopeDateTimeDigest::SHA1Email::AddressExporter::LiteHTML::EntitiesJiftyX::MarkaplJiftyX::ModelHelpersMarkaplRegexp::CommonRegexp::Common::Email::AddressString::BufferStackSub::InstallText::Markdown::DiscountText::MultiMarkdownUNIVERSAL::requirecommon::sense
![Page 49: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/49.jpg)
perlrocks• rubygems counter-part.
• multi-version module install
• use perlrocks;
# perl5 syntax of ‘use’use Foo-1.3;
• site_lib/rocks/Foo-1.3/lib/Foo.pm
• Installation tool (rock)
![Page 50: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/50.jpg)
side projects
• github.com/gugod/App-perlbrew
• github.com/gugod/cpan-sets
• github.com/gugod/perlrocks
![Page 51: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/51.jpg)
Conclusion
•github social coding actually works!
•Easy distributing is important.
•Simple is hard.
•Fast is better then slow.
![Page 52: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/52.jpg)
∞
•Good + Simple + Easy toolkit
•Keep new-comers by not frustrating them
•Grow the community
![Page 53: perlbrew yapcasia 2010](https://reader033.fdocuments.net/reader033/viewer/2022052823/55583168d8b42acb078b45a1/html5/thumbnails/53.jpg)
Thank You