Catalyst Framework     살펴보기     by 김진(@corund)
누구에게?   웹 개발자들에게 (사용언어를 막론한)
무엇을?Catalyst Framework의        대강을
Catalyst Framework?
Perl MVC Web   Frameworkhttp://www.catalystframework.org/
2004.10 MaypoleFramework의 Fork로       시작
• 2005.4 Catalyst 5• 2006.7 Catalyst 5.7• 2009.3 Catalyst 5.8• 2011.8 Catalyst 5.9• 최근 릴리즈(5.90016) 2012.8
오래되었고, 복잡하다 는 인식. 하지만...
충분히 성숙되었고
잘 관리되고 있는 프   레임워크
즉,비동기 웹이 아닌 전통적인웹 애플리케이션 개발이라면   가장 실용적인 선택     이라고 저는 생각합니다 ......
그러면 어떻게?
1. Catalyst를 설치하고
2. 튜터리얼을             따라해본 후,(https://metacpan.org/module/Catalyst::Manual::Tutorial)
3. 프로젝트를 만들어레퍼런스를 보며 삽질     하면......
4. 끝ㅋ!    The End!
......이면 얼마나 좋겠      습니까만......
그래서전체적인 모양을 한번   봐보자
먼저범용 웹 애플리케이션프레임워크가 갖춰야    할 것들
1. 웹 요청 디스패치
2. 웹 입출력
3. 기타 등등......
기타 등등?
기타 등등에는    3.1 뷰 템플릿
3.2 모델(Model) - 데이 터 저장소 접근 또는       ORM
3.3 세션 관리
3.4 인증 & 권한
3.5 설정 관리
3.6 로깅
3.7 테스팅
3.8 플러그인 or확장 매커니즘
3.9 각종 유틸리티
그리고3.10 정말로 기타 등등
그래서      알아볼 것들• 웹 요청 디스패칭• 웹 입출력• 뷰 템플릿• 유틸리티• 모델, 세션, 인증&권한 ...... 등등
그런데먼저 알아야 할 것들
1. Perl 기본 문법
• 거침없이 배우는 펄• 참조(Reference)와 복잡한 자료구조• 패키지와 모듈• Learn Perl in about 2 hours and 30  minutes(http://qntm.org/files/perl/perl...
2. Moose               Moose::Manual(https://metacpan.org/module/Moose::Manual)
3. CPAN 사용법         How to Use CPAN, Actually?(http://advent.perl.kr/2011/2011-12-13.html)
우선 Catalyst 설치
그냥cpanm Task::Catalyst
1. 요청 디스패치• URL 라우팅• 내부 플로우 컨트롤• 전후 실행
1.1 URL 라우팅
Controller에 라우팅   정보를 포함
메서드 Attribute 이용                      Perl의 Attribute(http://aero.sarang.net/blog/2008/10/perl-attribute-1.html)
Controller 별 네임스      페이스
package MyApp::Controller::First;....BEGIN { extends ‘Catalyst::Controller’; }....# /firstsub index :Path :Args(0) {     m...
package MyApp::Controller::First::Second;....# /first/secondsub index :Path :Args(0) {    my ($self, $c) = @_;    ....}# /...
package MyApp::Controller::First::Second;....__PACKAGE__->config->{namespace} = ‘second’;....# /secondsub index :Path :Arg...
package MyApp::Controller::First;....# /first/page/*sub page :Path(‘page’) :Args(1) {     my ($self, $c, $id) = @_;     .....
• :Path (:Local, :Global)• :Regex, :LocalRegex• :Args(n)• :Chained (:PathPart, :CaptureArgs)• :Private•   https://metacpan...
1.2 내부 플로우    컨트롤
$c->forward     vs$c->detach
from Catalyst Wiki(http://wiki.catalystframework.org/wiki/)
$c->visit   vs $c->go
from Catalyst Wiki(http://wiki.catalystframework.org/wiki/)
플로우 간 데이터전  달: $c->stash
1.3 전후 실행(or 특수      액션)
begin, auto, end(https://metacpan.org/module/Catalyst::Manual::Intro#Built-in-special-actions)
•   Controller::First { begin, auto, list, end }    First::begin    First::auto    First::list    First::end•   Controller...
from Catalyst Wiki
2. 웹 입출력• $c->request: Catalyst::Request  (https://metacpan.org/module/Catalyst::Request)• $c->response: Catalyst::Respons...
2.3 UTF-8 입출력
Catalyst::Plugin::Unicode::Encoding     을 추가하면 끝!
# MyApp.pmpackage MyApp;use Moose;....use Catalyst::Runtime 5.80;use Catalyst qw/    -Debug    Unicode::Encoding    Config...
뷰템플릿, 데이터저장 소는 case by case
3. 뷰 템플릿
Template ToolkitCatalyst::View::TT(http://www.template-toolkit.org/)
XslateCatalyst::View::Xslate      (http://xslate.org/)
myapp_create.pl view     Html Xslate-> MyApp::View::Xslate
$c->stash->{template}            = ‘index.tx’;$c->forward(‘Html’);
# Root.pmsub end :RenderAction { }    (https://metacpan.org/module/Catalyst::Manual::Actions)
$c->stash->{template} =                    ‘index.tx’;
4. 유틸리티
Catalyst::Helper
• ./script/myapp_create.pl• ./script/myapp_server.pl• ./myapp.psgi
myapp_create.pl (model | controller |              view) Name Module [Args]                   <->Catalyst::Helper::(Model ...
5. 기타 등등
5.1 모델
DBIx::Class(Catalyst::Model::DBIC::        Schema)
일반 클래스(Catalyst::Model::Adapt           or)
5.2 세션•   Catalyst::Plugin::Session•   Catalyst::Plugin::Session::State::Cookie•   Catalyst::Plugin::Session::Store::*•   ...
5.3 인증 & 권한•   Catalyst::Plugin::Authentication•   Catalyst::Authentication::Store::*•   Catalyst::Plugin::Authorization::...
......;
결(結)
Catalyst is a web frameworkwritten in Perl and inspired by             Perl      From K. Diment and M. S. Trout, “The Defin...
감사합니다
Upcoming SlideShare
Loading in …5
×

Catalyst Framework 살펴보기

2,171 views

Published on

Korean Perl Workshop 2012 발표 슬라이드. Catalyst Framework 를 처음 접하는 이들에게 프레임워크의 대강을 알린다.

Published in: Technology
  • Be the first to comment

Catalyst Framework 살펴보기

  1. 1. Catalyst Framework 살펴보기 by 김진(@corund)
  2. 2. 누구에게? 웹 개발자들에게 (사용언어를 막론한)
  3. 3. 무엇을?Catalyst Framework의 대강을
  4. 4. Catalyst Framework?
  5. 5. Perl MVC Web Frameworkhttp://www.catalystframework.org/
  6. 6. 2004.10 MaypoleFramework의 Fork로 시작
  7. 7. • 2005.4 Catalyst 5• 2006.7 Catalyst 5.7• 2009.3 Catalyst 5.8• 2011.8 Catalyst 5.9• 최근 릴리즈(5.90016) 2012.8
  8. 8. 오래되었고, 복잡하다 는 인식. 하지만...
  9. 9. 충분히 성숙되었고
  10. 10. 잘 관리되고 있는 프 레임워크
  11. 11. 즉,비동기 웹이 아닌 전통적인웹 애플리케이션 개발이라면 가장 실용적인 선택 이라고 저는 생각합니다 ......
  12. 12. 그러면 어떻게?
  13. 13. 1. Catalyst를 설치하고
  14. 14. 2. 튜터리얼을 따라해본 후,(https://metacpan.org/module/Catalyst::Manual::Tutorial)
  15. 15. 3. 프로젝트를 만들어레퍼런스를 보며 삽질 하면......
  16. 16. 4. 끝ㅋ! The End!
  17. 17. ......이면 얼마나 좋겠 습니까만......
  18. 18. 그래서전체적인 모양을 한번 봐보자
  19. 19. 먼저범용 웹 애플리케이션프레임워크가 갖춰야 할 것들
  20. 20. 1. 웹 요청 디스패치
  21. 21. 2. 웹 입출력
  22. 22. 3. 기타 등등......
  23. 23. 기타 등등?
  24. 24. 기타 등등에는 3.1 뷰 템플릿
  25. 25. 3.2 모델(Model) - 데이 터 저장소 접근 또는 ORM
  26. 26. 3.3 세션 관리
  27. 27. 3.4 인증 & 권한
  28. 28. 3.5 설정 관리
  29. 29. 3.6 로깅
  30. 30. 3.7 테스팅
  31. 31. 3.8 플러그인 or확장 매커니즘
  32. 32. 3.9 각종 유틸리티
  33. 33. 그리고3.10 정말로 기타 등등
  34. 34. 그래서 알아볼 것들• 웹 요청 디스패칭• 웹 입출력• 뷰 템플릿• 유틸리티• 모델, 세션, 인증&권한 ...... 등등
  35. 35. 그런데먼저 알아야 할 것들
  36. 36. 1. Perl 기본 문법
  37. 37. • 거침없이 배우는 펄• 참조(Reference)와 복잡한 자료구조• 패키지와 모듈• Learn Perl in about 2 hours and 30 minutes(http://qntm.org/files/perl/perl.html)
  38. 38. 2. Moose Moose::Manual(https://metacpan.org/module/Moose::Manual)
  39. 39. 3. CPAN 사용법 How to Use CPAN, Actually?(http://advent.perl.kr/2011/2011-12-13.html)
  40. 40. 우선 Catalyst 설치
  41. 41. 그냥cpanm Task::Catalyst
  42. 42. 1. 요청 디스패치• URL 라우팅• 내부 플로우 컨트롤• 전후 실행
  43. 43. 1.1 URL 라우팅
  44. 44. Controller에 라우팅 정보를 포함
  45. 45. 메서드 Attribute 이용 Perl의 Attribute(http://aero.sarang.net/blog/2008/10/perl-attribute-1.html)
  46. 46. Controller 별 네임스 페이스
  47. 47. package MyApp::Controller::First;....BEGIN { extends ‘Catalyst::Controller’; }....# /firstsub index :Path :Args(0) { my ($self, $c) = @_; ....}# /first/listsub list :Path(‘list’) :Args(0) { my ($self, $c) = @_; ....}
  48. 48. package MyApp::Controller::First::Second;....# /first/secondsub index :Path :Args(0) { my ($self, $c) = @_; ....}# /first/second/listsub list :Path(‘list’) :Args(0) { my ($self, $c) = @_;
  49. 49. package MyApp::Controller::First::Second;....__PACKAGE__->config->{namespace} = ‘second’;....# /secondsub index :Path :Args(0) { my ($self, $c) = @_ ....}# /second/listsub list :Path(‘list’) :Args(0) { ....
  50. 50. package MyApp::Controller::First;....# /first/page/*sub page :Path(‘page’) :Args(1) { my ($self, $c, $id) = @_; ....}# /first/viewsub view :Local :Args(0) {...
  51. 51. • :Path (:Local, :Global)• :Regex, :LocalRegex• :Args(n)• :Chained (:PathPart, :CaptureArgs)• :Private• https://metacpan.org/module/Catalyst::Manual::Intro#Actions
  52. 52. 1.2 내부 플로우 컨트롤
  53. 53. $c->forward vs$c->detach
  54. 54. from Catalyst Wiki(http://wiki.catalystframework.org/wiki/)
  55. 55. $c->visit vs $c->go
  56. 56. from Catalyst Wiki(http://wiki.catalystframework.org/wiki/)
  57. 57. 플로우 간 데이터전 달: $c->stash
  58. 58. 1.3 전후 실행(or 특수 액션)
  59. 59. begin, auto, end(https://metacpan.org/module/Catalyst::Manual::Intro#Built-in-special-actions)
  60. 60. • Controller::First { begin, auto, list, end } First::begin First::auto First::list First::end• Controller::First::Second { begin, auto, list, end } Second::begin First::auto Second::auto Second::list Second::end• Controller::First::Second2 { auto, list } First::begin First::auto Second2:auto Second2::list First::end
  61. 61. from Catalyst Wiki
  62. 62. 2. 웹 입출력• $c->request: Catalyst::Request (https://metacpan.org/module/Catalyst::Request)• $c->response: Catalyst::Response (https://metacpan.org/module/Catalyst::Response)• UTF-8 입출력
  63. 63. 2.3 UTF-8 입출력
  64. 64. Catalyst::Plugin::Unicode::Encoding 을 추가하면 끝!
  65. 65. # MyApp.pmpackage MyApp;use Moose;....use Catalyst::Runtime 5.80;use Catalyst qw/ -Debug Unicode::Encoding ConfigLoader Static::Simple/;extends ‘Catalyst’;....
  66. 66. 뷰템플릿, 데이터저장 소는 case by case
  67. 67. 3. 뷰 템플릿
  68. 68. Template ToolkitCatalyst::View::TT(http://www.template-toolkit.org/)
  69. 69. XslateCatalyst::View::Xslate (http://xslate.org/)
  70. 70. myapp_create.pl view Html Xslate-> MyApp::View::Xslate
  71. 71. $c->stash->{template} = ‘index.tx’;$c->forward(‘Html’);
  72. 72. # Root.pmsub end :RenderAction { } (https://metacpan.org/module/Catalyst::Manual::Actions)
  73. 73. $c->stash->{template} = ‘index.tx’;
  74. 74. 4. 유틸리티
  75. 75. Catalyst::Helper
  76. 76. • ./script/myapp_create.pl• ./script/myapp_server.pl• ./myapp.psgi
  77. 77. myapp_create.pl (model | controller | view) Name Module [Args] <->Catalyst::Helper::(Model | View)::Module
  78. 78. 5. 기타 등등
  79. 79. 5.1 모델
  80. 80. DBIx::Class(Catalyst::Model::DBIC:: Schema)
  81. 81. 일반 클래스(Catalyst::Model::Adapt or)
  82. 82. 5.2 세션• Catalyst::Plugin::Session• Catalyst::Plugin::Session::State::Cookie• Catalyst::Plugin::Session::Store::*• $c->session
  83. 83. 5.3 인증 & 권한• Catalyst::Plugin::Authentication• Catalyst::Authentication::Store::*• Catalyst::Plugin::Authorization::*• $c->user, $c->user_exists, $c->authenticate
  84. 84. ......;
  85. 85. 결(結)
  86. 86. Catalyst is a web frameworkwritten in Perl and inspired by Perl From K. Diment and M. S. Trout, “The Definitive Guide to Catalyst”
  87. 87. 감사합니다

×