SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Catalyst: Framework
para el desarrollo de
aplicaciones Web
Catalyst es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.
                                                       en la cual otro proyecto de software
                                                       puede ser organizado y desarrollado.
                                                   ✔   Se ha convertido en la piedra angular
                                                       de la moderna ingeniería del software.
                                                   ✔   Es una estructura software compuesta
                                                       de componentes personalizables e
                                                       intercambiables para el desarrollo de
                                                       una aplicación.
                                                   ✔   En otras palabras, es una aplicación
                                                       genérica incompleta y configurable a
                                                       la que podemos añadirle las últimas
                                                       piezas para construir una aplicación
                                                       concreta.

Introducción                                    Objetivos de un framework
Hoy en día, con la aparición de nuevas             ✔   Desarrollo rápido.
metodologías y herramientas en el ámbito de
la ingeniería de software, el desarrollo de        ✔   Desarrollo estructurado.
aplicaciones web ha tomado un cause un             ✔   Reutilización de código.
tanto distinto a lo que se tenía hace unos
años atrás; ésto representa que, si antes con      ✔   Disminución    del   esfuerzo   en   el
el desarrollo y herramientas tradicionales             desarrollo.
demorábamos semanas y/o meses en                   ✔   Aprovechar las funcionalidades ya
prototipiarlas, meses o hasta años en                  implementadas,       no   debemos
desarrollarlas completamente. Hoy en día               reinventar la rueda.
con la aparición de los frameworks este
tiempo se ha reducido considerablemente,           ✔   Nos concentramos directamente en la
ya que ahora con la ayuda de estas nuevas              solución del problema.
herramientas como son los frameworks y             ✔   Tener   como     aliadas    a    las
teniendo como aliadas a las metodologías               metodologías de desarrollo ágil (XP,
ágiles de desarrollo, podemos prototipear              AD).
nuestras aplicaciones en cuestión de minutos
u horas, y terminar su desarrollo en una par
de semanas.                                     Patrón MVC
                                                Desde la aparición de RoR (Ruby on Rails) el
Que es un framework                             padrino de todos los frameworks de
                                                desarrollo de aplicaciones web, el patrón
   ✔   Es una estructura de soporte definida    MCV ha cobrado una notable importancia,
sobre todo por su cualidad de dividir en            ✔   Catalyst provee el pegamento, de tal
capas el desarrollo de un proyecto o                    forma que usted no haga el suyo.
aplicación web.
   ✔   Modelo: Encargado de modelar y            Características de Catalyst
       contener la lógica del dominio de la
       aplicación.                                  ✔   Se basa en el patrón MVC.
   ✔   Vista: Encargada de contener la              ✔   Tiene todo lo necesario         para
       lógica de presentación.                          desarrollar aplicaciones Web.
   ✔   Controlador: Encargado de ser el             ✔   Soporta Ajax.
       engranaje entre el modelo y la vista; y      ✔   Posee buena documentación.
       también contener la lógica del
       negocio.                                     ✔   Es multiplataforma.
                                                    ✔   Posee una numerosa comunidad de
                                                        desarrolladores y usuarios.
                                                    ✔   Inspirado en Ruby on Rails (Padrino
                                                        de la mayoría de los Frameworks).
                                                    ✔   Está en constante desarrollo.


                                                 Componentes de Catalyst
                                                 Todos los componentes de Catalyst están
                                                 almacenados en el repositorio de CPAN.


                                                 Preparando nuestro entorno
                                                 de trabajo.
          Gráfico 1: Patrón MVC
                                                 Para empezar a trabajar y desarrollar
                                                 aplicaciones web en Catalyst, precisamos
Que es Catalyst                                  cumplir algunos requisitos como ser:

   ✔   Es un framework para el desarrollo de        ✔   Tener instalado Perl y las librerías
       aplicaciones web.                                necesarias de Catalyst

   ✔   Es la respuesta de perl para Ruby on         ✔   Tener instalado algún gestor de base
       Rails.                                           de datos (Sqlite, MySQl, PostgreSQL,
                                                        MS-SQL, Oracle, entre otros).
   ✔   Permite el desarrollo de aplicaciones
       web de forma rápida.
                                                 Instalación de Catalyst
Filosofía de Catalyst                            La instalación se la puede realizar de dos
                                                 formas, desde los paquetes de nuestra
   ✔   Reutilizar código.                        distribución, o por medio de CPAN
   ✔   Desarrollar aplicaciones web de forma     Debian, Ubuntu,...
       rápida, sencilla y divertida.
                                                 $ apt-get install libcatalyst-perl
   ✔   Utilizar los mejores componentes
       actualmente disponibles.
                                                 CPAN
   ✔   Combinar todo en un paquete fácil de      $ cpan Catalyst::Runtime Catalyst::Devel
       usar.
Nuestra primera aplicación
Nuestra pequeña aplicación se enmarca en un entorno donde se mantiene el registro de
eventos (congresos, jornadas, etc), a los cuales concurren varios expositores de diferentes
nacionalidades y donde cada uno de éstos tiene una o más conferencias que impartir.




                        Gráfico 2: Diagrama E/R de nuestra aplicación
Para una mejor comprensión del potencial de Catalyst en el desarrollo de aplicaciones web,
realizaremos una aplicación paso a paso.


Estructura de un Proyecto                        aplicación.

