3) FRAMEWORKS, TESTINGS Y PACKAGE MANAGER

Definición de Frameworks:

Es un esquema o patrón que nos ofrece un entorno genérico para escribir código en un lenguaje concreto.

Los Frameworks mas utilizados:

1.- Laravel:

Es un framework para aplicaciones web con sintaxis expresiva y elegante. Creemos que el desarrollo debe ser una experiencia agradable y creativa para que sea Verdaderamente enriquecedora.

Laravel busca eliminar el sufrimiento del desarrollo facilitando las tareas comunes utilizadas en la mayoría de los proyectos web, como la autenticación, enrutamiendo, sesiones y almacenamiento en caché.

Laravel es un framework para el lenguaje de programación PHP. Aunque PHP es conocido por tener una sintaxis poco deseable, es fácil de usar, fácil de desplegar y se le puede encontrar en muchos de los sitios web modernos que usas día a día.

Laravel no solo ofrece atajos útiles, herramientas y componentes para ayudarte a conseguir el éxito en tus proyectos basados en web, si no que también intenta arreglar alguna de las flaquezas de PHP.

Laravel tiene una sintaxis bonita, semántica y creativa, que le permite destacar entre la gran cantidad de frameworks disponibles para el lenguaje. Hace que PHP sea un placer, sin sacrificar potencia y eficiencia. Es sencillo de entender, permite mucho la modularidad de código lo cual es bueno en la reutilización de código.

Beneficios de Laravel :

a).- Incluye un ORM: A diferencia de CodeIgniter, Laravel incluye un ORM integrado. Por lo cual no debes instalar absolutamente nada.

b).-Bundles: existen varios paquetes que extienden a Laravel y te dan funcionalidades increíbles.

c).-Programas de una forma elegante y eficiente: No más código basura o espaguetti que no se entienden, aprenderás a programar ‘con clase’ y ordenar tu código de manera de que sea lo más re-utilizable posible.

d).-Controlas la BD desde el código: Puedes tener un control de versiones de lo que haces con ella. A esto se llaman migrations, es una excelente herramienta, porque puedes manejar todo desde tu IDE, inclusive montar datos en tus tablas.

e).-Da soporte a PHP 5.3.

f).-Rutas elegantes y seguras: Una misma ruta puede responder de distinto modo a un método GET o POST.

g).-Cuenta con su propio motor de platillas HTML. Introduction 3.

h).-Se actualiza facilmente desde la línea de comandos: El framework es actualizable utilizando composer update y listo, nada de descargar un ZIP y estar remplazando.

i).-Cuenta con una comunidad activa que da apoyo rápido al momento de que lo necesitas.

2.- Django

Con Django, puede llevar las aplicaciones web desde el concepto al lanzamiento en cuestión de horas. Django se ocupa de gran parte de la molestia del desarrollo web, por lo que puede concentrarse en escribir su aplicación sin necesidad de reinventar la rueda. Es gratis y de código abierto.

Django fue diseñado para ayudar a los desarrolladores a llevar las aplicaciones desde el concepto hasta su finalización lo más rápido posible.

Django incluye docenas de extras que puede usar para manejar tareas comunes de desarrollo web. Django se encarga de la autenticación del usuario, la administración de contenido, los mapas del sitio, los canales RSS y muchas más tareas, desde el primer momento.

Django se toma muy en serio la seguridad y ayuda a los desarrolladores a evitar muchos errores de seguridad comunes, como la inyección de SQL, las secuencias de comandos entre sitios, la falsificación de solicitudes entre sitios y el secuestro de clics. Su sistema de autenticación de usuario proporciona una forma segura de administrar cuentas de usuario y contraseñas.

Algunos de los sitios más concurridos del planeta utilizan la capacidad de Django para escalar de manera rápida y flexible para satisfacer las demandas de tráfico más intensas.Las empresas, organizaciones y gobiernos han utilizado Django para construir todo tipo de cosas, desde sistemas de gestión de contenido hasta redes sociales y plataformas informáticas científicas.

3.- Rails

Es un Framework de desarrollo de aplicaciones web escrito en el lenguaje de programación Ruby. Está diseñado para hacer que la programación de aplicaciones web sea mas fácil, haciendo supuestos sobre lo que cada desarrollador necesita para comenzar. Te permite escribir menos código realizando más que muchos otros lenguajes y frameworks. Además, expertos desarrolladores en Rails reportan que hace que el desarrollo de aplicaciones web sea más divertido.

Rails es un software dogmático. Este asume que existe una forma «mejor» de hacer las cosas, y está diseñado para fomentar esa forma – y en algunos casos para desalentar alternativas.

