cpan 模組二三事

79

Click here to load reader

Upload: yo-an-lin

Post on 08-May-2015

4.150 views

Category:

Documents


6 download

DESCRIPTION

CPAN 模組

TRANSCRIPT

Page 2: CPAN 模組二三事

什麼是 CPAN 模組

Page 3: CPAN 模組二三事

• DRY ( Dont repeat yourself)

• Class Library

• 3400+ authors

• 12000+ modules

• Unit Tests

Page 4: CPAN 模組二三事

CPAN 文化

Page 5: CPAN 模組二三事

CPAN 異像 ?

Page 6: CPAN 模組二三事

Release Often

Page 7: CPAN 模組二三事

Unit Testing

Page 8: CPAN 模組二三事

Module review

Page 9: CPAN 模組二三事

Write OnceNever Maintain (?)

寫一次,從不維護 XD

Page 10: CPAN 模組二三事

Read-only 的 Module ?

Patch 無效,Please patch locally.... XD

Page 11: CPAN 模組二三事

文件隨意寫不寫也可以 (小聲)

Page 12: CPAN 模組二三事

模組名稱可預購!

寫空的也行 XD

Page 13: CPAN 模組二三事

別緊張

Page 14: CPAN 模組二三事

她,我可以.... (blush)

Page 15: CPAN 模組二三事

以上全部不是事實

Page 16: CPAN 模組二三事

好的

Page 17: CPAN 模組二三事

好的,髒的

Page 18: CPAN 模組二三事

好的,髒的,糟糕的

Page 19: CPAN 模組二三事

以及 怪怪的

Page 20: CPAN 模組二三事

全都在 CPAN

Page 21: CPAN 模組二三事
Page 22: CPAN 模組二三事
Page 23: CPAN 模組二三事
Page 24: CPAN 模組二三事

CPAN Module 台灣作者群

Page 25: CPAN 模組二三事

• audreyt (autrijus)

• gugod

• clkao

• clsung

• imacat

• shelling

• BlueT

• cornelius (c9s)

• etc...

CPAN Module Authors

in TaiwanAcme::CPANAuthors::Taiwanese

Page 26: CPAN 模組二三事

• ADAMK (218+ 模組)

• RJBS (211+ 模組)

• Miyagawa ( 177+ 模組)

• CPAN Leaderboard

http://thegestalt.org/simon/perl/wholecpan.html

其他

Page 27: CPAN 模組二三事

如何開始

Page 28: CPAN 模組二三事

模組安裝步驟

• $ wget http://path/to/Dist-{version}.tar.gz

• $ perl Makefile.PL # 產生 Makefile

• $ make

• $ make install

Page 29: CPAN 模組二三事

CPAN 模組工具

• CPAN Shell

• CPANPLUS Shell

• cpanminus

http://github.com/miyagawa/cpanminus

Page 30: CPAN 模組二三事

CPAN Shell

• 所有 Unix-like platform 內建

• 初次設定繁雜• 用法: $ cpan [Module Name]

Page 31: CPAN 模組二三事

CPANPLUS

• 為了改進 CPAN Shell 而出現

Page 32: CPAN 模組二三事

CPANPLUS

• 為了改進 CPAN Shell 而出現

• 結果又比 CPAN Shell 更肥 XD

Page 33: CPAN 模組二三事

CPANPLUS

• 為了改進 CPAN Shell 而出現

• 結果又比 CPAN Shell 更肥 XD

• 模組相依性太重

Page 34: CPAN 模組二三事

cpanminus

• 無模組相依• 裝了就上• 速度快• 支援無系統權限安裝 (無須繁瑣設定)

Page 35: CPAN 模組二三事

cpanminushttp://github.com/miyagawa/cpanminus

Page 36: CPAN 模組二三事
Page 37: CPAN 模組二三事

$ cd ~/bin/$ wget http://xrl.us/cpanm$ chmod +x cpanm

安裝 CPANMinus

Page 38: CPAN 模組二三事

$ git clone git://github.com/miyagawa/cpanminus.git$ cd cpanminus$ perl Makefile.PL$ make install

安裝 CPANMinusfrom github

Page 39: CPAN 模組二三事

$ cpanm [Module Name]

Page 40: CPAN 模組二三事

$ cpanm -n [Module Name]{no test}

Page 41: CPAN 模組二三事

$ cpanm -v [Module Name]{verbose}

Page 42: CPAN 模組二三事

$ cpanm -f [Module Name]{force}

Page 43: CPAN 模組二三事

$ cpanm --help{help}

Page 44: CPAN 模組二三事

cpanm CGI cpanm MIYAGAWA/Plack-0.99_05.tar.gz cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz cpanm --interactive Task::Kensho cpanm . cpanm --installdeps .

其他用法

Page 45: CPAN 模組二三事

使用模組

Page 46: CPAN 模組二三事

使用模組• 使用 Perldoc 查詢模組文件:

$ perldoc Data::Dumper

• 使用 search.cpan.org 查詢模組文件

• 讀 Synopsis

• 在 Code 使用 use 關鍵字: use Data::Dumper;

Page 47: CPAN 模組二三事

模組概覽

Page 48: CPAN 模組二三事

Shell

• Getopt::Long - 用以取得 Command Line 參數

• $ getopt.pl --take=blah --id=10 --verbose -t

