<<

Capitulo II

1 Estado del arte:

Que es un framework web2py y que tecnología usa

Figura 3.-Web2py

Web2py se define como un framework de desarrollo web de código abierto para el desarrollo ágil que implica aplicaciones web con bases de datos. Está escrito en Python y programable. Es un completo framework y se compone de todos los componentes necesarios un desarrollador necesita para construir aplicaciones web totalmente funcionales. [4]

Audiencia

Este tutorial está dirigido principalmente a los profesionales de software que trabajan en Python y son necesarios para crear aplicaciones basadas en la web escalables, seguras y portátiles con bases de datos. web2py proporciona todas las funcionalidades para crear, modificar, implementar y administrar una aplicación desde cualquier lugar utilizando su navegador. [18]

Requisitos previos

Antes de empezar a continuar con este tutorial, estamos suponiendo que ya está al tanto de los fundamentos de la programación Python. Una comprensión básica del Modelo-Vista- Controlador también es igualmente importante. Si usted no es consciente de estos conceptos, entonces nosotros sugerimos que pasar por nuestra breve tutorial sobre Python. [18]

17 web2py introducción

Sigue el patrón Modelo-Vista-Controlador de ejecutar aplicaciones web a diferencia de los modelos tradicionales.

 Modelo.

 Controller.

 Vista.

Comience con web2py web2py viene en paquetes binarios para todos los principales sistemas operativos como Windows, y Mac OS X.

Es fácil de instalar porque web2py -

 Se compone de la intérprete de Python, por lo que no hay que tenerlo preinstalado. También hay una versión de código fuente que se ejecuta en todos los sistemas operativos.

 En el siguiente enlace se compone de los paquetes binarios de web2py para su descarga según la necesidad del usuario - www.web2py.com

 El marco web2py no requiere pre-instalación a diferencia de otros marcos. El usuario tiene que descargar el archivo zip y descomprimir según el requisito del sistema operativo.

 El marco web2py está escrito en Python, que es un lenguaje dinámico completa que no requiere ninguna compilación o instalación complicada para funcionar.

 Se utiliza una máquina virtual al igual que otros lenguajes de programación como o .NET y puede transparente byte-compilar el código fuente escrito por los desarrolladores. [18]

Lo que necesitas para alojarlo a la red

18

Figura 4.-Base de datos

Base de datos

Se le llama base de datos a los bancos de información que contienen datos relativos a diversas temáticas y categorizados de distinta manera, pero que comparten entre sí algún tipo de vínculo o relación que busca ordenarlos y clasificarlos en conjunto. [7]

Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos. [7]

Existen programas denominados sistemas gestores de bases de datos, abreviado SGBD (del inglés database management system o DBMS), que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de

19 estos DBMS, así como su utilización y administración, se estudian dentro del ámbito de la informática. [7]

Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas; También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental. [7]

Clasificación de bases de datos

Base de datos de particulares

Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, la utilidad de las mismas o las necesidades que satisfagan.

Bases de datos estáticas

Son bases de datos únicamente de lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones, tomar decisiones y realizar análisis de datos para inteligencia empresarial. [7]

Bases de datos dinámicas

Son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y edición de datos, además de las operaciones fundamentales de consulta. Un ejemplo, puede ser la base de datos utilizada en un sistema de información de un supermercado. [7]

Figura 5.-Servidores

20

El alojamiento web

El alojamiento web (en inglés: web hosting) es el servicio que provee a los usuarios de Internet un sistema para poder almacenar información, imágenes, vídeo, o cualquier contenido accesible vía web. Es una analogía de "hospedaje o alojamiento en hoteles o habitaciones" donde uno ocupa un lugar específico, en este caso la analogía alojamiento web o alojamiento de páginas web, se refiere al lugar que ocupa una página web, sitio web, sistema, correo electrónico, archivos etc. en internet o más específicamente en un servidor que por lo general hospeda varias aplicaciones o páginas web. [15]

Las compañías que proporcionan espacio de un servidor a sus clientes se suelen denominar con el término en inglés web host. [15]

El hospedaje web aunque no es necesariamente un servicio, se ha convertido en un lucrativo negocio para las compañías de Internet alrededor del mundo. [15]

Se puede definir como "un lugar para tu página web o correos electrónicos", aunque esta definición simplifica de manera conceptual el hecho de que el alojamiento web es en realidad espacio en Internet para prácticamente cualquier tipo de información, sea archivos, sistemas, correos electrónicos, videos, etcétera. [15]

21

Figura 6.-Dominios

Dominio

Un dominio, en redes de computadoras, puede referirse a tres cosas:

El conjunto de computadoras conectadas en una red informática que confían a uno de los equipos de dicha red, la administración de los usuarios y los privilegios que cada uno de los usuarios tiene en dicha red. [16]

La parte principal de una dirección en la Web que indica la organización o compañía que administra dicha página o sitio web. [16]

El espacio en red que contienen todas las estaciones, y los distintos recursos compartidos administrados por el servidor. [16]

Las confianzas entre dominios no es transitiva, es decir, si A confía en B, B confía en , A no confía en C. [16]