Hoy en día, los frameworks mantienen una
forma similar de estructurar sus proyectos,
imaginemos como si se tratase de un
organigrama donde se consideran las
siguientes partes:
   1. Un proyecto contiene una o varias
      aplicaciones
   2. Una aplicación tiene uno o varios
      módulos
   3. Un módulo       tiene   una   o   varias
      acciones
   4. Una acción puede o no estar asociada
      a una vista                                    Gráfico 3: Estructura de la aplicación
   5. Creación de la aplicación
                                                 Crear un proyecto
Estructura de directorios                        Para crear un proyecto debemos hacer uso
Al igual que la mayoría de los frameworks        de la siguiente instrucción:
orientados al desarrollo de aplicaciones web,
Catalyst cuando crea los proyectos y
                                                 /usr/bin/catalyst.pl Gestion
aplicaciones, por defecto crea una estructura
de directorios definida, estructura que nos
permite mantener un orden y conocer              Esto nos dará como resultado la estructura
exactamente donde se encuentran todos y          de directorio mostrada anteriormente.
cada uno de los componentes de nuestra


Ejecución de la aplicación
Otra característica similar que poseen la mayoría de los frameworks, va referida a que éstos
vienen con un pequeño servidor de aplicaciones que nos permite ejecutar y probar nuestros
desarrollos, debemos considerar que estos pequeños servidores de aplicación solo deben ser
utilizados en etapas de prueba o pequeños desarrollos, ya que para entornos más grandes o de
producción debemos hacer uso de servidores de aplicación más robustos, orientados y con
soporte al lenguaje propio del framework; en el caso de Catalyst se puede hacer uso de Apache
y mod_perl.
El pequeño servidor de aplicaciones que acompaña a Catalyst, despliega información útil sobre
los módulos y rutas disponibles al momento de ejecutarla, como lo muestra la figura.




                              Gráfico 4: Iniciando la aplicación




                            Gráfico 5: La aplicación ejecutándose
Crear una vista genérica
La idea de generar una vista genérica es la de poder tener una superclase de vista de la cual se
pueda heredar sus características, de tal forma que en esta vista genérica podemos realizar las
adecuaciones necesarias en nuestro proyecto.


perl script/gestion_create.pl view HTML TTSite


Crear la DB
Es momento de crear una base de datos que almacene nuestra estructura entidad relación, de
nuestro modelo lógico.
En nuestro caso haremos uso de la base de datos sqlite, desde cuya línea de comandos
podemos ejecutar las siguientes instrucciones:


CREATE TABLE expositor(id INTEGER NOT NULL PRIMARY KEY,paterno VARCHAR(50),materno
VARCHAR(50), nombre VARCHAR(50), pais VARCHAR(20), email VARCHAR(50) );

CREATE TABLE conferencia (id INTEGER not null PRIMARY KEY, expositor_id INTEGER NOT
NULL,titulo VARCHAR(50), resumen TEXT);


Una vez creada las estructuras podemos proceder a insertar algunos datos de prueba


INSERT INTO expositor VALUES       (1, 'Saavedra', 'Lopez', 'Esteban','Bolivia',
'esteban@gmail.com');
INSERT INTO expositor VALUES       (2, 'Saavedra', 'Ayarde', 'Kathleen','Mexico',
'kathleen@gmail.com');
INSERT INTO expositor VALUES       (3, 'Saavedra', 'Ayarde', 'Stephanie','Brasil',
'stephanie@gmail.com');
INSERT INTO expositor VALUES       (4, 'Saavedra', 'Ayarde', 'Scarlet','España',
'scarlet@gmail.com');
INSERT INTO expositor VALUES       (5, 'Saavedra', 'Lopez', 'Jenny','Venezuela',
'jenny@gmail.com');
INSERT INTO expositor VALUES       (6, 'Saavedra', 'Lopez', 'Jeanneth','Colombia',
'jeanneth@gmail.com');

INSERT   INTO   conferencia   VALUES   (1,1,   'Primera Conferencia', 'Primer Resumen');
INSERT   INTO   conferencia   VALUES   (2,1,   'Segunda Conferencia', 'Segundo Resumen');
INSERT   INTO   conferencia   VALUES   (3,2,   'Tercer Conferencia', 'Tercero Resumen');
INSERT   INTO   conferencia   VALUES   (4,3,   'Cuarta Conferencia', 'Cuarto Resumen');
INSERT   INTO   conferencia   VALUES   (5,4,   'Quinta Conferencia', 'Quinto Resumen');
INSERT   INTO   conferencia   VALUES   (6,5,   'Sexta Conferencia', 'Sexto Resumen');
INSERT   INTO   conferencia   VALUES   (7,6,   'Septima Conferencia', 'Septimo Resumen');
INSERT   INTO   conferencia   VALUES   (8,6,   'Octava Conferencia', 'Octavo Resumen');
INSERT   INTO   conferencia   VALUES   (9,1,   'Novena Conferencia', 'Noveno Resumen');


Creación del modelo
Como comentamos anteriormente tenemos en la base de datos un modelo entidad relación,
pero al igual que la mayoría de los frameworks, Catalyst esta basado en el paradigma orientado
a objetos, por lo cual es necesario generar un modelo orientado a objetos para poder hacer uso
de toda la potencia OO que dispone el ORM del framework.
perl script/gestion_create.pl model GestionDB DBIC::Schema Gestion::Schema::GestionDB
create=static dbi:SQLite:gestion


