Mejores Prácticas - Parte I

Documentos relacionados
Desarrollo Web con PHP y MySQL

Universidad de Cantabria

Objetivos y Temario CURSO MySQL 5

Sistema Gestor de Bases de Datos. Un SGBD debe permitir: Manipular la base de datos: realizar consultas, actualizarla, generar informes.

Ventajas de usar Symfony

Optativa II. Octubre Marzo Horas Semanales: 5 Créditos 80 Quinto Ciclo de Análisis de Sistemas

Acceso a bases de datos en Perl

3. DESARROLLO Y HERRAMIENTAS

Gestión de Bases de Datos. Prof. Marlene Goncalves Universidad Simón Bolívar

Symfony Capa de Modelo (Modelo de Datos) Rodolfo Campos

Bases de datos. Contenidos. Necesidad de bases de datos. Definiciones

ANEXO A. FRAMEWORK SARA

Programación Web con Python

Oracle Fusion Middleware 11g: Creación de Aplicaciones ADF - Acelerado

ACTIVIDAD N 1 BASE DE DATOS. Trabajo presentado a: JAIDER QUINTERO UNIVERSIDAD DE LA GUAJIRA FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS

Diplomado Web con PHP, MySQL 7.0, Apache y AJAX

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Sistemas de Información para la Gestión

LSC Bases de Datos I 1 INTRODUCCION

PROCEDIMIENTOS ALMACENADOS

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

PHP y MySQL Domine el desarrollo de un sitio Web dinámico e interactivo (3ª edición)

Kumbia ActiveRecord Documentation

MYSQL: Instalación, Configuración y Consultas Avanzadas

Plan 95 Adecuado ASIGNATURA: BASES DE DATOS CODIGO: DEPARTAMENTO: ELECTRÓNICA ESPECIALIDAD

Guía práctica SQL. (c) Francisco Charte Ojeda

Transformaciones entre el modelo Relacional y el modelo de Clases.

Seminario de Programación

Curso PHP & MYSQL PARA JOOMLA

Programación Avanzada con PHP Duración: 40 horas Código: DAW-106

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Ruby on Rails. El desarrollo web que no duele. Por Nelson Rojas Núñez

Tema 3: Diseño de la capa de presentación

El lenguaje de programación PHP Tipos de Datos. Semestre: A-2010

Índice de Figuras 160

DocuWare permite almacenar y organizar documentos de Lotus Notes

Symfony. Framework para el desarrollo de aplicaciones Web con PHP

Ingeniería de Aplicaciones Web

Lenguajes de Programación I

HIBERNATE. Universidad Nacional de Jujuy Analista Programador Universitario JTP Jorge R. Mendoza Año 2010

Esteban Zapata Ing. Jenny León Base de Datos Distribuida

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Empleo Digital_. CURSO FORMATIVO Desarrollo WEB con Ruby on rails. Coordinador Académico Antonio José Martín Sierra EDUCACIÓN DIGITAL

Conclusiones y recomendaciones

MongoDB Up & Running

Definición de Sistema SCADA a medida

TEMARIO ESPECÍFICO PROVISIONAL (OPE 2016) CATEGORÍA: TÉCNICO/A ESPECIALISTA INFORMÁTICA

NOVIEMBRE Lu Ma Mi Ju Vi Sa Do 2 F.INICIO: 16:30-18: :30-18: :30-18: :30-18: :30-18: :30-18: :30-18:00

Lenguajes de Programación I

MANUAL DE REFERENCIA EMBEBER VFPS CUBOS BI

Laboratorio de Programación III

PHP 7 Desarrollar un sitio web dinámico e interactivo

DESARROLLO DE APLICACIONES WEB 2.0 CON HTML5, CSS3 PHP, MYSQL, JAVASCRIPT Y AJAX

Sistema de Información Geográfica siginfocentros Arquitectura del Sistema

Aplicación basada en web y en software libre para la gestión municipal de incidencias y actuaciones en el espacio público

Lista de figuras 23. Agradecimientos 37

EL MODELO. Qué es ORM

Oracle Database 11g: Taller de Ajustes (Español)

PRESENTACIÓN OBJETIVO PERFIL DE INGRESO PERFIL DE EGRESO DIRECCIÓN DE DOCENCIA EN TIC DIPLOMADO PLANEACIÓN Y CONSTRUCCIÓN DE SITIOS WEB

Programa Formativo. Código: Curso: Lenguaje PHP y Cake PHP Framework Modalidad: ONLINE Duración: 60h.

formación CURSOS A MEDIDA ESPECIALIZACIÓN PROFESIONAL HERRAMIENTAS TIC

11 de enero PFC. Proyecto Final de Carrera 2015 Semestre 2 Oscar Escudero Sanchez Andorra la Vella - Andorra. Copyright 2016 Adrián Chavero Ramos

Introducción a PL/SQL

Python. Programa de Estudio.