Tecnologías que utiliza:

22

Figura 7.-Mysql

MYSQL

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual GPL/Licencia comercial por Oracle Corporation y está considerada como la base datos open source más popular del mundo1 2 , y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web. [8]

Aplicaciones de MYSQL

MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. [8]

Características de MYSQL

Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.

Disponibilidad en gran cantidad de plataformas y sistemas.

23

Posibilidad de selección de mecanismos de almacenamiento que ofrecen diferentes velocidades de operación, soporte físico, capacidad, distribución geográfica, transacciones...

Transacciones y claves foráneas.

Conectividad segura.

Replicación.

Búsqueda e indexación de campos de texto. [8]

Tipos de compilación del servidor

Hay tres tipos de compilación del servidor MySQL:

Estándar: Los binarios estándares de MySQL son los recomendados para la mayoría de los usuarios, e incluyen el motor de almacenamiento InnoDB. [8]

Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen características adicionales que no han sido lo bastante probadas o que normalmente no son necesarias. [8]

MySQL-Debug: Son binarios que han sido compilados con información de depuración extra. No debe ser usada en sistemas en producción porque el código de depuración puede reducir el rendimiento. [8]

MySQL en cifras

Según las cifras del fabricante, existirían más de seis millones de copias de MySQL funcionando en la actualidad, lo que supera la base instalada de cualquier otra herramienta de bases de datos. [8]

Figura 8.-JQuery

24

Que es JQuery?

jQuery es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica a páginas web. Fue presentada el 14 de enero de 2006 en el BarCamp NYC. jQuery es la biblioteca de JavaScript más utilizada. [9]

Características JQuery

Interactividad y modificaciones del árbol DOM, incluyendo soporte para CSS 1-3 y un plugin básico de XPath.

Eventos.

Manipulación de la hoja de estilos CSS.

Efectos y animaciones.

Animaciones personalizadas.

AJAX.

Soporta extensiones. [9]

25

Uso de JQuery

JQuery consiste en un único fichero JavaScript que contiene las funcionalidades comunes de DOM, eventos, efectos y AJAX. [9]

La característica principal de la biblioteca es que permite cambiar el contenido de una página web sin necesidad de recargarla, mediante la manipulación del árbol DOM y peticiones AJAX. Para ello utiliza las funciones $() o jQuery(). [9]

Figura 9.-Ajax

Ajax

AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, mejorando la interactividad, velocidad y usabilidad en las aplicaciones. [10]

Ajax es una técnica válida para múltiples plataformas y utilizable en muchos sistemas operativos y navegadores dados que está basado en estándares abiertos como JavaScript y (DOM). [10]

Tecnologías incluidas en Ajax

26

Ajax es una combinación de cuatro tecnologías ya existentes:

XHTML (o HTML) y hojas de estilos en cascada (CSS) para el diseño que acompaña a la información. [10]

Navegadores que permiten AJAX

Ha de tenerse en cuenta que ésta es una lista general, y el soporte de las aplicaciones Ajax dependerá de las características que el navegador permita. [9]

Figura 10.-HTML

Que es HTML?

HTML, sigla en inglés de HyperText Markup Language (lenguaje de marcas de hipertexto), hace referencia al lenguaje de marcado para la elaboración de páginas web. Es un estándar que sirve de referencia del software que conecta con la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código (denominado código HTML) para la definición de contenido de una página web, como texto, imágenes, videos, juegos, entre otros. Es un estándar a cargo del World Wide Web Consortium (W3C) o Consorcio WWW, organización dedicada a la estandarización de casi todas las tecnologías ligadas a la web, sobre todo en lo referente a su escritura e interpretación. Se considera el lenguaje web más importante siendo su invención crucial

27 en la aparición, desarrollo y expansión de la World Wide Web (WWW). Es el estándar que se ha impuesto en la visualización de páginas web y es el que todos los navegadores actuales han adoptado. [11]

Historia del estándar

En 1989 existían dos técnicas que permitían vincular documentos electrónicos, por un lado los hipervínculos o enlaces (hiperlinks o links) y por otro lado un poderoso lenguaje de etiquetas denominado SGML. Por entonces, Tim Berners-Lee, quien trabajaba en el Centro Europeo de Investigaciones Nucleares CERN da a conocer a la prensa que estaba trabajando en un sistema que permitirá acceder a ficheros en línea que funcionaba sobre redes de computadoras o máquinas electrónicas basadas en el protocolo TCP/IP. Inicialmente fue desarrollado para que se pueda compartir fácilmente información entre científicos de distintas universidades e institutos de investigación de todo el mundo. [11]

A principios de 1990, define por fin el HTML como un subconjunto del conocido SGML y crea algo más valioso incluso, el World Wide Web. [11]

Tim Berners-Lee creó el proyecto World Wide Web (Tejido o Telaraña Mundial), así como un sistema que facilitaba la lectura de información, mediante un programa de navegación. Sería el primer navegador web, llamado WorldWideWeb, y desarrollado durante la segunda mitad del año 1990; siendo tiempo después rebautizado como Nexus para evitar confusiones por su nombre que era igual al de la tecnología que representaba. Le siguieron otros dos navegadores: el Line Mode Browser y el ViolaWWW. Este último, desarrollado en 1992, fue el primer navegador en popularizarse entre los primeros usuarios de la World Wide Web. [11]