Relaciones
Las relaciones de nuestro modelo deben verse reflejados en nuestros dominios. Catalyst
permite mantener relaciones de 1 a 1, de 1 a muchos y de muchos a muchos. Para nuestro
ejemplo las relaciones son las siguientes:
   ✔   Una conferencia es impartida por un expositor
   ✔   Un expositor puede impartir muchas conferencias
Para incluir las relaciones debe editar los archivos de los modelos correspondientes, en nuestro
caso debemos hacer los siguientes cambios:
en expositor
lib/Gestion/Schema/GestionDB/Expositor.pm
__PACKAGE__->has_many(
conferencia => 'Gestion::Schema::GestionDB::Conferencia', 'expositor_id',
{cascading_delete => 1} );


en conferencia
lib/Gestion/Schema/GestionDB/Conferencia.pm
__PACKAGE__->belongs_to(
  expositor_id => 'Gestion::Schema::GestionDB::Expositor');


Adicionalmente a las relaciones, es necesario añadir algunos métodos que permitirán realizar
algunas funciones especificas, por ejemplo devolver el nombre completo de un expositor, como
muestra el ejemplo siguiente:


sub nombrecompleto {
my $self = shift;
return $self->paterno. ' '. $self->nombre;
}


Manejo de plantillas
El tema de plantillas, es un tema importante, ya que nos permite por una lado dotarle de una
presentación adecuada (estructura, colores, efectos, etc) para cada una de las acciones
disponibles y por otra es asociarla de forma directa a cada acción por medio de su nombre.
Para lograr ésto debemos realizar algunas tareas, como las mostradas a continuación.
editar el archivo /root/lib/config/main dentro del mismo borrar la sección


   # set defaults for variables, etc.
   DEFAULT
     message = 'There is no message';


editar el archivo /lib/Gestion/View/HTML y adicionar la siguiente línea
TEMPLATE_EXTENSION => '.tt2',


ésto permitirá asociar de forma directa el nombre de una acción, con su correspondiente
plantilla (*.tt2).


Personalizando la aplicación
Una de las primeras personalizaciones que realizaremos en nuestra aplicación será crear una
nueva página de inicio, la cual nos permita desplegar ciertas opciones que posteriormente las
implementaremos.


/root/src/index.tt2
[% META title = "Bienvenidos a gestion de eventos" %]
<p>Algunas funciones iniciales de nuestro sistema.</p>
<p>Opciones:
<ul>
<li><a href="[% Catalyst.uri_for('/expositor/list') %]">Listado de expositores</a></li>
</ul>
</p>


Una vez desarrollada la nueva página de inicio, debemos hacer que ésta ahora actúe como
página de inicio, para eso debemos tener el siguiente contenido en el controlador raíz (root)


package Gestion::Controller::Root;
use strict;
use warnings;
use base 'Catalyst::Controller';
#
# Sets the actions in this controller to be registered with no prefix
# so they function identically to actions created in MyApp.pm
#
__PACKAGE__->config->{namespace} = '';

=head1 NAME
Gestion::Controller::Root - Root Controller for Gestion

=head1 DESCRIPTION

[enter your description here]

=head1 METHODS

=cut

=head2 default

=cut

sub default : Private {
    my ( $self, $c ) = @_;
    $c->response->status('404');
    $c->stash->{template} = 'not_found.tt2';
}
sub index : Private {};

=head2 end

Attempt to render a view, if needed.

=cut
sub end : ActionClass('RenderView') {}

=head1 AUTHOR

Esteban Saavedra Lopez,,,

=head1 LICENSE
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut
1;


Es momento de implementar nuestra primera acción, acción que permitirá desplegar un listado
de expositores
Inicialmente debemos tener el controlador necesario, según muestra el código siguiente:
lib/Gestion/Controller/Expositor.pm 
package Gestion::Controller::Expositor;

use strict;
use warnings;
use base 'Catalyst::Controller';

#use base qw(Catalyst::Controller::FormBuilder);
=head1 NAME
Gestion::Controller::Expositor - Catalyst Controller
=head1 DESCRIPTION
Catalyst Controller.

=head1 METHODS

=cut

=head2 list

Recupera todos los expositores y los envía a la platilla expositor/list.tt2 dentro
del stash para ser desplegado

=cut

sub list : Local {
     my ($self, $c) = @_;
     #my $expositores : Stashed = $c->model('GestionDB::Expositor');
     $c->stash->{expositores} = [$c->model('GestionDB::Expositor')->all];
     $c->stash->{template} = 'expositor/list.tt2';
}
=head1 AUTHOR
Esteban Saavedra Lopez,,,
=head1 LICENSE
This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;
Seguidamente debemos desarrollar su plantilla correspondiente, para obtener el listado de
expositores deseado, el contenido de la plantilla es mostrado a continuación:
root/src/expositor/list.tt2
[% META title = 'Listado de Expositores' -%]
<p>Listado de expositores:</p>
<ul>
[% FOREACH expositor IN expositores -%]
<li>
  [% expositor.nombrecompleto | html %]
  <a href="[% Catalyst.uri_for("/conferencia/add/$expositor.id") | html %]">Add
address</a>
  <a href="[% Catalyst.uri_for("/expositor/edit/$expositor.id") | html %]">Edit</a>
  <a href="[% Catalyst.uri_for("/expositor/delete/$expositor.id") | html %]">Delete</a>