La filosofía rails se basa en estos dos principios:

I.- DRY (del ingles, «Don´t Repeat Yourselft»).- Siguiere que escribir el mismo código una y otra vez es una mala práctica.

II.- «Convención sobre Configuración».- Significa que Rails hace algunas suposiciones sobre lo que quieres hacer y cómo vas a hacerlo, en lugar de requerir que especifiques cada pequeña cosa a través de un sin fin de archivos de configuración.

4.- Express

Es el Frameworks de NodeJS mas conosido, y es la libreria subyacente  para un gran numero de otros frameworks web de Node populares.

Proporciona mecanismos para:

a).- Escritura de manejadores de peticiones con diferentes verbos HTTP en diferentes caminos URL (rutas).

b).- Integracion con motores de renderizacion de «vistas» para generar respuestas mediante la introduccion de datos en plantillas.

c).- Establecer ajustes de aplicaciones web como que puerto usar para conectar, y la localizacion de las plantillas que se utilizan para renderizar la respuesta.

d).- Añadir procesamiento de peticiones «middleware» adicional en cualquier punto dentro de la tuberia de manejo de la peticion.

A pesar de que Express es en si mismo bastante minimalista, los desarrolladores han creado paquetes middleware compatibles para abordar casi cualquier problema de desarrollo web. hay librerias para trabajar con cokies, sesiones, inicios de secion de usuarios, parametros URL, datos POST, cabeceras de seguridad y muchos mas. Puedes encontrar una lista de paquetes middleware mantenida por el equipo de Espress en Express Middleware.

Definición de Testing:

Es una actividad desarrollada para evaluar la calidad del producto, y para mejorarlo al identificar defectos y problemas

Los Testing´s mas utilizados:

1.- PHPUnit

Es un marco de prueba orientado a programadores para PHP.
Es una instancia de la arquitectura xUnit para marcos de pruebas unitarias.

phpunit es un framework open source para el desarrollo, orientado a pruebas ó TDD para culquier código PHP. Es decir, es un framework que nos ayuda a probar nuestro código.

Ahora, ¿Por qué probar nuestro código? Bueno, Sebastian Bergmann creador de PHPUnit, dice algo muy cierto, “todos los programadores cometen errores, pero la diferencia entre los buenos programadores y los malos programadores es que los buenos programadores prueban su código para encontrar esos errores lo más pronto posible“. Y es que esperar a que el software falle por sí mismo para después corregirlo es muy costoso, lento y dificíl de corregir.

La propuesta de PHPUnit y otros frameworks para pruebas es crear pequeñas unidades que revisen funcionalidades puntuales del código y probar que funcionen como debe, además de la posibilidad de automatizar estas pruebas para ejecutarlas frecuentemente, tanto como el código cambie.

Así, para probar el código no es suficiente recargar el navegador como loco, hay que definir la funcionalidad del mismo, separarla en unidades y revisar que cada una funcione como se supone.

2.- Pytest

Es un marco de prueba que nos permite escribir códigos de prueba usando python. Puede escribir código para probar cualquier cosa como base de datos, API, incluso UI si lo desea. Pero pytest se utiliza principalmente en la industria para escribir pruebas para API.

Algunas de las ventajas de pytest son:

a).- Muy fácil de comenzar debido a su sintaxis simple y fácil.

b).- Puede ejecutar pruebas en paralelo.

c).- Puede ejecutar una prueba específica o un subconjunto de pruebas

d).- Detectar automáticamente pruebas

e).- Omitir pruebas

f).- Fuente abierta

3.- RsPec

Comenzó su vida en 2005 como un experimento de Steven Baker, con las primeras contribuciones de Dave Astels y Aslak Hellesøy. David Chelimsky se unió al equipo ese verano y aceptó el liderazgo del proyecto en 2006. David también construyó rspec-rails, lo que proporcionó una estrecha integración con Ruby on Rails.

RSpec está compuesto por múltiples bibliotecas, que están diseñadas para trabajar juntas, o pueden usarse independientemente con otras herramientas de prueba como Cucumber o Minitest .

Las partes de RSpec son:

a).- rspec-core:  el corredor de especificaciones, que proporciona un rico programa de línea de comandos, informes flexibles y personalizables, y una API para organizar sus ejemplos de código.

b).- rspec-expectativas:  proporciona una API legible para expresar los resultados esperados de un ejemplo de código.

c).- rspec-mocks: pruebe  el doble marco, que proporciona múltiples tipos de objetos falsos para permitirle controlar estrictamente el entorno en el que se ejecutan sus especificaciones.