Atributos

La mayoría de los atributos de un elemento son pares nombre-valor, separados por un signo de igual «=» y escritos en la etiqueta de comienzo de un elemento, después del nombre del elemento. [11]

28

Figura 11.-CSS

Hoja de estilos en cascada (CSS)

Hojas de estilo en cascada (o CSS, siglas en inglés de Cascading Stylesheets) es un lenguaje de diseño gráfico para definir y crear la presentación de un documento estructurado escrito en un lenguaje de marcado. Es muy usado para establecer el diseño visual de las páginas web, e interfaces de usuario escritas en HTML o XHTML; el lenguaje puede ser aplicado a cualquier documento XML, incluyendo XHTML, SVG, XUL, RSS, etcétera. También permite aplicar estilos no visuales, como las hojas de estilo auditivas. [12]

Uso de Css

Antes del desarrollo de CSS, toda la información presentaciones de los documentos HTML era incluida en el código HTML. Los colores de las fuentes, los estilos de fondo, la alineación de los elementos, los bordes y tamaños eran descritos explícitamente, a veces de manera redundante, dentro del HTML. CSS permite a los diseñadores mover toda la

29 información presentaciones a otro archivo, la hoja de estilos, resultando en un código HTML notablemente más simple. [12]

Fuentes

La información CSS puede ser provista de varias fuentes. Esas fuentes pueden ser el navegador web, el usuario y el diseñador. [12]

Herencia

La herencia es una característica clave en CSS; el cual se basa en la relación ancestro-descendiente para operar. [12]

Ventajas

Separación del contenido y la presentación

CSS facilita la publicación de contenido en múltiples formatos de presentación basado en parámetros nominales. Estos incluyen preferencias explícitas del usuario, diferentes navegadores web, el tipo de dispositivo usado para ver el contenido (una PC o un smartphone), la localización geográfica u otras variables. [12]

Consistencia del sitio

Cuando CSS es usado efectivamente, en términos de herencia y "cascading", una hoja de estilos global puede ser usada para aplicar estilos a todo un sitio. Si más adelante estos estilos deben de ser cambiados, los cambios pueden ser hechos solo con cambiar las reglas en la hoja de estilos global. Antes de CSS, esto era mucho más difícil, caro y más tardado. [12]

Accesibilidad

Sin CSS, los diseñadores web típicamente diseñaban sus páginas con elementos como tablas que dificultaban la accesibilidad para otros usuarios, y que iban en perjuicio de ciertos usos de los documentos, por parte de navegadores orientados a personas con algunas limitaciones sensoriales. [12]

30

Figura 12.-Bootstrap

Bootstrap

Bootstrap hace que el desarrollo front-end web más rápido y más fácil. Está hecho para la gente de todos los niveles, los dispositivos de todas las formas, y los proyectos de todos los tamaños. [13]

Arrancar con facilidad y de manera eficiente las escalas de sus sitios web y aplicaciones con una sola base de código, desde teléfonos a las tabletas a las mesas con las consultas de medios CSS. [13]

Con Bootstrap, se obtiene una extensa y hermosa documentación de los elementos HTML comunes, decenas de HTML personalizado y componentes CSS, y los plugins jQuery impresionante. [13]

Millones de sitios impresionantes a través de la web se están construyendo con Bootstrap. Empezar a trabajar en su cuenta con nuestra creciente colección de ejemplos o mediante la exploración de algunos de nuestros favoritos. [13]

Figura 13.-Javascript

31

JavaScript

JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. [14]

Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. [14]

Desde el 2012, todos los navegadores modernos soportan completamente ECMAScript 5.1, una versión de . Los navegadores más antiguos soportan por lo menos ECMAScript 3. La sexta edición se liberó en julio del 2015. [14]

JavaScript se diseñó con una sintaxis similar a C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo, Java y JavaScript tienen semánticas y propósitos diferentes. [14]

Características

32

Las siguientes características son comunes a todas las implementaciones que se ajustan al estándar ECMAScript, a menos que especifique explícitamente en caso contrario. [14]

Dinámico

Tipado dinámico

Como en la mayoría de lenguajes de scripting, el tipo está asociado al valor, no a la variable. Por ejemplo, una variable x en un momento dado puede estar ligada a un número y más adelante, religada a una cadena. JavaScript es compatible con varias formas de comprobar el tipo de un objeto, incluyendo duck typing. Una forma de saberlo es por medio de la palabra clave typeof. [14].

Uso del modelo vista controlador en el framework web2py para la realización de proyectos

Figura 14.-MVC

El modelo–vista–controlador (MVC) es un patrón de arquitectura de software, que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la