[% SET conferencias = expositor.conferencia %]
  <ul>
  [% FOREACH conferencia = conferencias %]
   <li>
      <b>[% conferencia.titulo | html %]</b>
      <a href="[% Catalyst.uri_for("/conferencia/edit/$conferencia.id") | html %]">
Edit</a>
      <a href="[% Catalyst.uri_for("/conferencia/delete/$conferencia.id") | html %]">
Delete</a>
      <br />
      <address>
       Resumen: [% conferencia.resumen | html %]<br />
      </address>
   </li>
  [% END %]
  </ul>
</li>
[% END %]
</ul>


Ejecución y pruebas
Es turno de ver nuestra pequeña aplicación funcionando, dicha ejecución es ilustrada en la
siguiente imagen.
Referencias
[1]    http://www.catalystframework.org
[2]    The Definitive Guide to Catalyst


Autor




Esteban Saavedra López
Presidente de la Fundación AtixLibre (Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
esteban.saavedra@atixlibre.org
http://jesaavedra.opentelematics.org
http://www.atixlibre.org

Weitere ähnliche Inhalte

Was ist angesagt?

NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017Diego Bersano
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Oscar Gensollen
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCriojadotnet
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )Jairo Hoyos
 
Introduccion a Python para la web
Introduccion a Python para la webIntroduccion a Python para la web
Introduccion a Python para la webArsys
 
Desarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCDesarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCAngel Nuñez
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalSiteGround España
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Semana 1 Automatización de infraestructura y despliegue Sprint Boot
Semana 1   Automatización de infraestructura y despliegue Sprint BootSemana 1   Automatización de infraestructura y despliegue Sprint Boot
Semana 1 Automatización de infraestructura y despliegue Sprint BootRichard Eliseo Mendoza Gafaro
 

Was ist angesagt? (20)

ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 
Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
 
Semana 6 Navegación y parámetros Sprint Boot
Semana 6   Navegación y parámetros Sprint BootSemana 6   Navegación y parámetros Sprint Boot
Semana 6 Navegación y parámetros Sprint Boot
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )
 
Introduccion a Python para la web
Introduccion a Python para la webIntroduccion a Python para la web
Introduccion a Python para la web
 
Desarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCDesarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVC
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Maven
MavenMaven
Maven
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Semana 1 Automatización de infraestructura y despliegue Sprint Boot
Semana 1   Automatización de infraestructura y despliegue Sprint BootSemana 1   Automatización de infraestructura y despliegue Sprint Boot
Semana 1 Automatización de infraestructura y despliegue Sprint Boot
 
Implementando una Arquitectura de Microservicios
Implementando una Arquitectura de MicroserviciosImplementando una Arquitectura de Microservicios
Implementando una Arquitectura de Microservicios
 
Turbogears
TurbogearsTurbogears
Turbogears
 

Andere mochten auch

Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oraclevinivaldivieso
 
Confesión de fe de grandes cientificos
Confesión de fe de grandes cientificosConfesión de fe de grandes cientificos
Confesión de fe de grandes cientificosMoris Polanco
 
Teil l ii schule – heute, morgen
Teil l ii schule – heute, morgenTeil l ii schule – heute, morgen
Teil l ii schule – heute, morgenHeFre
 
Web2erc weblog wiki_forum
Web2erc weblog wiki_forumWeb2erc weblog wiki_forum
Web2erc weblog wiki_forumdavidroethler
 
Plan de emergencias alumnos 2013 14
Plan de emergencias alumnos 2013 14Plan de emergencias alumnos 2013 14
Plan de emergencias alumnos 2013 14Manuel Muriel Flores
 
Mónica rheinland-pfalz
Mónica   rheinland-pfalzMónica   rheinland-pfalz
Mónica rheinland-pfalzRocio Ramos
 
15 Web 2.0 Tools für die Bildung
15 Web 2.0 Tools für die Bildung15 Web 2.0 Tools für die Bildung
15 Web 2.0 Tools für die BildungRedaction SKODEN
 
Presentacion pei2010 13
Presentacion pei2010 13Presentacion pei2010 13
Presentacion pei2010 13Luis Bourget
 
Information Broker 2.0 - Recherche im Sozialen Web
Information Broker 2.0 - Recherche im Sozialen WebInformation Broker 2.0 - Recherche im Sozialen Web
Information Broker 2.0 - Recherche im Sozialen WebUniversity St. Gallen
 
Themenabend üBergang 45 22.01.09
Themenabend üBergang 45 22.01.09Themenabend üBergang 45 22.01.09
Themenabend üBergang 45 22.01.09HeFre
 
YP-S3 Vorschau
YP-S3 VorschauYP-S3 Vorschau
YP-S3 Vorschaumarco678
 

Andere mochten auch (20)

Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 
Confesión de fe de grandes cientificos
Confesión de fe de grandes cientificosConfesión de fe de grandes cientificos
Confesión de fe de grandes cientificos
 
El Sector Terciario DDC
El Sector Terciario DDCEl Sector Terciario DDC
El Sector Terciario DDC
 
Atix19
Atix19Atix19
Atix19
 
Spiel
SpielSpiel
Spiel
 
Teil l ii schule – heute, morgen
Teil l ii schule – heute, morgenTeil l ii schule – heute, morgen
Teil l ii schule – heute, morgen
 
Web2erc weblog wiki_forum
Web2erc weblog wiki_forumWeb2erc weblog wiki_forum
Web2erc weblog wiki_forum
 