Page 49: CPAN 模組二三事

Shell

• Pod::Usage - 用以針對命令列參數提供文件 my %options = ( debug => 0, );

GetOptions(\%options, qw{ help|h! version|V! debug|d! config|c=s }) or pod2usage(0);

pod2usage({ -verbose => 2, -exitval => 0, -noperldoc => 1 }) if $options{help};

Page 50: CPAN 模組二三事

Process

• Proc::Daemon

• ForkManager

• IPC::Run

Page 51: CPAN 模組二三事

Lists

• List::Util ( first max maxstr min minstr reduce shuffle sum )

• List::MoreUtils ( any all none notall true false firstidx first_index lastidx last_index insert_after insert_after_string apply after after_incl before before_incl indexes firstval first_value lastval last_value each_array each_arrayref pairwise natatime mesh zip uniq minmax )

Page 52: CPAN 模組二三事

Event

• AnyEvent::*

• POE::*

Page 53: CPAN 模組二三事

Serialization

• Data::Dumper

• Storable

• JSON (JSON::PP, JSON::XS ...)

• YAML (YAML::XS, YAML::Syck)

Page 54: CPAN 模組二三事

Web (server-side)

• AnyEvent::HTTPD

• Plack

• Catalyst , Jifty , Mojo

• Template::Declare , Template::Markpl

• Mason

Page 55: CPAN 模組二三事

Web (client-side)

• LWP::UserAgent

• LWP::Simple

• AnyEvent::HTTP

• LWP::Parallel

• HTTP::Async

Page 56: CPAN 模組二三事

Web (client-side)

• Web::Scraper

• pQuery

• WWW::Mechanize

• HTTP::Async

Page 57: CPAN 模組二三事

HTML

• HTML::Parser

• HTTP::TreeBuilder

• WebService::Validator::HTML::W3C

Page 58: CPAN 模組二三事

Documents

• Office

• Spreadsheet::WriteExcel, Spreadsheet::ParseExcel ...

• OpenOffice::*

• PDF::API2

Page 59: CPAN 模組二三事

Graphics

• GD, Imager

• Image::Magick

• Gimp

• Cairo

• GraphViz

• Image::LibRSVG

• SVG::Graph

Page 60: CPAN 模組二三事

Network

• Protocols

• Net::FTP , Net::SSH, Net::SCP, Net::DNS,

• Net::DHCP , Net::Ping ....

• Low level

• IO::Socket, Net::Packet, Net::Pcap ...

Page 61: CPAN 模組二三事

Database

• DBI (PostgreSQL, SQLite, Oracle, MySQL ...)

• DBI::Proxy, DBD::Gofer

• DBIx::Simple

Page 62: CPAN 模組二三事

ORM

• Class::DBI, DBIx::Class

• Jifty::DBI

• Prophet

• Tangram, Alzabo, SPOPS

• Rose::DB::Object, DBIx::DataModel, Fey::ORM

Page 63: CPAN 模組二三事

Tests

• Test::More, Test::BuilderDevel::CoverTest::Deep, Test::LongStringTest::Exception, Test::NoWarningsTest::MockModule, Test::MockObjectTest::Class, Test::UnitTest::LectroTest

Page 64: CPAN 模組二三事

工具

• Module::Starter

• App::Ack

• Perl::Tidy

• Perl::Tags

Page 65: CPAN 模組二三事

Debugging

• XXX

• Devel::SimpleTrace

• Devel::Graph

• Devel::LeakTrace

• Devel::NYTProf

Page 66: CPAN 模組二三事

Cache

• Cache::CHI

• Cache::Memory

• Cache::File

• Cache::Memcached

Page 67: CPAN 模組二三事

Object-oriented Programming

• Class::MOP

• Moose

• Mouse

• autobox

Page 68: CPAN 模組二三事

The External World

• Languages

• Inline: C , Java, Ruby, Python ...

• External Library

• XS

• Devel::PPPort

• Swig

• etc...

Page 69: CPAN 模組二三事

其他

• Git

• Github::Import

• Gearman

• ....

Page 70: CPAN 模組二三事

相關資源

• The Phalanx 100: http://qa.perl.org/phalanx/100/

• CPAN Search: http://search.cpan.org/

• Perldoc: http://www.perldoc.org

• Perl Cookbook

Page 71: CPAN 模組二三事
Page 72: CPAN 模組二三事
Page 73: CPAN 模組二三事

Perlbuzz.com

Page 74: CPAN 模組二三事

撰寫模組

• Module::Starter $ module-starter --mi --module=Foo::Bar \ --author=”Your Name” [email protected]

• 編寫模組 lib/Foo/Bar.pm

• 編寫測試 t/*.t

• 編寫 Makefile.PL

Page 75: CPAN 模組二三事

撰寫模組• 產生 Makefile , 測試 , 打包:

$ perl Makefile.PL $ make test $ make dist

• 申請 PAUSE ID ( http://pause.perl.org):

• 上傳模組 (CPAN::Uploader) $ make upload ... or $ cpan-upload Dist-0.01.tar.gz

Page 76: CPAN 模組二三事

如果您看到這頁代表簡報沒做完...

Page 77: CPAN 模組二三事

所以現在是 Live Demo 時間 XD

Page 78: CPAN 模組二三事

答客問時間

Page 79: CPAN 模組二三事

Thanks/c9s/