33 construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. [5] web2py sigue el patrón Modelo-Vista-Controlador de ejecutar aplicaciones web a diferencia de los modelos tradicionales. [18]

 Modelo es una parte de la aplicación que incluye la lógica para los datos. Los objetos en el modelo se utilizan para recuperar y almacenar los datos de la base de datos. [18]

 Ver es una parte de la aplicación, lo que ayuda a hacer que la visualización de los datos a los usuarios finales. La visualización de datos se obtienen a partir de modelos. [18]

 Controller es una parte de la aplicación, que se ocupa de la interacción del usuario. Los controladores pueden leer datos desde un punto de vista, el control de entrada del usuario, y enviar los datos de entrada al modelo específico. [18]

 Figura 15.-web2py MVC

http://www.w3ii.com/es/web2py/web2py_introduction.html

 web2py tiene una característica incorporada para administrar las cookies y sesiones. Después de confirmar una transacción (en términos de SQL), la sesión también se almacena de forma simultánea. [18]

 web2py tiene la capacidad de ejecutar las tareas en intervalos programados después de la realización de ciertas acciones. Esto se puede lograr con . [18]

34 web2py - Flujo de trabajo

Echar un vistazo al diagrama de flujo de trabajo que figura a continuación.

Figura 16.- Diagrama de flujo MVC

El diagrama de flujo de trabajo se describe a continuación.

 Los modelos, vistas y componentes del controlador componen la aplicación web2py usuario. [18]

 Múltiples aplicaciones pueden estar alojados en la misma instancia de web2py.

 El navegador envía la solicitud HTTP al servidor y el servidor interactúa con el modelo, controlador y la vista en busca de la salida necesaria. [18]

 Las flechas representan la comunicación con el motor (s) de base de datos. Las consultas de bases de datos pueden ser escritos en SQL crudo o mediante el uso de la base de datos de capa de abstracción de web2py (que será discutido en capítulos posteriores), de modo que el código de aplicación web2py es independiente de cualquier motor de base de datos. [18]

35

 Modelo establece la conexión con la base de datos de la base de datos e interactúa con el controlador. El controlador por el contrario interactúa con el objeto de lograr que la visualización de los datos. [18]

 El despachador asigna la dirección URL solicitada, tal como figura en la respuesta HTTP a una llamada a la función en el controlador. La salida de la función puede ser una cadena o una tabla hash. [18]

 Los datos se representa por la vista. Si el usuario solicita una página HTML (el valor predeterminado), los datos se representa en una página HTML. Si el usuario solicita la misma página en XML, web2py trata de encontrar un punto de vista que puede hacer que el diccionario en XML. [18]

 Los protocolos soportados de web2py son: HTML, XML, JSON, RSS, CSV y RTF.

Modelo-Vista-Controlador

La representación del modelo-vista-controlador de web2py es el siguiente -

Modelo

"db.py" is the model: db = DAL('://storage.sqlite') db.define_table(employee, Field('name'), Field(‘phone’))

El modelo incluye la lógica de datos de aplicación. Se conecta a la base de datos como se indica en la figura anterior. Considere SQLite está siendo utilizado y se almacena en el archivo storage.sqlite con una tabla definida como empleado. Si no existe la tabla, web2py ayuda mediante la creación de la tabla respectiva. [18]

Controlador

El programa "default.py" es el controlador. def employees():

36 grid = SQLFORM.grid(db.contact, user_signature = False) return locals()

En web2py, mapeo URL ayuda en el acceso a las funciones y módulos. Para el ejemplo anterior, el controlador contiene una única función (o "acción") denominada empleados.

Las medidas adoptadas por el controlador devuelven una cadena o un diccionario de Python, que es una combinación de clave y el valor que incluye un conjunto de variables locales. [18]

Vista

"default / Contacts." es la vista.

{{extend 'layout.html'}}

Manage My Employees

{{=grid}}Para el ejemplo dado, Vista muestra la salida después de que se ejecute la función del controlador asociado.

El propósito de esta vista es hacer que las variables en el diccionario, que es en forma de HTML. Ver el archivo está escrito en HTML, pero incrusta código Python con la ayuda de {{y}} delimitadores. [18]

El código embebido en páginas HTML consta de código Python en el diccionario.

Uso en aplicaciones Web

Aunque originalmente MVC fue desarrollado para aplicaciones de escritorio, ha sido ampliamente adaptado como arquitectura para diseñar e implementar aplicaciones web en los principales lenguajes de programación. Se han desarrollado multitud de frameworks, comerciales y no comerciales, que implementan este patrón (ver apartado siguiente "Frameworks MVC"); estos frameworks se diferencian básicamente en la interpretación de como las funciones MVC se dividen entre cliente y servidor. [5]

37

Los primeros frameworks MVC para desarrollo web planteaban un enfoque de cliente ligero en el que casi todas las funciones, tanto de la vista, el modelo y el controlador recaían en el servidor. En este enfoque, el cliente manda la petición de cualquier hiperenlace o formulario al controlador y después recibe de la vista una página completa y actualizada (u otro documento); tanto el modelo como el controlador (y buena parte de la vista) están completamente alojados en el servidor. Como las tecnologías web han madurado, ahora existen frameworks como JavaScriptMVC, Backbone o jQuery14 que permiten que ciertos componentes MVC se ejecuten parcial o totalmente en el cliente (véase AJAX). [5]

