SlideShare una empresa de Scribd logo
Javier E. Pérez P. Noviembre 2007 Desarrollo de aplicaciones web usando Catalyst y jQuery
Puntos a tratar ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¿Qué es Catalyst? ,[object Object],[object Object],[object Object],[object Object]
Metodología MVC ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ventajas de su uso
Ventajas de su uso ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ventajas de su uso ,[object Object],http://www.google.com/search ?hl=es&client=iceweasel-a&q=catalyst&btnG=Buscar  http://www.administracion.com/usuario ?id=11222333&accion=eliminar QueryString http://www.google.com/search/ lenguale/es/cliente/iceweasel-a/q/catalyst/Buscar  http://www.administracion.com/usuario /11222333/eliminar Basado en segmentos (segment based)
[object Object],“ there's nothing magical about catalyst, it doesn't get in your way,  it just dispatches urls to actions” Ventajas de su uso use PDF::CreateSimple; sub pdf : Local { my ($self,$c,$mensaje) = @_; # Heredamos el módulo como lo haríamos con cualquier aplicación CGI my $pdfFile = PDF::CreateSimple->new("root/reporte.pdf",undef,'LETTER'); # Pasamos algunos parametros (Esto no es catalyst, es perl) $pdfFile->drawText($mensaje,'Verdana',10,200,450,'black',3); $pdfFile->drawText('Generado con Catalyst','Verdana',10,200,400,'black',3); $pdfFile->drawImage('root/images/catalyst-logo.png',250,300); # esto no envía el pdf para descargar, sino que lo guarda en el disco $pdfFile->closeFile;  # Ahora enviamos al navegador a que muestre el archivo recién guardado $c->res->redirect("/archivo.pdf"); }
[object Object],[object Object]
Instalación ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creando un proyecto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
Creando controlador ,[object Object],[object Object],http://localhost:3000/ unesco_area / saludo ,[object Object],[object Object],package   sistap::Controller::unesco_area; use strict; use warnings; use base  'Catalyst::Controller'; sub  index : Private { my  ( $self, $c ) = @_; $c->response->body( 'Hola mundo' ); } sub  saludo : Local { my  ( $self, $c ) = @_; $c->response->body( 'Hola mundo... de nuevo' ); } 1;
Métodos de despacho ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],sub saludo  : Local  { my ( $self, $c ) = @_; $c->res->body('dvst'); }
Metodos de despacho ,[object Object],sub  wiki : PathPart('wiki') Chained('/') CaptureArgs(1) { my  ( $self, $c, $page_name ) = @_; # carga la página de nombre $page_name y coloca el objeto en el stash   $c->stash->{var1} = $page_name; } sub  rev : PathPart('rev') Chained('wiki') CaptureArgs(1) { my  ( $self, $c, $revision_id ) = @_; #  Usa el objeto de página que está en el stash y obtiene el número  # de revisión $revision_id.   $c->stash->{var2} = $revision_id  ; } sub  view : PathPart Chained('rev') Args(0) { my  ( $self, $c ) = @_; #  Muestra la revisión de la página en pantalla, my $salida ; $salida =  "Esta pantalla muestra la revision: "  . $c->stash->{var2} ; $salida .=  " de la pagina: "  .  $c->stash->{var1} ; $c->res->body($salida); } URL: http://localhost:3000/wiki/principal/rev/4/view  Salida por pantalla: Esta pantalla muestra la revision: 4 de la pagina: principal sub  view : PathPart Chained('wiki') Args(0) { my  ( $self, $c ) = @_; #  Muestra la revisión de la página en pantalla, my $salida ; $salida =  "Esta pantalla muestra la revision: "  . $c->stash->{var2} ; $salida .=  " de la pagina: "  .  $c->stash->{var1} ; $c->res->body($salida); }
Creando un modelo  (DBIx::Class -> Catalyst::Model::DBIC::Schema) ,[object Object],package   sistapDB ; =head1 NAME  sistapDB - DBIC Schema Class =cut # Nuetro esquema necesita heredar desde 'DBIx::Class::Schema' use base   qw/DBIx::Class::Schema/ ; # Se necesitan cargas las clases de modelo de base de datos acá __PACKAGE__->load_classes({ sistapDB => [qw/ unesco_area unesco_subarea unesco_categoria /] }); 1 ;
Creando un modelo ,[object Object],[object Object],[object Object],package   sistapDB::unesco_area; use base  qw/DBIx::Class/;  # Se cargan componentes requeridos por DBIC __PACKAGE__->load_components( qw/PK::Auto Core/ ); # Se asigna el nombre de la base de datos  __PACKAGE__->table( 'sta_unesco_area' ); # Se listan los campos de la tabla __PACKAGE__->add_columns( qw/id codigo nombre descripcion activo / ); # Se indica la llave primaria de la tabla __PACKAGE__->set_primary_key( qw/id/ ); # Asignamos las relaciones  __PACKAGE__->has_many(  subareas => 'sistapDB::unesco_subarea','id_unesco_area' ); 1 ;
Creando un modelo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Trabajando con relaciones package sistapDB::unesco_area; #... Se hereda clase ; Carga de componentes ; nombre de la tabla ; nombre columnas ; llave primaria __PACKAGE__->add_columns(qw/id_area nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->has_many( subareas => 'sistapDB::unesco_subarea',' id_area '); package sistapDB::unesco_subarea; #... igual que arriba __PACKAGE__->add_columns(qw/id_subarea  id_area  nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->belongs_to( area => 'sistapDB::unesco_area',' id_area '); __PACKAGE__->has_many( categorias => 'sistapDB::unesco_subarea',' id_subarea '); package sistapDB::unesco_categoria; #... igual que arriba __PACKAGE__->add_columns(qw/id_categoria  id_subarea  nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->belongs_to( subarea => 'sistapDB::unesco_subarea',' id_subarea ');
Usando DBIC en el controlador ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Paginador usando DBIC Plantilla (Template Toolkit) Controlador ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vistas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vistas (TTSite -> Catalyst::Helper::View::TTSite) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],. |--  lib |  |--  config |  |  |-- col |  |  |-- main |  |  `-- url |  `--  site |  |-- footer |  |-- header |  |-- html |  |-- layout |  `-- wrapper `---  src |-- error.tt2 |-- message.tt2 |-- ttsite.css `-- welcome.tt2
Vistas (Template Toolkit) ,[object Object],[object Object],[object Object]
Vistas (JSON) ,[object Object],[object Object],my  @estados = $c->model ( "sistapDB::paises" )->find($id_pais)->estados( undef ,{ order_by  => ' nombre ' }) ; $c->stash ->{estados} = [ map  { {  id_estado  =>  $_->id_estado  ,  nombre_estado  =>  $_->nombre  } }  @estados  ]; $c->forward (' sistap::View::JSON '); my  @estados = $c->model ( "sistapDB::paises" )->find($id_pais)->estados()->all ; $c->stash ->{estados} =  @estados  ; $c->forward (' sistap::View::JSON ');
Vistas ,[object Object],[object Object],[object Object],--- name: sistap default_view: TT authentication: ...
Agregando módulos  (Catalyst::Plugin) lib/sistap.pm ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Generación de formularios Catalyst::Controller::FormBuilder
Generación de formularios ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
FormBuilder en Catalyst  (CGI::FormBuilder) Descripción del formulario (root/forms/unesco_subarea/comun.fb) ,[object Object],[object Object],[object Object],[object Object],[object Object],*  la validación absoluta debería aplicarse a nivel de base de datos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
FormBuilder en Catalyst  (CGI::FormBuilder) Controlador (lib/sistap/Controller/unesco_subarea) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
FormBuilder en Catalyst  (CGI::FormBuilder) Plantilla (root/src/unesco_subarea/comun.tt) ó ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Variables de session
Uso de sesiones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
uso de Flash  (BTW: nada que ver con adobe ™  ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Autenticación / Autorización
Autenticación y autorización --- name:  sistap default_view:  TT authentication: dbic: # nombre del esquema que contiene la informacion de los usuarios user_class:  sistapDB::usuarios # Este es el nombre del campo en la tabla de usuarios, que contiene el nombre del  usuario user_field:  username # Este es el nombre del campo en la tabla de usuarios, que contiene la clave del usuario password_field:  password # Habilitar claves cifradas password_type:  hashed # Usamos el algoritmo de cifrado SHA-1 password_hash_type:  SHA-1 authorization: dbic: # nombre del esquema que contiene la informacion de los roles del usuario role_class:  sistapDB::roles # Este es el nombre del campo en la tabla de de roles, que contiene los diferentes roles role_field:  rol # The name of the accessor used to map a role to the users who have this role # nombre de la relación asociada a la tabla de usuarios_roles role_rel:  map_user_role # nombre del campo en la tabla de relación usuarios_roles que referencia al usuario (id) user_role_user_field:  usuario_id
Autenticación y autorización ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery
¿Qué es jQuery? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery: Selectores ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajax   (ahah)
Ajax   (ahah) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajax (JSON) ,[object Object],my  $id_pais  =  $c->req->param ( “pais_id” ); my  @estados = $c->model ( "sistapDB::paises" )->find($id_pais)->estados( undef ,{ order_by  => ' nombre ' }) ; $c->stash ->{estados} = [ map  { {  id_estado  =>  $_->id_estado  ,  nombre_estado  =>  $_->nombre  } }  @estados  ]; $c->forward (' sistap::View::JSON '); ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery: plugins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery: plugin TABS jQuery(function(){ jQuery('#menu-subvencion').tabs({ fxFade : true , fxSpeed : 'fast' , remote: true }); }) <script type=&quot;text/javascript&quot; src=&quot;[% Catalyst.uri_for('/js/tabs/jquery.history_remote.pack.js') %]&quot;>  </script> <script type=&quot;text/javascript&quot; src=&quot;[% Catalyst.uri_for('/js/tabs/jquery.tabs.js') %]&quot;>  </script> <link href=&quot;[% Catalyst.uri_for('/js/tabs/jquery.tabs.css') %]&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery: plugin jdMenu ,[object Object],[object Object],[object Object],<script type=&quot;text/javascript&quot; src=&quot;[% Catalyst.uri_for('/js/tabs/jquery.dimmension.js') %]&quot;>  </script> <script type=&quot;text/javascript&quot; src=&quot;[% Catalyst.uri_for('/js/tabs/jquery.jdMenu.js') %]&quot;>  </script> <link href=&quot;[% Catalyst.uri_for('/js/tabs/jdMenu.css') %]&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /> <link href=&quot;[% Catalyst.uri_for('/js/tabs/jdMenu.slate.css') %]&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
jQuery: plugin thickbox <script type=&quot;text/javascript&quot; src=&quot;[% Catalyst.uri_for('/js/thickbox/thickbox.js') %]&quot; > </script> <link href=&quot;[% Catalyst.uri_for('/js/thickbox/thickbox.css') %]&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Depuración
Depuración ,[object Object]
Depuración ,[object Object]
Depuración ,[object Object]
Consejos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Proyectos libres nacionales desarrollados usando Catalyst  ( Que conozco hasta ahora ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¿Preguntas?
Gracias por su atención

Más contenido relacionado

La actualidad más candente

Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Asier Marqués
 
Customizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realCustomizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realwpargentina
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
16 Php. Variables Predefinidas
16 Php. Variables Predefinidas16 Php. Variables Predefinidas
16 Php. Variables PredefinidasJosé M. Padilla
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaDavid J. Brenes
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Javier Eguiluz
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivosYimy Pérez Medina
 
Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSJavier Abadía
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4pokerpc
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Adobe phonegap / Cordova API
Adobe phonegap / Cordova APIAdobe phonegap / Cordova API
Adobe phonegap / Cordova APIYamil Lambert
 
Sacale partido al personalizador
Sacale partido al personalizadorSacale partido al personalizador
Sacale partido al personalizadorPablo López Mestre
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalMediaglobe Innova
 

La actualidad más candente (20)

Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
Segunda sesion
Segunda sesionSegunda sesion
Segunda sesion
 
Ajax
AjaxAjax
Ajax
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
02%20 ant
02%20 ant02%20 ant
02%20 ant
 
Customizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realCustomizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo real
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
16 Php. Variables Predefinidas
16 Php. Variables Predefinidas16 Php. Variables Predefinidas
16 Php. Variables Predefinidas
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Backend (sf2Vigo)
Backend (sf2Vigo)Backend (sf2Vigo)
Backend (sf2Vigo)
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivos
 
Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJS
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Adobe phonegap / Cordova API
Adobe phonegap / Cordova APIAdobe phonegap / Cordova API
Adobe phonegap / Cordova API
 
Sacale partido al personalizador
Sacale partido al personalizadorSacale partido al personalizador
Sacale partido al personalizador
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en Drupal
 

Destacado

SG09 Ux Flash Catalyst
SG09 Ux Flash CatalystSG09 Ux Flash Catalyst
SG09 Ux Flash CatalystEdgar Parada
 
Creación de Widgets con Flash Catalyst
Creación de Widgets con Flash CatalystCreación de Widgets con Flash Catalyst
Creación de Widgets con Flash CatalystDaniel Ramos
 
Tabla Comparativa SWITCHES CISCO
Tabla Comparativa SWITCHES CISCOTabla Comparativa SWITCHES CISCO
Tabla Comparativa SWITCHES CISCOliras loca
 
Flash Catalyst, como diseñar aplicaciones RIA
Flash Catalyst, como diseñar aplicaciones RIAFlash Catalyst, como diseñar aplicaciones RIA
Flash Catalyst, como diseñar aplicaciones RIAFutura Networks
 
Présentation Créagora: Le "Lean Startup"
Présentation Créagora: Le "Lean Startup"Présentation Créagora: Le "Lean Startup"
Présentation Créagora: Le "Lean Startup"Davender Gupta
 
Gcspwwapril2013linkedin
Gcspwwapril2013linkedinGcspwwapril2013linkedin
Gcspwwapril2013linkedinwinklepw
 
Nitrogen Summary study of private fleet greg stephens 2014
Nitrogen Summary study of private fleet greg stephens 2014Nitrogen Summary study of private fleet greg stephens 2014
Nitrogen Summary study of private fleet greg stephens 2014Lean Transit Consulting
 
Airbus military engineering update 2012
Airbus military engineering update 2012Airbus military engineering update 2012
Airbus military engineering update 2012ICSA, LLC
 
The F-35 and UID
The F-35 and UIDThe F-35 and UID
The F-35 and UIDICSA, LLC
 
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-series
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-seriesRscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-series
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-seriesCERTyou Formation
 
A catalyst to bridge demand for skilled workforce
A catalyst to bridge demand for skilled workforceA catalyst to bridge demand for skilled workforce
A catalyst to bridge demand for skilled workforceCoCubes.com
 
Catalytic Reforming: Catalyst, Process Technology and Operations Overview
Catalytic Reforming:  Catalyst, Process Technology and Operations OverviewCatalytic Reforming:  Catalyst, Process Technology and Operations Overview
Catalytic Reforming: Catalyst, Process Technology and Operations OverviewGerard B. Hawkins
 
Votre Startup: La réponse à un problème qui mérite une solution
Votre Startup: La réponse à un problème qui mérite une solutionVotre Startup: La réponse à un problème qui mérite une solution
Votre Startup: La réponse à un problème qui mérite une solutionDavender Gupta
 
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s Going
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s GoingBig Data in Healthcare Made Simple: Where It Stands Today and Where It’s Going
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s GoingHealth Catalyst
 
Healthcare Information Systems - Past, Present, and Future
Healthcare Information Systems - Past, Present, and FutureHealthcare Information Systems - Past, Present, and Future
Healthcare Information Systems - Past, Present, and FutureHealth Catalyst
 

Destacado (20)

SG09 Ux Flash Catalyst
SG09 Ux Flash CatalystSG09 Ux Flash Catalyst
SG09 Ux Flash Catalyst
 
Creación de Widgets con Flash Catalyst
Creación de Widgets con Flash CatalystCreación de Widgets con Flash Catalyst
Creación de Widgets con Flash Catalyst
 
01 Introducción a Flash Catalyst
01 Introducción a Flash Catalyst01 Introducción a Flash Catalyst
01 Introducción a Flash Catalyst
 
Mind jet catalyst
Mind jet catalystMind jet catalyst
Mind jet catalyst
 
Tabla Comparativa SWITCHES CISCO
Tabla Comparativa SWITCHES CISCOTabla Comparativa SWITCHES CISCO
Tabla Comparativa SWITCHES CISCO
 
Flash Catalyst, como diseñar aplicaciones RIA
Flash Catalyst, como diseñar aplicaciones RIAFlash Catalyst, como diseñar aplicaciones RIA
Flash Catalyst, como diseñar aplicaciones RIA
 
Présentation Créagora: Le "Lean Startup"
Présentation Créagora: Le "Lean Startup"Présentation Créagora: Le "Lean Startup"
Présentation Créagora: Le "Lean Startup"
 
Presentation platform flash
Presentation platform flashPresentation platform flash
Presentation platform flash
 
Gcspwwapril2013linkedin
Gcspwwapril2013linkedinGcspwwapril2013linkedin
Gcspwwapril2013linkedin
 
cv
cvcv
cv
 
Nitrogen Summary study of private fleet greg stephens 2014
Nitrogen Summary study of private fleet greg stephens 2014Nitrogen Summary study of private fleet greg stephens 2014
Nitrogen Summary study of private fleet greg stephens 2014
 
Airbus military engineering update 2012
Airbus military engineering update 2012Airbus military engineering update 2012
Airbus military engineering update 2012
 
The F-35 and UID
The F-35 and UIDThe F-35 and UID
The F-35 and UID
 
New Maint Philo
New Maint PhiloNew Maint Philo
New Maint Philo
 
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-series
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-seriesRscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-series
Rscat6 k formation-mettre-en-oeuvre-les-switches-cisco-catalyst-6500-series
 
A catalyst to bridge demand for skilled workforce
A catalyst to bridge demand for skilled workforceA catalyst to bridge demand for skilled workforce
A catalyst to bridge demand for skilled workforce
 
Catalytic Reforming: Catalyst, Process Technology and Operations Overview
Catalytic Reforming:  Catalyst, Process Technology and Operations OverviewCatalytic Reforming:  Catalyst, Process Technology and Operations Overview
Catalytic Reforming: Catalyst, Process Technology and Operations Overview
 
Votre Startup: La réponse à un problème qui mérite une solution
Votre Startup: La réponse à un problème qui mérite une solutionVotre Startup: La réponse à un problème qui mérite une solution
Votre Startup: La réponse à un problème qui mérite une solution
 
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s Going
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s GoingBig Data in Healthcare Made Simple: Where It Stands Today and Where It’s Going
Big Data in Healthcare Made Simple: Where It Stands Today and Where It’s Going
 
Healthcare Information Systems - Past, Present, and Future
Healthcare Information Systems - Past, Present, and FutureHealthcare Information Systems - Past, Present, and Future
Healthcare Information Systems - Past, Present, and Future
 

Similar a Desarrollo de aplicaciones web usando Catalyst y jQuery

tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Curso de Django | Django Course
Curso de Django | Django CourseCurso de Django | Django Course
Curso de Django | Django Coursealeperalta
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladoresPedro Cambra
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2cyberleon95
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispanohdgarcia
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl googleSeveredDRA
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básicocamposer
 

Similar a Desarrollo de aplicaciones web usando Catalyst y jQuery (20)

tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Curso de Django | Django Course
Curso de Django | Django CourseCurso de Django | Django Course
Curso de Django | Django Course
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
6.angular js
6.angular js6.angular js
6.angular js
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
9.laravel
9.laravel9.laravel
9.laravel
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 

Último

¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesssuserbe0d1c
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 

Último (20)

¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptuales
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 

Desarrollo de aplicaciones web usando Catalyst y jQuery

  • 1. Javier E. Pérez P. Noviembre 2007 Desarrollo de aplicaciones web usando Catalyst y jQuery
  • 2.
  • 3.
  • 4.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Trabajando con relaciones package sistapDB::unesco_area; #... Se hereda clase ; Carga de componentes ; nombre de la tabla ; nombre columnas ; llave primaria __PACKAGE__->add_columns(qw/id_area nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->has_many( subareas => 'sistapDB::unesco_subarea',' id_area '); package sistapDB::unesco_subarea; #... igual que arriba __PACKAGE__->add_columns(qw/id_subarea id_area nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->belongs_to( area => 'sistapDB::unesco_area',' id_area '); __PACKAGE__->has_many( categorias => 'sistapDB::unesco_subarea',' id_subarea '); package sistapDB::unesco_categoria; #... igual que arriba __PACKAGE__->add_columns(qw/id_categoria id_subarea nombre/); # empezamos a declarar las relaciones a nivel de ORM __PACKAGE__->belongs_to( subarea => 'sistapDB::unesco_subarea',' id_subarea ');
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. Generación de formularios Catalyst::Controller::FormBuilder
  • 29.
  • 30.
  • 31.
  • 32.
  • 34.
  • 35.
  • 37. Autenticación y autorización --- name: sistap default_view: TT authentication: dbic: # nombre del esquema que contiene la informacion de los usuarios user_class: sistapDB::usuarios # Este es el nombre del campo en la tabla de usuarios, que contiene el nombre del usuario user_field: username # Este es el nombre del campo en la tabla de usuarios, que contiene la clave del usuario password_field: password # Habilitar claves cifradas password_type: hashed # Usamos el algoritmo de cifrado SHA-1 password_hash_type: SHA-1 authorization: dbic: # nombre del esquema que contiene la informacion de los roles del usuario role_class: sistapDB::roles # Este es el nombre del campo en la tabla de de roles, que contiene los diferentes roles role_field: rol # The name of the accessor used to map a role to the users who have this role # nombre de la relación asociada a la tabla de usuarios_roles role_rel: map_user_role # nombre del campo en la tabla de relación usuarios_roles que referencia al usuario (id) user_role_user_field: usuario_id
  • 38.
  • 40.
  • 41.
  • 42.
  • 43. Ajax (ahah)
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 57. Gracias por su atención