Plan de emergencias alumnos 2013 14
Plan de emergencias alumnos 2013 14Plan de emergencias alumnos 2013 14
Plan de emergencias alumnos 2013 14
 
Web 2.0 für Museen
Web 2.0 für MuseenWeb 2.0 für Museen
Web 2.0 für Museen
 
Mónica rheinland-pfalz
Mónica   rheinland-pfalzMónica   rheinland-pfalz
Mónica rheinland-pfalz
 
15 Web 2.0 Tools für die Bildung
15 Web 2.0 Tools für die Bildung15 Web 2.0 Tools für die Bildung
15 Web 2.0 Tools für die Bildung
 
Presentacion pei2010 13
Presentacion pei2010 13Presentacion pei2010 13
Presentacion pei2010 13
 
Módulo I. PubMed
Módulo I. PubMedMódulo I. PubMed
Módulo I. PubMed
 
Information Broker 2.0 - Recherche im Sozialen Web
Information Broker 2.0 - Recherche im Sozialen WebInformation Broker 2.0 - Recherche im Sozialen Web
Information Broker 2.0 - Recherche im Sozialen Web
 
Jl
JlJl
Jl
 
Themenabend üBergang 45 22.01.09
Themenabend üBergang 45 22.01.09Themenabend üBergang 45 22.01.09
Themenabend üBergang 45 22.01.09
 
Curso de Introducción al Estándar Internacional ISO/IEC 29110
Curso de Introducción al Estándar Internacional ISO/IEC 29110Curso de Introducción al Estándar Internacional ISO/IEC 29110
Curso de Introducción al Estándar Internacional ISO/IEC 29110
 
Foto hmeridas13092015
Foto hmeridas13092015Foto hmeridas13092015
Foto hmeridas13092015
 
YP-S3 Vorschau
YP-S3 VorschauYP-S3 Vorschau
YP-S3 Vorschau
 
Partenariados ONLs Empresas Funda San Joan de Deu by Merce Tura
Partenariados ONLs Empresas Funda San Joan de Deu by Merce TuraPartenariados ONLs Empresas Funda San Joan de Deu by Merce Tura
Partenariados ONLs Empresas Funda San Joan de Deu by Merce Tura
 

Ähnlich wie Catalyst: Framework para el desarrollo de aplicaciones Web

Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webEsteban Saavedra
 
Grails: Framework para el desarrollo de aplicaciones Web No 1
Grails: Framework para el desarrollo de aplicaciones Web No 1Grails: Framework para el desarrollo de aplicaciones Web No 1
Grails: Framework para el desarrollo de aplicaciones Web No 1Esteban Saavedra
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesIván Campaña Naranjo
 
APPSWEBI4.0.pptx
APPSWEBI4.0.pptxAPPSWEBI4.0.pptx
APPSWEBI4.0.pptx22040086
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesJaqueline Luna
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidadRaelyx Cordero
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Ianpierr Miranda
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Datannakasone
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 

Ähnlich wie Catalyst: Framework para el desarrollo de aplicaciones Web (20)

Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones web
 
Grails: Framework para el desarrollo de aplicaciones Web No 1
Grails: Framework para el desarrollo de aplicaciones Web No 1Grails: Framework para el desarrollo de aplicaciones Web No 1
Grails: Framework para el desarrollo de aplicaciones Web No 1
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
ATIX20
ATIX20ATIX20
ATIX20
 
LARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptxLARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptx
 
APPSWEBI4.0.pptx
APPSWEBI4.0.pptxAPPSWEBI4.0.pptx
APPSWEBI4.0.pptx
 
Framework
FrameworkFramework
Framework
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móviles
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Symfony
SymfonySymfony
Symfony
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Data
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Net Beans
Net BeansNet Beans
Net Beans
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
El Incomprendido Drupal
El Incomprendido DrupalEl Incomprendido Drupal
El Incomprendido Drupal
 

Mehr von Esteban Saavedra (20)

Atix30
Atix30Atix30
Atix30
 
Atix29
Atix29Atix29
Atix29
 
Atix28
Atix28Atix28
Atix28
 
Atix27
Atix27Atix27
Atix27
 
Atix26
Atix26Atix26
Atix26
 
Atix25
Atix25Atix25
Atix25
 
Rabbitmq
RabbitmqRabbitmq
Rabbitmq
 
Ansible
AnsibleAnsible
Ansible
 
Perl
PerlPerl
Perl
 
Atix24
Atix24Atix24
Atix24
 
Atix23
Atix23Atix23
Atix23
 
Lineas Base Migracion a Software Libre
Lineas Base Migracion a Software LibreLineas Base Migracion a Software Libre
Lineas Base Migracion a Software Libre
 
Seguridad Sistemas de Gobierno
Seguridad Sistemas de GobiernoSeguridad Sistemas de Gobierno
Seguridad Sistemas de Gobierno
 
Tunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y FirewallsTunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y Firewalls
 
Bi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar EmpresasBi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar Empresas
 
Clouds privadas
Clouds privadasClouds privadas
Clouds privadas
 
Introduccion Computacion Ubicua
Introduccion Computacion UbicuaIntroduccion Computacion Ubicua
Introduccion Computacion Ubicua
 
Avances Tecnologicos
Avances TecnologicosAvances Tecnologicos
Avances Tecnologicos
 