MVC y bases de datos

Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos que debe utilizar la aplicación; en líneas generales del MVC dicha gestión corresponde al modelo. La unión entre capa de presentación y capa de negocio conocido en el paradigma de la Programación por capas representaría la integración entre la Vista y su correspondiente Controlador de eventos y acceso a datos, MVC no pretende discriminar entre capa de negocio y capa de presentación pero si pretende separar la capa visual gráfica de su correspondiente programación y acceso a datos, algo que mejora el desarrollo y mantenimiento de la Vista y el Controlador en paralelo, ya que ambos cumplen ciclos de vida muy distintos entre sí. [5]

Historia

El patrón MVC fue una de las primeras ideas en el campo de las interfaces gráficas de usuario y uno de los primeros trabajos en describir e implementar aplicaciones software en términos de sus diferentes funciones. [5]

MVC fue introducido por Trygve Reenskaug (web personal) en -76 durante su visita a Xerox Parc6 7 en los años 70 y, seguidamente, en los años 80, Jim Althoff y otros implementaron una versión de MVC para la biblioteca de clases de Smalltalk-80.8 Solo

38 más tarde, en 1988, MVC se expresó como un concepto general en un artículo9 sobre Smalltalk-80. [5]

En esta primera definición de MVC el controlador se definía como "el módulo que se ocupa de la entrada" (de forma similar a como la vista "se ocupa de la salida"). Esta definición no tiene cabida en las aplicaciones modernas en las que esta funcionalidad es asumida por una combinación de la 'vista' y algún framework moderno para desarrollo. El 'controlador', en las aplicaciones modernas de la década de 2000, es un módulo o una sección intermedia de código, que hace de intermediario de la comunicación entre el 'modelo' y la 'vista', y unifica la validación (utilizando llamadas directas o el "observer" para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo). [5]

Integración del framework web2py a la empresa para la realización de proyectos

1.- Identación: Esta demás mencionarlo, pero algunos programadores tienden ignorar esta esencial ayuda para leer el código (Lo comienzo a veces me da flojera) pero esto no ocurre en Python, pues él nos dice Identa tu código sí o sí. [17]

2.- Llaves y punto coma: En ocasiones nosotros mismos por no llevar una correcta identación, sufrimos al estar forzando nuestra vista, tratando de localizar el inicio y cierre de las llaves. La verdad al estar programando en Python he notado que la identación obligatoria, hace prácticamente inútil el uso de las llaves. Es un caso similar al punto coma (Ahora estando en Python, tengo errores por poner la coma) es un carácter poco útil a la hora de programar y cuando estamos apurados con toda la presión de sacar adelante un proyecto olvidamos colocarlos. Perdiendo valiosos segundos. [17]

3.- Productividad: Ya hablamos de la identación y las llaves con estos dos puntos nos ahorra tiempo valioso al tener que regresarnos por un error de punto y coma faltante o que tienes un comportamiento extraño por un mal cierre de una llave (Justo ahora me pregunto, si junto cada segundo, minuto desperdiciado por las llaves y punto y coma olvidados cuando se acumulara). Por si fuera poco este beneficio, al ir aprendiendo más el lenguaje uno se va dando cuenta que puedes realizar una funcionalidad con mucho

39 menos líneas de código (Obviamente necesitas ir aprendiendo las mejores prácticas.) que al estar en otro lenguaje. [17]

4.- Modular: Esta es una característica, que en lo personal me a encantado pues con tan solo colocar en un directorio un archivo __init__ se convierte automáticamente en una librería, que tu dinámicamente puedes utilizar. Algo que en tendría que escanear el directorio ver si existe el archivo e incluirlo. Esto es mágico. Además de esto puedes simplemente compartir este directorio con tus funciones, clases a otra persona y listo. Sin mencionar su gestor de paquetes que también me hipnotizo. [17]

5.- Consola, Web, Escritorio: No hay mucho que decir, solo que Python por defecto trabaja desde línea de comandos, por lo que lo hace muy útil para la generación de servicios, creación de script de seguridad, de mantenimiento de servidores, monitoreo de recursos del sistema. Además de ofrecerte la capacidad de desplegar tu información vía web, o si lo tuyo es el ambiente de escritorio con librerías como PyQT puedes crear lindas aplicaciones de escritorio. En otras palabras que esperas para hacer tus primeros pasos en este lenguaje. [17]

6.- Estadístico: Aquí ya es un poco más complicado de explicar, quizás para aquellos que les fascina los números, realizar gráficas, comprobar datos, encontraran que Python es una excelente alternativa para mathlab u otros software matemáticos. Bueno pero decirlo es muy sencillo un Ejemplo de esto. Cuanto nos tomaría realizar una función para el cálculo de un determinante. Multiplicaciones entre matrices o que me dibuje graficas con los resultados. Con las librerías / módulos numpy , matplotlib y scipy. Créanme esto es cosa de una o dos líneas. Ya solo te preocupas de la programación. [17]

Web2py Núcleo

La extensión .html es opcional para la dirección URL. La extensión determina la extensión de la vista que hace que la salida de la función definida en el controlador. El mismo contenido se sirve en múltiples formatos a saber, HTML, XML, JSON, RSS, etc.