INDICE Prefacio Capitulo 1: Introducción Parte Primeras: modelos de datos Capitulo 2: Modelos entidad-relación Capitulo 3: El modelo relacional

Programación páginas web con PHP

Distribución del Software

Cuerpo de Profesores Técnicos de Formación Profesional

Programación Orientada a Objetos y Patrón MVC en PHP5. Pablo Ramirez A.

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

Lenguajes de Programación I

UTN DESARROLLADOR WEB MOBILE. Diseño Multimedial. Presentación del curso. Temario a desarrollar

Índice INTRODUCCIÓN...11

relacionales Arquitecturas Distribuidas 09/10

Tema IV El lenguaje de programación PHP Tipos de Datos

Ing. Clarisa Maman Orfali. Founder & CEO ClarTech Solutions, Inc.

Técnico en Sistemas de Almacenamiento

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

JavaScript. Plan de Estudio

Catalyst: Framework para el desarrollo de aplicaciones Web Esteban Saavedra Lopez

Introducción a los Lenguajes Basados en Scripts

UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES MANUAL TÉCNICO

Tema 3: Diseño de la capa de presentación

CODIFICAR APLICACIONES CON LENGUAJE JAVA

Programación Orientada a Objetos

Objetivos y Temario CURSO PROGRAMACIÓN PARA JOOMLA!

Otros objetos de Base de Datos

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

PRECIO: 350 * * Materiales didácticos, titulación oficial y gastos de envío incluidos (internacionales se presupuestará aparte)

MAESTRO DE PHP PHP NIVEL 1

1. OBJETIVO Definir los estándares que permitan la configuración y administración de objetos en la Base de Datos.

PHP y Acceso a Datos

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Curso PHP Advanced and Ajax

Introducción MVC en Django Primeros pasos. Django Framework. José Ortiz Bejar.

Master Microsoft Visual Studio.NET 2010 Desarrollo de aplicaciones

Introducción a la programación

Transcripción:

Mejores Prácticas - Parte I Diplomado en Software Libre Ernesto Hernández-Novich <emhn@usb.ve> Universidad Simón Bolívar Copyright c 2010 Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 1 / 17

Almacenamiento de Datos Archivos de texto Simple. Delimitados (CSV). Estructurados (YAML). Bases de datos SQL PostgreSQL. SQLite. MySQL. Bases de datos no-sql BerkeleyDB. Mnesia. CouchDB. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 2 / 17

Bases de datos SQL PostgreSQL Objeto-Relacional con un sistema extenso de tipos. Cliente-servidor. 100 % ACID desde el diseño. Integridad referencial. Lenguajes Procedurales del lado servidor. PL/pgSQL (parecido a Oracle PL/SQL). PL/perlSQL. PL/R. Replicación Maestro-Esclavos. Point In Time Recovery. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 3 / 17

Bases de datos SQL SQLite Relacional con un sistema estándar de tipos. 100 % ACID desde el diseño. Embebible con cero-configuración. Un archivo de texto contiene toda la base de datos. Solamente ofrece acceso local. El archivo de texto es multiplataforma. Mínima concurrencia. Límites de almacenamiento similares a una base de datos completa. Disponible como librería independiente. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 4 / 17

Object Relational Mapping OR/M o simplemente ORM Técnica para abstraer bases de datos relacionales cuando se usan desde un lenguaje orientado a objetos. Objetos persistentes generadores de resultados. Una clase equivale a una tabla. Los objetos generan filas de la tabla a través de iteradores. Los atributos del objeto corresponden a las columnas. Generación automática de SQL para CRUD. Operaciones complejas sin usar SQL explícito. Filtros sobre búsquedas. Agregadores. Procedimientos almacenados y vistas. Excepciones. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 5 / 17

Caso de Estudio: Perl DBIx::Class Cada tabla es un objeto de clase DBIx::Class::ResultSource. El método search sobre un ResultSource es equivalente a un PREPARE SQL y produce un ResultSet. Los métodos iteradores first o next sobre un ResultSet son equivalentes al EXECUTE SQL. Consultas representadas usando SQL::Abstract. Claves primarias multicolumna. Páginación de resultados, usando cursores en servidor cuando aplique, generación de valores seriales.... Ejecuta la consulta en el último momento. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 6 / 17

Caso de Estudio: Perl DBIx::Class Para cada tabla en la base de datos package Mi : : Base : : U s u a r i o ; use base qw( DBIx : : C l a s s ) ; PACKAGE >load_ components ( qw(pk : : Auto Core ) ) ; PACKAGE >t a b l e ( u s u a r i o ) ; PACKAGE >add_columns (qw( i d name p a s s ) ) ; PACKAGE >set_primary_key (qw( i d ) ) ; En la clase superior package Mi : : Base ; use base qw( DBIx : : C l a s s : : Schema ) ; PACKAGE >l o a d _ c l a s s e s ( ) : Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 7 / 17