d).- rspec-rails:  admite el uso de RSpec para probar aplicaciones de Ruby on Rails en lugar del marco de prueba incorporado de Rails

4- Mocha

Es un marco de prueba de JavaScript rico en funciones que se ejecuta en Node.js y en el navegador, lo que hace que las pruebas asincrónicas sean simples y divertidas.

Las pruebas de Mocha se ejecutan en serie, lo que permite informes flexibles y precisos, al tiempo que asigna excepciones no detectadas a los casos de prueba correctos. Alojado en GitHub.

Definición de Package Manager

Un paquete(Package) contiene todos los archivos que necesita para un módulo. Los módulos son bibliotecas que puede incluir en su proyecto.

Los Package´s mas utilizados:

1.- Composer

Es un administrador de dependencias para PHP que nos permite descargar paquetes desde un repositorio para agregarlo a nuestro proyecto. Por defecto, se agregan a una carpeta llamada /vendor. De esta manera evitamos hacer las búsquedas manualmente y el mismo Composer se puede encargar de actualizar las dependencias que hayamos descargado por una nueva versión.

Hoy día se considera el gestor de dependencias de-facto por unas cuantas buenas razones:

a).- Es muy simple de operar

b).- Cuenta con un repositorio super completo (Packagist)

c).- Disminuye significativamente los problemas de cambio de ambiente de ejecución (Mediante su funcionalidad de congelar dependencias)

Por qué un gestor de dependencias:

Cuando comienzas un proyecto en PHP, ya de cierta complejidad, no te vale solo con la librería de funciones nativa de PHP. Generalmente todos usamos alguna que otra librería de terceros desarrolladores, que nos permite evitar empezar todo desde cero. Ya sea un framework o algo más acotado como un sistema para debug o envío de email, validación de formularios, etc., cualquier cosa que puedas necesitar ya está creada por otros desarrolladores. Si no la estás usando ninguna librería posiblemente estés perdiendo tu precioso tiempo, pero eso es otra discusión.

De modo que, al comenzar el proyecto hasta ahora teníamos que ir a la página de cada uno de los componentes de software que queríamos usar, descargarlos, copiarlos en la carpeta de nuestro proyecto, etc. No solo eso, cuando estamos en mitad del desarrollo, o ya en producción, y nos cambian la versión de la librería, tenemos que volverla a descargar manualmente, actualizar los archivos, etc. Nadie se había muerto por hacer todo ese tipo de tareas de configuración y mantenimiento, pero no cabe duda que nos llevan un tiempo.

Cómo funciona Composer

Composer nos permite declarar las librerías que queremos usar en un proyecto. Su uso es extremadamente simple, lo que anima a cualquier persona a usarlo, sea cual sea su nivel técnico.

Para beneficiarnos del workflow que nos propone Composer simplemente tenemos que escribir un archivo de configuración en el que indicamos qué paquetes vamos a requerir. El archivo es un simple JSON en el que indicamos cosas como el autor del proyecto, las dependencias, etc.

El archivo JSON debe tener un nombre específico: composer.json

2.- Pip

Es un acrónimo que significa «Paquetes de instalación PIP» o «Programa de instalación preferida».

Es una utilidad de línea de comandos que le permite instalar, reinstalar o desinstalar paquetes PyPI con un comando simple y directo: «pip».

Si está utilizando Python 2.7.9 (o superior) o Python 3.4 (o superior), entonces PIP viene instalado con Python por defecto.

Si está ejecutando Python en un entorno virtual creado con virtualenv o pyvenv, entonces PIP estará disponible para ese entorno independientemente de la versión de Python.

3.- Rubygems

Es un gestor de paquetes para el lenguaje de programación Ruby, que proporciona un formato estándar y auto contenido (llamado gem) para poder distribuir programas o bibliotecas en ruby, una herramienta destinada a gestionar la instalación de estos, y un servidor para su distribución. Es por tanto, equivalente al papel que juegan CPAN Y PEAR en los lenguajes perl y php, respectivamente.

Rubygems es parte de la librería estándar a partir de la versión 1.9 de Ruby.Rubygems no es por lo general compatible con los sistemas de gestión de paquetes de Linux.

4.- NPM (Node Package Manager)

Es un gestor de paquetes predeterminado para Node.js. Esta escrito en su totalidad en JavaScript y permite instalar y distribuir principalmente módulos de javascripts en el registro. Los paquetes se tratan en el formato CommonJS, y son reconocibles por la presencia de un archivo Package.json

Npm se incluye con Node.js, por lo que si instala Node.js automáticamente también tendrá npm instalado.

Publicado por : Lorenzo Chávez Félix