40

La solicitud se pasa, en base a las funciones, que aceptan los argumentos y da la salida apropiada para el usuario. Es el controlador, que interactúa con el modelo y la vista de la aplicación para dar la salida según la necesidad del usuario. [18]

Web2py Seguridad

Las características únicas de web2py son las siguientes -Los usuarios pueden aprender fácilmente la aplicación. No requiere instalación y dependencias. [18]

Se ha mantenido estable desde el día de lanzamiento. [18] web2py es ligero e incluye bibliotecas para la capa de abstracción de datos y lenguaje de plantillas. [18]

Funciona con la ayuda del servidor Web Interfaz de Pasarela, que actúa como una comunicación entre los servidores web y aplicaciones. [18]

Proyecto de seguridad de aplicaciones web abierta (OWASP) es una comunidad, que enumera por las violaciones de la seguridad de aplicaciones web. [18]

Brechas de seguridad

Con respecto a OWASP, las cuestiones relacionadas con las aplicaciones web y cómo web2py vence ellos se discuten a continuación. [18]

Cruz de script del lado

También se conoce como XSS. Se produce cuando una aplicación toma un conjunto de datos proporcionados por el usuario y la envía al navegador del usuario sin codificación o validar el contenido. Los atacantes ejecutar secuencias de comandos para inyectar gusanos y virus utilizando scripting del lado transversal. [18] web2py ayuda en la prevención de XSS mediante la prevención de todas las variables representan en la vista. [18]

Revelación de información

41

A veces, las aplicaciones de fuga de información sobre el funcionamiento interno, la privacidad y configuraciones. Los atacantes utilizan esto para filtración de datos sensibles, que podrían dar lugar a ataques graves. [18] web2py impide que esto ocurra sistema de tickets. Se registra todos los errores y el billete se emite al usuario cuyo error se inscriben. Estos errores sólo son accesibles para el administrador. [18]

Autenticaciones credenciales de cuenta no son a menudo protegidas. Los atacantes compromiso sobre contraseñas, tokens de autenticación para robar identidades del usuario. [18] web2py proporciona un mecanismo para la interfaz administrativa. También obliga a utilizar sesiones seguras cuando el cliente no es "localhost".[18]

Comunicaciones inseguras

A veces las aplicaciones fallan en el cifrado del tráfico de red. Es necesario para gestionar el tráfico para proteger las comunicaciones sensibles. [18] web2py proporciona certificados SSL activado para proporcionar el cifrado de las comunicaciones. Esto también ayuda a mantener la comunicación sensible. [18]

Restricción de acceso URL

Las aplicaciones Web que normalmente protegen la funcionalidad sensible al impedir la visualización de los enlaces y URLs a algunos usuarios. Los atacantes pueden intentar romper algunos datos confidenciales mediante la manipulación de la URL con un poco de información. [18]

En wb2py, una dirección URL se asigna a los módulos y funciones en lugar del archivo dado. También incluye un mecanismo, que especifica qué funciones son públicas y que se mantiene como privado. Esto ayuda a resolver el problema. [18]

Web2py Servicios

42 web2py proporciona soporte para varios protocolos como XML, JSON, RSS, CSV, XMLRPC, JSONRPC, AMFRPC, y SOAP. Cada uno de estos protocolos se apoya en múltiples formas, y hacemos una distinción entre -

Rendering la salida de una función en un formato dado.

Llamadas a procedimientos remotos.

Prestación de un diccionario

Considere el siguiente código que mantiene el recuento de las sesiones.

La función anterior aumenta el número de cuenta cómo y cuando el usuario visita la página. Supongamos que la función dada se define en el controlador "default.py" de aplicación de web2py. La página puede ser solicitada con la siguiente URL. [18] web2py puede representar la página anterior en diferentes protocolos y añadiendo la extensión de la URL. [18]

El diccionario devuelto por la acción anterior se representará en HTML, XML y JSON. [18]

Llamadas a procedimiento remoto

Marco web2py proporciona un mecanismo que convierte una función en un servicio web. El mecanismo descrito aquí difiere del mecanismo descrito antes, porque -

La inclusión de los argumentos de la función. [18]

La función debe ser definida en un modelo. [18]

Se aplica una convención más estricta URL de nombres. [18]

Funciona para un conjunto fijo de protocolos y es fácilmente extensible. [18]

Para utilizar esta función es necesario importar e iniciar un objeto de servicio. [18]

Para implementar este mecanismo, en un principio, debe importar y crear una instancia de un objeto de servicio. [18]

43

Esto se implementa en el archivo de modelo "db.py" en la aplicación de andamiaje. Db.py modelo es el modelo por defecto en el marco web2py, que interactúa con la base de datos y el controlador para lograr el resultado deseado a los usuarios. [18]

Después de la aplicación, el servicio en el modelo se puede acceder desde los controladores, cuando sea necesario. [18]

El siguiente ejemplo muestra varias implementaciones de llamadas a procedimientos remotos que utilizan los servicios web y muchos más. [18]

Servicios web

