SlideShare a Scribd company logo
Catalyst Framework
     살펴보기
     by 김진(@corund)
누구에게?

   웹 개발자들에게
 (사용언어를 막론한)
무엇을?


Catalyst Framework의
        대강을
Catalyst Framework?
Perl MVC Web
   Framework
http://www.catalystframework.org/
2004.10 Maypole
Framework의 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.html)
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’; }
....
# /first
sub index :Path :Args(0) {
     my ($self, $c) = @_;
     ....
}

# /first/list
sub list :Path(‘list’) :Args(0) {
    my ($self, $c) = @_;
    ....
}
package MyApp::Controller::First::Second;
....

# /first/second
sub index :Path :Args(0) {
    my ($self, $c) = @_;
    ....
}

# /first/second/list
sub list :Path(‘list’) :Args(0) {
    my ($self, $c) = @_;
package MyApp::Controller::First::Second;
....
__PACKAGE__->config->{namespace} = ‘second’;
....

# /second
sub index :Path :Args(0) {
    my ($self, $c) = @_
    ....
}

# /second/list
sub list :Path(‘list’) :Args(0) {
    ....
package MyApp::Controller::First;
....
# /first/page/*
sub page :Path(‘page’) :Args(1) {
     my ($self, $c, $id) = @_;
     ....
}

# /first/view
sub view :Local :Args(0) {
...
• :Path (:Local, :Global)
• :Regex, :LocalRegex
• :Args(n)
• :Chained (:PathPart, :CaptureArgs)
• :Private
•   https://metacpan.org/module/Catalyst::Manual::Intro#Actions
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::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
from Catalyst Wiki
2. 웹 입출력

• $c->request: Catalyst::Request
  (https://metacpan.org/module/Catalyst::Request)

• $c->response: Catalyst::Response
  (https://metacpan.org/module/Catalyst::Response)

• UTF-8 입출력
2.3 UTF-8 입출력
Catalyst::Plugin::Unicode::Encoding
     을 추가하면 끝!
# MyApp.pm
package MyApp;
use Moose;
....
use Catalyst::Runtime 5.80;

use Catalyst qw/
    -Debug
    Unicode::Encoding
    ConfigLoader
    Static::Simple
/;

extends ‘Catalyst’;
....
뷰템플릿, 데이터저장
 소는 case by case
3. 뷰 템플릿
Template Toolkit
Catalyst::View::TT
(http://www.template-toolkit.org/)
Xslate
Catalyst::View::Xslate
      (http://xslate.org/)
myapp_create.pl view
     Html Xslate
-> MyApp::View::Xslate
$c->stash->{template}
            = ‘index.tx’;
$c->forward(‘Html’);
# Root.pm
sub 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 | View)::Module
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::*

•   $c->session
5.3 인증 & 권한

•   Catalyst::Plugin::Authentication

•   Catalyst::Authentication::Store::*

•   Catalyst::Plugin::Authorization::*

•   $c->user, $c->user_exists, $c->authenticate
......;
결(結)
Catalyst is a web framework
written in Perl and inspired by
             Perl
      From K. Diment and M. S. Trout, “The Definitive Guide to Catalyst”
감사합니다

More Related Content

PDF
스프링 부트와 로깅
PDF
다함께, FluxUtils 한바퀴!
PDF
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
PPTX
Pinpoint spring_camp 2015
PDF
spring.io를 통해 배우는 spring 개발사례
PDF
Spring Boot 1
PDF
톰캣 #01-소개
PDF
Springcamp spring boot intro
스프링 부트와 로깅
다함께, FluxUtils 한바퀴!
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Pinpoint spring_camp 2015
spring.io를 통해 배우는 spring 개발사례
Spring Boot 1
톰캣 #01-소개
Springcamp spring boot intro

What's hot (20)

PDF
Spring Boot 2
PDF
진짜기초 Node.js
PDF
백기선의 스프링 부트
PDF
톰캣 #10-모니터링
PPTX
Flux 예제 분석 2
PPTX
What is the meteor?
PPTX
RHQ를 활용한 Legacy system 모니터링
PDF
톰캣 #11-팁
PDF
rpm package 를 이용한 MySQL 설치자동화
PPTX
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
PDF
React Redux React Native
PPT
Share some development
PPTX
One-day-codelab
PPTX
Spring boot DI
PPTX
Spring 웹 프로젝트 시작하기
PDF
스프링 프레임워크 입문
PDF
React 튜토리얼 1차시
PDF
톰캣 운영 노하우
PDF
톰캣 #07-host
PDF
Eclipse web
Spring Boot 2
진짜기초 Node.js
백기선의 스프링 부트
톰캣 #10-모니터링
Flux 예제 분석 2
What is the meteor?
RHQ를 활용한 Legacy system 모니터링
톰캣 #11-팁
rpm package 를 이용한 MySQL 설치자동화
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
React Redux React Native
Share some development
One-day-codelab
Spring boot DI
Spring 웹 프로젝트 시작하기
스프링 프레임워크 입문
React 튜토리얼 1차시
톰캣 운영 노하우
톰캣 #07-host
Eclipse web
Ad

Similar to Catalyst Framework 살펴보기 (20)

PDF
GitHub Actions의 다양한 기능 활용하기 - GitHub Universe '24 Recap
DOCX
Apache 핵심 프로젝트 camel 엿보기
PPTX
Django로 배우는 쉽고 빠른 웹개발 study 자료
PDF
웹개발자가 알아야할 기술
PDF
E-Gov 기반 Mobile Web Friendly 개발
PPTX
[코세나, kosena] API 통합 워크 플로우 자동화 도구인 n8n.io 제품 소개 자료입니다.
PDF
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
PDF
Web Framework (웹 프레임워크)
PPTX
처음 시작하는 라라벨
PPTX
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
PDF
파이썬 웹프로그래밍 1탄
PPTX
Spring mvc
PDF
Portfolio
PDF
[Hello world 오픈세미나]open api client개발
PDF
RESTful API 설계
PDF
Clojure HTTP API 서버 구현을 위한 라이브러리
PDF
Modern PHP
PDF
Laravel로 스타트업 기술 스택 구성하기
PPTX
회사에서 새로운 기술_적용하기
PPTX
GitHub Actions의 다양한 기능 활용하기 - GitHub Universe '24 Recap
Apache 핵심 프로젝트 camel 엿보기
Django로 배우는 쉽고 빠른 웹개발 study 자료
웹개발자가 알아야할 기술
E-Gov 기반 Mobile Web Friendly 개발
[코세나, kosena] API 통합 워크 플로우 자동화 도구인 n8n.io 제품 소개 자료입니다.
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
Web Framework (웹 프레임워크)
처음 시작하는 라라벨
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
파이썬 웹프로그래밍 1탄
Spring mvc
Portfolio
[Hello world 오픈세미나]open api client개발
RESTful API 설계
Clojure HTTP API 서버 구현을 위한 라이브러리
Modern PHP
Laravel로 스타트업 기술 스택 구성하기
회사에서 새로운 기술_적용하기
Ad

Catalyst Framework 살펴보기

Editor's Notes