Dni Electronico Bolivia
Dni Electronico BoliviaDni Electronico Bolivia
Dni Electronico Bolivia
 
E technologies
E technologiesE technologies
E technologies
 

Kürzlich hochgeladen

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Kürzlich hochgeladen (10)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Catalyst: Framework para el desarrollo de aplicaciones Web

  • 1. Catalyst: Framework para el desarrollo de aplicaciones Web Catalyst es un framework orientado al desarrollo de aplicaciones web de forma sencilla, rápida y divertida. en la cual otro proyecto de software puede ser organizado y desarrollado. ✔ Se ha convertido en la piedra angular de la moderna ingeniería del software. ✔ Es una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación. ✔ En otras palabras, es una aplicación genérica incompleta y configurable a la que podemos añadirle las últimas piezas para construir una aplicación concreta. Introducción Objetivos de un framework Hoy en día, con la aparición de nuevas ✔ Desarrollo rápido. metodologías y herramientas en el ámbito de la ingeniería de software, el desarrollo de ✔ Desarrollo estructurado. aplicaciones web ha tomado un cause un ✔ Reutilización de código. tanto distinto a lo que se tenía hace unos años atrás; ésto representa que, si antes con ✔ Disminución del esfuerzo en el el desarrollo y herramientas tradicionales desarrollo. demorábamos semanas y/o meses en ✔ Aprovechar las funcionalidades ya prototipiarlas, meses o hasta años en implementadas, no debemos desarrollarlas completamente. Hoy en día reinventar la rueda. con la aparición de los frameworks este tiempo se ha reducido considerablemente, ✔ Nos concentramos directamente en la ya que ahora con la ayuda de estas nuevas solución del problema. herramientas como son los frameworks y ✔ Tener como aliadas a las teniendo como aliadas a las metodologías metodologías de desarrollo ágil (XP, ágiles de desarrollo, podemos prototipear AD). nuestras aplicaciones en cuestión de minutos u horas, y terminar su desarrollo en una par de semanas. Patrón MVC Desde la aparición de RoR (Ruby on Rails) el Que es un framework padrino de todos los frameworks de desarrollo de aplicaciones web, el patrón ✔ Es una estructura de soporte definida MCV ha cobrado una notable importancia,
  • 2. sobre todo por su cualidad de dividir en ✔ Catalyst provee el pegamento, de tal capas el desarrollo de un proyecto o forma que usted no haga el suyo. aplicación web. ✔ Modelo: Encargado de modelar y Características de Catalyst contener la lógica del dominio de la aplicación. ✔ Se basa en el patrón MVC. ✔ Vista: Encargada de contener la ✔ Tiene todo lo necesario para lógica de presentación. desarrollar aplicaciones Web. ✔ Controlador: Encargado de ser el ✔ Soporta Ajax. engranaje entre el modelo y la vista; y ✔ Posee buena documentación. también contener la lógica del negocio. ✔ Es multiplataforma. ✔ Posee una numerosa comunidad de desarrolladores y usuarios. ✔ Inspirado en Ruby on Rails (Padrino de la mayoría de los Frameworks). ✔ Está en constante desarrollo. Componentes de Catalyst Todos los componentes de Catalyst están almacenados en el repositorio de CPAN. Preparando nuestro entorno de trabajo. Gráfico 1: Patrón MVC Para empezar a trabajar y desarrollar aplicaciones web en Catalyst, precisamos Que es Catalyst cumplir algunos requisitos como ser: ✔ Es un framework para el desarrollo de ✔ Tener instalado Perl y las librerías aplicaciones web. necesarias de Catalyst ✔ Es la respuesta de perl para Ruby on ✔ Tener instalado algún gestor de base Rails. de datos (Sqlite, MySQl, PostgreSQL, MS-SQL, Oracle, entre otros). ✔ Permite el desarrollo de aplicaciones web de forma rápida. Instalación de Catalyst Filosofía de Catalyst La instalación se la puede realizar de dos formas, desde los paquetes de nuestra ✔ Reutilizar código. distribución, o por medio de CPAN ✔ Desarrollar aplicaciones web de forma Debian, Ubuntu,... rápida, sencilla y divertida. $ apt-get install libcatalyst-perl ✔ Utilizar los mejores componentes actualmente disponibles. CPAN ✔ Combinar todo en un paquete fácil de $ cpan Catalyst::Runtime Catalyst::Devel usar.
  • 3. Nuestra primera aplicación Nuestra pequeña aplicación se enmarca en un entorno donde se mantiene el registro de eventos (congresos, jornadas, etc), a los cuales concurren varios expositores de diferentes nacionalidades y donde cada uno de éstos tiene una o más conferencias que impartir. Gráfico 2: Diagrama E/R de nuestra aplicación Para una mejor comprensión del potencial de Catalyst en el desarrollo de aplicaciones web, realizaremos una aplicación paso a paso. Estructura de un Proyecto aplicación. Hoy en día, los frameworks mantienen una forma similar de estructurar sus proyectos, imaginemos como si se tratase de un organigrama donde se consideran las siguientes partes: 1. Un proyecto contiene una o varias aplicaciones 2. Una aplicación tiene uno o varios módulos 3. Un módulo tiene una o varias acciones 4. Una acción puede o no estar asociada a una vista Gráfico 3: Estructura de la aplicación 5. Creación de la aplicación Crear un proyecto Estructura de directorios Para crear un proyecto debemos hacer uso Al igual que la mayoría de los frameworks de la siguiente instrucción: orientados al desarrollo de aplicaciones web, Catalyst cuando crea los proyectos y /usr/bin/catalyst.pl Gestion aplicaciones, por defecto crea una estructura de directorios definida, estructura que nos permite mantener un orden y conocer Esto nos dará como resultado la estructura exactamente donde se encuentran todos y de directorio mostrada anteriormente. cada uno de los componentes de nuestra Ejecución de la aplicación Otra característica similar que poseen la mayoría de los frameworks, va referida a que éstos vienen con un pequeño servidor de aplicaciones que nos permite ejecutar y probar nuestros
  • 4. desarrollos, debemos considerar que estos pequeños servidores de aplicación solo deben ser utilizados en etapas de prueba o pequeños desarrollos, ya que para entornos más grandes o de producción debemos hacer uso de servidores de aplicación más robustos, orientados y con soporte al lenguaje propio del framework; en el caso de Catalyst se puede hacer uso de Apache y mod_perl. El pequeño servidor de aplicaciones que acompaña a Catalyst, despliega información útil sobre los módulos y rutas disponibles al momento de ejecutarla, como lo muestra la figura. Gráfico 4: Iniciando la aplicación Gráfico 5: La aplicación ejecutándose
  • 5. Crear una vista genérica La idea de generar una vista genérica es la de poder tener una superclase de vista de la cual se pueda heredar sus características, de tal forma que en esta vista genérica podemos realizar las adecuaciones necesarias en nuestro proyecto. perl script/gestion_create.pl view HTML TTSite Crear la DB Es momento de crear una base de datos que almacene nuestra estructura entidad relación, de nuestro modelo lógico. En nuestro caso haremos uso de la base de datos sqlite, desde cuya línea de comandos podemos ejecutar las siguientes instrucciones: CREATE TABLE expositor(id INTEGER NOT NULL PRIMARY KEY,paterno VARCHAR(50),materno VARCHAR(50), nombre VARCHAR(50), pais VARCHAR(20), email VARCHAR(50) ); CREATE TABLE conferencia (id INTEGER not null PRIMARY KEY, expositor_id INTEGER NOT NULL,titulo VARCHAR(50), resumen TEXT); Una vez creada las estructuras podemos proceder a insertar algunos datos de prueba INSERT INTO expositor VALUES (1, 'Saavedra', 'Lopez', 'Esteban','Bolivia', 'esteban@gmail.com'); INSERT INTO expositor VALUES (2, 'Saavedra', 'Ayarde', 'Kathleen','Mexico', 'kathleen@gmail.com'); INSERT INTO expositor VALUES (3, 'Saavedra', 'Ayarde', 'Stephanie','Brasil', 'stephanie@gmail.com'); INSERT INTO expositor VALUES (4, 'Saavedra', 'Ayarde', 'Scarlet','España', 'scarlet@gmail.com'); INSERT INTO expositor VALUES (5, 'Saavedra', 'Lopez', 'Jenny','Venezuela', 'jenny@gmail.com'); INSERT INTO expositor VALUES (6, 'Saavedra', 'Lopez', 'Jeanneth','Colombia', 'jeanneth@gmail.com'); INSERT INTO conferencia VALUES (1,1, 'Primera Conferencia', 'Primer Resumen'); INSERT INTO conferencia VALUES (2,1, 'Segunda Conferencia', 'Segundo Resumen'); INSERT INTO conferencia VALUES (3,2, 'Tercer Conferencia', 'Tercero Resumen'); INSERT INTO conferencia VALUES (4,3, 'Cuarta Conferencia', 'Cuarto Resumen'); INSERT INTO conferencia VALUES (5,4, 'Quinta Conferencia', 'Quinto Resumen'); INSERT INTO conferencia VALUES (6,5, 'Sexta Conferencia', 'Sexto Resumen'); INSERT INTO conferencia VALUES (7,6, 'Septima Conferencia', 'Septimo Resumen'); INSERT INTO conferencia VALUES (8,6, 'Octava Conferencia', 'Octavo Resumen'); INSERT INTO conferencia VALUES (9,1, 'Novena Conferencia', 'Noveno Resumen'); Creación del modelo Como comentamos anteriormente tenemos en la base de datos un modelo entidad relación, pero al igual que la mayoría de los frameworks, Catalyst esta basado en el paradigma orientado a objetos, por lo cual es necesario generar un modelo orientado a objetos para poder hacer uso de toda la potencia OO que dispone el ORM del framework.
  • 6. perl script/gestion_create.pl model GestionDB DBIC::Schema Gestion::Schema::GestionDB create=static dbi:SQLite:gestion Relaciones Las relaciones de nuestro modelo deben verse reflejados en nuestros dominios. Catalyst permite mantener relaciones de 1 a 1, de 1 a muchos y de muchos a muchos. Para nuestro ejemplo las relaciones son las siguientes: ✔ Una conferencia es impartida por un expositor ✔ Un expositor puede impartir muchas conferencias Para incluir las relaciones debe editar los archivos de los modelos correspondientes, en nuestro caso debemos hacer los siguientes cambios: en expositor lib/Gestion/Schema/GestionDB/Expositor.pm __PACKAGE__->has_many( conferencia => 'Gestion::Schema::GestionDB::Conferencia', 'expositor_id', {cascading_delete => 1} ); en conferencia lib/Gestion/Schema/GestionDB/Conferencia.pm __PACKAGE__->belongs_to( expositor_id => 'Gestion::Schema::GestionDB::Expositor'); Adicionalmente a las relaciones, es necesario añadir algunos métodos que permitirán realizar algunas funciones especificas, por ejemplo devolver el nombre completo de un expositor, como muestra el ejemplo siguiente: sub nombrecompleto { my $self = shift; return $self->paterno. ' '. $self->nombre; } Manejo de plantillas El tema de plantillas, es un tema importante, ya que nos permite por una lado dotarle de una presentación adecuada (estructura, colores, efectos, etc) para cada una de las acciones disponibles y por otra es asociarla de forma directa a cada acción por medio de su nombre. Para lograr ésto debemos realizar algunas tareas, como las mostradas a continuación. editar el archivo /root/lib/config/main dentro del mismo borrar la sección # set defaults for variables, etc. DEFAULT message = 'There is no message'; editar el archivo /lib/Gestion/View/HTML y adicionar la siguiente línea
  • 7. TEMPLATE_EXTENSION => '.tt2', ésto permitirá asociar de forma directa el nombre de una acción, con su correspondiente plantilla (*.tt2). Personalizando la aplicación Una de las primeras personalizaciones que realizaremos en nuestra aplicación será crear una nueva página de inicio, la cual nos permita desplegar ciertas opciones que posteriormente las implementaremos. /root/src/index.tt2 [% META title = "Bienvenidos a gestion de eventos" %] <p>Algunas funciones iniciales de nuestro sistema.</p> <p>Opciones: <ul> <li><a href="[% Catalyst.uri_for('/expositor/list') %]">Listado de expositores</a></li> </ul> </p> Una vez desarrollada la nueva página de inicio, debemos hacer que ésta ahora actúe como página de inicio, para eso debemos tener el siguiente contenido en el controlador raíz (root) package Gestion::Controller::Root; use strict; use warnings; use base 'Catalyst::Controller'; # # Sets the actions in this controller to be registered with no prefix # so they function identically to actions created in MyApp.pm # __PACKAGE__->config->{namespace} = ''; =head1 NAME Gestion::Controller::Root - Root Controller for Gestion =head1 DESCRIPTION [enter your description here] =head1 METHODS =cut =head2 default =cut sub default : Private { my ( $self, $c ) = @_; $c->response->status('404'); $c->stash->{template} = 'not_found.tt2'; }
  • 8. sub index : Private {}; =head2 end Attempt to render a view, if needed. =cut sub end : ActionClass('RenderView') {} =head1 AUTHOR Esteban Saavedra Lopez,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; Es momento de implementar nuestra primera acción, acción que permitirá desplegar un listado de expositores Inicialmente debemos tener el controlador necesario, según muestra el código siguiente: lib/Gestion/Controller/Expositor.pm  package Gestion::Controller::Expositor; use strict; use warnings; use base 'Catalyst::Controller'; #use base qw(Catalyst::Controller::FormBuilder); =head1 NAME Gestion::Controller::Expositor - Catalyst Controller =head1 DESCRIPTION Catalyst Controller. =head1 METHODS =cut =head2 list Recupera todos los expositores y los envía a la platilla expositor/list.tt2 dentro del stash para ser desplegado =cut sub list : Local { my ($self, $c) = @_; #my $expositores : Stashed = $c->model('GestionDB::Expositor'); $c->stash->{expositores} = [$c->model('GestionDB::Expositor')->all]; $c->stash->{template} = 'expositor/list.tt2'; } =head1 AUTHOR Esteban Saavedra Lopez,,, =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;
  • 9. Seguidamente debemos desarrollar su plantilla correspondiente, para obtener el listado de expositores deseado, el contenido de la plantilla es mostrado a continuación: root/src/expositor/list.tt2 [% META title = 'Listado de Expositores' -%] <p>Listado de expositores:</p> <ul> [% FOREACH expositor IN expositores -%] <li> [% expositor.nombrecompleto | html %] <a href="[% Catalyst.uri_for("/conferencia/add/$expositor.id") | html %]">Add address</a> <a href="[% Catalyst.uri_for("/expositor/edit/$expositor.id") | html %]">Edit</a> <a href="[% Catalyst.uri_for("/expositor/delete/$expositor.id") | html %]">Delete</a> [% SET conferencias = expositor.conferencia %] <ul> [% FOREACH conferencia = conferencias %] <li> <b>[% conferencia.titulo | html %]</b> <a href="[% Catalyst.uri_for("/conferencia/edit/$conferencia.id") | html %]"> Edit</a> <a href="[% Catalyst.uri_for("/conferencia/delete/$conferencia.id") | html %]"> Delete</a> <br /> <address> Resumen: [% conferencia.resumen | html %]<br /> </address> </li> [% END %] </ul> </li> [% END %] </ul> Ejecución y pruebas Es turno de ver nuestra pequeña aplicación funcionando, dicha ejecución es ilustrada en la siguiente imagen.
  • 10. Referencias [1] http://www.catalystframework.org [2] The Definitive Guide to Catalyst Autor Esteban Saavedra López Presidente de la Fundación AtixLibre (Bolivia) Activista de Software Libre en Bolivia jesaavedra@opentelematics.org esteban.saavedra@atixlibre.org http://jesaavedra.opentelematics.org http://www.atixlibre.org