Servicios Web se pueden definir como una forma estandarizada de integración de aplicaciones basadas en la Web usando los protocolos como XML, SOAP, WSDL y UDDI. web2py es compatible con la mayoría de ellos, pero la integración va a ser bastante complicado. [18]

El consumo de un servicio JSON web2py con jQuery. [18]

Hay muchas maneras de devolver JSON forma web2py, pero aquí se considera el caso de un servicio JSON. [18]

La función sólo devuelve un diccionario vacío para renderizar la vista, que consumirá el servicio. [18]

Web2py Control de acceso

Autenticación

Casi todas las aplicaciones tienen que ser capaz de autenticar a los usuarios y establecer permisos. web2py viene con una extensa y personalizable mechanism.web2py control de acceso basado en roles. También es compatible con los protocolos, como CAS, OpenID, OAuth 1.0, LDAP, PAM, X509, y muchos más. [18]

44 web2py incluye un mecanismo conocido como basado en roles mecanismo de control de acceso (RBAC), que es un enfoque para restringir el acceso al sistema a usuarios autorizados. La clase que implementa web2py RBAC se llama Aut. [18]

Nombre de usuario tiene que ser tratada de una manera especial, ya que está implicada en el proceso de autenticación, que normalmente se basa en el campo de correo electrónico. Al pasar el argumento de nombre de usuario para la siguiente línea, se informa a Web2Py que queremos que el campo nombre de usuario, y queremos utilizarla para iniciar sesión en lugar del campo de correo electrónico. Actúa como una clave principal. [18]

Autorización

Es el proceso de concesión de algún tipo de acceso o dar permiso de algo para los usuarios. En web2py una vez que se crea o se ha registrado el nuevo usuario, se crea un nuevo grupo para contener el usuario. El papel del nuevo usuario se denomina convencionalmente como "usuario_ [id]" donde id es la identificación única del usuario. [18]

Central Authentication Service (CAS) web2py proporciona un estándar de la industria a saber, el Servicio de autenticación de cliente - CAS tanto para el cliente y el servidor integrado de web2py. Es tercera herramienta de autenticación parte. [18]

Es un protocolo abierto para la autenticación distribuido. El trabajo del CAS es el siguiente Si el usuario visita el sitio web, el protocolo comprueba si el usuario es autenticado. [18]

Si el usuario no está autenticado en la aplicación, el protocolo redirige a la página donde el usuario puede registrarse o iniciar sesión en la aplicación. [18]

Si se completa el registro, el usuario recibe un correo electrónico. El registro no es terminado antes de que el usuario verifica el correo electrónico. [18]

Después del registro con éxito, el usuario se autentica con la llave, que es utilizado por aparato CAS. [18]

45

La clave se utiliza para obtener las credenciales de usuario a través de solicitud HTTP, que se fija en el fondo. [18]

Web2py Correo electrónico y SMS web2py incluye funcionalidades de envío de correo electrónico y SMS para el usuario. Utiliza las bibliotecas para enviar mensajes de correo electrónico y SMS. [18]

Una vez que hemos establecido los parámetros de configuración de un correo electrónico usando el objeto electrónico, un correo electrónico se puede enviar a muchos usuarios. [18]

La aplicación para enviar mensajes SMS difiere de envío de correos electrónicos en el marco web2py ya que requerirá servicio de terceros que pueden transmitir los mensajes al receptor. El servicio de terceros no es un servicio gratuito y, obviamente variar en función de la región geográfica (en cada país). [18]

Web2py componentes

Un componente se define como la parte funcional de una página web, que funciona de forma autónoma. Puede estar compuesto por módulos, controladores y vistas, que están incrustados en una página web. El componente en una aplicación, se debe localizar la etiqueta y el rendimiento se considera que es independiente del módulo. [18]

En web2py, la atención se centra en el uso de componentes que se cargan en la página y que se comunican con el controlador de componente a través de AJAX. [18]

Web2py marco Global web2py es un framework web-pila completa que puede ser utilizado por un desarrollador para desarrollar por completo una aplicación web. Incluye la integración de bases de datos SQL y el servidor web multi-roscado para el diseño de un programa. [18]

Interfaz Web para el diseño de un programa de usuario

Una vez que el comando se ejecuta de acuerdo con el sistema operativo, web2py muestra una ventana de inicio y luego muestra un widget de interfaz gráfica de usuario que pide al usuario que elija -una contraseña de administrador de una sola vez, la dirección IP de

46 la interfaz de red que se utiliza en el servidor web, y un número de puerto desde el que responde a la solicitud. [18]

El administrador incluye toda la autoridad para la adición y edición de cualquier nueva aplicación web.

Devoluciones de datos

El mecanismo de validación de la entrada de la forma es muy común y no se considera como una buena práctica de programación. La entrada se valida cada vez, lo que es una carga para la validación. [18]

Un mejor patrón en web2py es que presenten sus formularios a la misma acción, lo que les genera. Este mecanismo se denomina como "la devolución de datos", que es la característica principal de web2py. En pocas palabras, la auto-presentación se logra en la devolución de datos. [18]