Caso de Estudio: Perl DBIx::Class En el programa principal se establece conexión... use Mi : : Base ; my $dsn = d b i : Pg : d a t a b a s e=t e s t ; h o s t=l o c a l h o s t ; my $db = Mi : : Base >connect ( $dsn, $user, $ p a s s ) ; En lugar de SELECT * from TABLA WHERE id = 42... my $row = $db >r e s u l t s e t ( Tabla ) > f i n d ( 4 2 ) ; Búsquedas complejas con SQL::Abstract my $rows = $db >r e s u l t s e t ( Tabla ) > s e a r c h ( { name => { l i k e => Ern % }, edad => { > => 40 } } ) ; Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 8 / 17

Caso de Estudio: Perl DBIx::Class y herramientas relacionadas DBIx::Class::Schema::Loader descubre las tablas y sus relaciones generando todas las clases dinámicamente, posiblemente generando código en disco. SQL::Translator convierte la representación de bajo nivel entre bases de datos disímiles. Ideal para migraciones y documentación. DBIx::Class::QueryProfiler para perfilar la generación de instrucciones SQL y su desempeño. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 9 / 17

Generación de Resultados Texto Simple. Delimitado (CSV). Estructurado Serialización (YAML, JSON, XML). Despliegue (HTML). Presentación final PDF o PostScript Herramientas de oficina. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 10 / 17

Generación de Resultados La salida no se genera con print Use librerías para generar archivos CSV, YAML, XML... Use sistemas de plantillas para generar HTML, PDF.... Separación de preocupaciones Simplifica actividades de traducción y cambio de formato sin alterar la lógica de programación. Facilita el trabajo desacoplado de programador y diseñador. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 11 / 17

Sistema de Plantillas La plantilla es un documento de texto simple, con marcas especiales para indicar las posiciones de sustitución Valores simples. Valores condicionados (selectores). Listas de valores (iteradores). Desde el punto de vista del diseñador de la salida, simplemente debe prepararse la maqueta colocando las marcas especiales en los sitios adecuados. Desde el punto de vista del programador Cargar la plantilla como un objeto. Suministrar los valores, condiciones y listas a sustituir dentro de la plantilla. Mostrar la plantilla sustituida. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 12 / 17

Sistemas de Plantillas Evite las plantillas con lenguajes embebidos Violan el patrón MVC! El procesamiento suele ser más complejo y costoso que las meras sustituciones. Utilice el sistema de plantillas apropiado Sistema de plantillas para HTML integrado con un generador de formularios HTML (e.g. HTML::Template y CGI::FormBuilder en Perl). Sistema de plantillas con extensiones para múltiples formatos de salida (e.g. Template::Toolkit en Perl). Habilidades de inclusión y caching son esenciales para despliegues complejos. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 13 / 17

Caso de Estudio: Perl HTML::Template Las plantillas se escriben en HTML con marcas especiales <h1><! tmpl_var name=t i t u l o ></h1> B ienvenido, <! tmpl_var name=u s u a r i o > El programador carga las plantillas y pega los valores use HTML : : Template ; my $t = HTML : : Template >new ( f i l e n a m e => t e s t. tmpl ) ; $t >param ( t i t u l o => El r e s u l t a d o ) ; $t >param ( u s u a r i o => Ernesto ) ; p r i n t $t >output ; La librería hace el resto <h1>el r e s u l t a d o </h1> B ienvenido, E r n e s t o Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 14 / 17

Caso de Estudio: Perl HTML::Template y CGI::FormBuilder Dentro de la plantilla se indica Donde incluir la magia JavaScript generada por CGI::FormBuilder. Donde incluir el formulario generado por CGI::FormBuilder. <! tmpl_ var name=j s head >... <! tmpl_ var name=form s t a r t >... <! tmpl_var name=f i e l d nombre >... <! tmpl_var name=f i e l d c l a v e > <! tmpl_ var name=form s u b m i t > <! tmpl_ var name=form end > El programador carga las plantillas a través de CGI::FormBuilder. my $t = CGI : : FromBuilder >new (... l o s campos y v a l i d a c i o n e s... t e m p l a t e => t e s t. tmpl ) ; Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 15 / 17

Caso de Estudio: Perl Template::Toolkit Sistema de plantillas generales susceptible de ser utilizado para generar cualquier tipo de contenido Texto simple, estructurado o HTML de forma natural. PDF, gráficos a través de plugins. Puede utilizarse separado del lenguaje de programación para la generación estática de contenido. Plugins apoyados en otros módulos Perl Gráficos a través de GD. YAML y XML. Generación de PostScript y PDF vía L A TEX... y otros 40 más. Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 16 / 17

Referencias PostgreSQL http://www.postgresql.org/ SQLite http://www.sqlite.org/ OR/M http://en.wikipedia.org/wiki/object-relational_mapping DBIx::Class http://search.cpan.org/perldoc?dbix::class Web Template System http://en.wikipedia.org/wiki/web_template_system Perl Template Toolkit http://template-toolkit.org Hernández-Novich (USB) Mejores Prácticas - Parte I 2010 17 / 17