La aplicación CRUD web2py incluye aplicaciones, que realizan las funciones de crear, recuperar, actualizar y borrar. El ciclo CRUD describe las funciones elementales de una base de datos, que es persistente. [18]

Toda la lógica de la aplicación está escrita en los modelos, que son retirados por los controladores y se muestran a los usuarios con la ayuda de la vista. [18] appadmin

Para PHP, el servidor de aplicaciones incluye listado de todas las bases de datos en virtud de phpmyadmin. De manera similar, web2py proporciona una interfaz para administrar, crear y eliminar tablas o bases de datos, lo que se denomina como "appadmin.". [18]

Web2py Puntos de vista

47

Marco web2py utiliza modelos, controladores y vistas en sus aplicaciones. Incluye una sintaxis de Python ligeramente modificada en las Vistas de código más legible y sin ningún tipo de restricción impuesta sobre el uso adecuado de Python. [18]

El propósito principal de un web2py Vista es la de insertar el código de pitón en un documento HTML. Sin embargo, se enfrenta a algunos problemas, que son los siguientes Escapar de código Python incrustado en un documento HTML. [18]

Tras la sangría basado en Python, lo que puede afectar a normas HTML. [18]

Para escapar de los problemas, web2py utiliza delimitadores {{..}} en la sección de vista. Los delimitadores de ayuda para escapar del código Python incrustado. También ayuda en el seguimiento de las reglas HTML de sangría. [18]

El código incluido dentro de {{..}} delimitadores incluir el código Python no deseadas. Como Python normalmente usa sangría para delimitar bloques de código, el código no deseado dentro de los delimitadores se debe mantener de forma adecuada. Para superar este problema, web2py utiliza la palabra clave "pase". [18]

El bloque de código que comienza con una línea termina con dos puntos y termina con una línea que comienza con el pase. [18]

Web2py Base de datos de la capa de abstracción A Capa de Base de Datos de la abstracción (DAL) es considerada como la principal fuerza de web2py. El DAL expone una interfaz de programación de aplicaciones simples (API) para la sintaxis SQL subyacente. [18]

En este capítulo, vamos a conocer las aplicaciones no triviales de DAL, como construir consultas para buscar por etiquetas de manera eficiente y la construcción de un árbol de categorías jerárquicas. [18]

Algunas características importantes de DAL son - web2py incluye una base de datos de la capa de abstracción (DAL), una API que mapea objetos Python en objetos de base de datos. Los objetos de la base pueden ser consultas, tablas y registros. [18]

48

El DAL genera dinámicamente el SQL en tiempo real utilizando el dialecto especificado para el back-end de base de datos, por lo que no es obligatorio para que un desarrollador escribir consulta SQL completa. [18]

La principal ventaja de utilizar DAL es que las aplicaciones serán portátil con diferentes tipos de bases de datos. [18]

Python es mucho más accesible

Python, sin embargo, es mucho más accesible. Por un lado, un amplio abanico de desarrolladores está familiarizados con Python y lo utilizan para una amplia gama de aplicaciones. A diferencia de R, que prácticamente sólo se utiliza para el análisis de datos, un desarrollador puede empezar rápidamente a experimentar con Python. [18]

Las empresas cada vez dan más importancia a los datos y luchan por encontrar los científicos de datos más cualificados. Con frecuencia, sin embargo, tales científicos de datos pueden estar ya trabajando en la propia empresa y es probable que tengan alguna familiaridad con Python. Dada la importancia de un buen análisis de datos, la formación en las tecnologías Big Data apropiadas es mucho más efectiva que contratar y formar nuevos científicos de datos en programas más complejos. [18]

Beneficios de Python

Uno de los mayores beneficios de hacer ciencia de datos en Python es la eficiencia de la utilización de un lenguaje de programación a través de diferentes aplicaciones. Tal Yarkoni, investigador asociado en la Universidad de Texas, explica: [1]

Hacer todo el desarrollo y análisis en un mismo lenguaje aporta un gran beneficio. Cuando haces todo en un mismo lenguaje, no tienes que sufrir el constante cambio de contexto y el tiempo perdido que conlleva. Además, tampoco necesitas preocuparte sobre la interfaz a utilizar por diferentes lenguajes y en diferentes partes del código. No hay nada más molesto que parsear texto en Python y darse cuenta que tienes que escribir en el disco en un formato diferente solo para poder manejarlo con R o MATLAB. Esto puede no parecer un gran problema (no lleva mucho tiempo escribir un CSV o JSON con Python y leerlo desde R) pero son cosas que van sumando. [1]

49

Por mucho que podamos alabar tecnología de nicho que resuelve un problema muy bien, las tecnologías que tienden a ganar son las herramientas de uso general que resuelven una serie de problemas. Según el director de Optimización y Análisis de AppNexus, David Himrod, “Uno de los mayores retos a los que AppNexus se enfrenta es cómo conseguir un conjunto diversos de empleados que trabajen con la misma tecnología. Python proporciona a los empleados de distintos orígenes (en particular los ingenieros, matemáticos y analistas) un lenguaje común, fácil de entender que se puede utilizar para crear prototipos de nuevas funcionalidades para la empresa”.[1]

50