practica django

En esta ocasión vamos a ver que es lo que contiene el archivo de nombre "settings" dentro del proyecto que anteriormente habíamos creado con Django, asi como unos otros que son importantes.
Al entrar a la pagina de docs que viene en el proyecto, nos da instrucciones de como utilizarlo etc. Junto con información de bases de datos.

 Dentro de dicha pagina, nos viene una gran cantidad de documentación que nos va explicando varios aspectos de nuestro proyecto que hemos creado en Django,entre otras cosas. (Como agregar cosas al proyecto y empezar a mejorarlo)

Volviendo a nuestro archivo de settings, iremos parte a parte viendo que es lo que contiene dentro de su estructura y para que funciona cada una de sus partes.
Dentro de setting hay un apartado de url's en donde son mas paginas que están relacionadas a nuestro proyecto.


Dentro de nuestro mismo proyecto, hay un archivo llamado urls en donde tenemos lo que es la pagina principal de nuestro proyecto en Django.


En este mismo archivo, podemos ver la urlpatterns en donde tenemos el apartado que dice "admin". En la entrada anterior, habíamos visto que al ingresar a la pagina que el servidor nos daba y agregándole "/admin" podíamos entrar a una parte en donde nos pedía un usuario y contraseña. Bueno, esa palabra de admin es la que nos permite hacerlo. Se puede modificar o dejar de esta manera dependiendo de las preferencias que se tengan.
Por ejemplo, cambiamos a inicio:


Y, para poder ingresar a la pagina antes mencionada, se debe poner /inicio. Algo así:


En la siguiente parte del archivo setting, tenemos el apartado de proceso de autentificaciones en donde se reciben los requerimientos del procesador,mensajes entre otras cosas.


Bases de datos: en este apartado podemos configurar dicha base para que nuestro proyecto tenga mejor rendimiento o use una base de datos de la cual tengamos mejor conocimiento.
Contraseña y nombre para ingresar a la base de datos del proyecto.


Si se ingresa a esta pagina, podemos ver mas documentación del apartado de bases de datos(configuración,modificaciones etc).

Seguimos con lo que son los validadores de contraseñas, en esta parte vienen varias restricciones que debe tener una contraseña para que sea valida como una para un usuario,etc(En esta parte, se pueden utilizar ya sea los validadores que se tienen o crear uno propio y agregarlo en esta parte).


En los ultimos dos apartados, tenemos lo que es la parte del lenguaje que tendrá nuestro proyecto en la pagina web que se tiene y finalmente la parte de los archivos fijos(imagenes,css,javascripts,etc)

Lenguaje de la pagina

Archivos fijos

Actualización: Parte de las aplicaciones que se tienen instaladas dentro del proyecto (este apartado sigue dentro del archivo settings)




Frameworks

En esta ocasión les voy a presentar una lista con un poco de información de cada uno de los frameworks mas utilizados y populares entre la comunidad de programación.
Incluí un breve descripción de cada uno de los frameworks, así como sus ventajas y desventajas.

1.Rails on Ruby

Rails fue creado en 2003 por David Heinemeier Hansson y desde entonces ha sido extendido por el Rails core team, mas de 2,100 colaboradores y soportado por una extensa y activa comunidad.
Rails es un framework de desarrollo de aplicaciones web escrito en el lenguaje de programación Ruby. Esta 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 mas que muchos otro lenguajes y frameworks. Ademas, expertos desarrolladores en Rails reportan que hace que el desarrollo de aplicaciones web sea mas entretenido.

Ventajas:

  • Cuenta con código libre
  • Tiene una extensa comunidad detrás de el que la respalda
  • Favorece en el ahorro de lineas de código
  • Tiene una forma mas fácil de interactuar
Desventajas

  • Se debe aprender el lenguaje de Ruby
  • No es un lenguaje muy conocido

2. Symfony

Symfony es uno de los frameworks PHP mas populares entre los programadores y empresas, ya que permite que los programadores sean mucho mas productivos a la vez que crean codigo de mas calidad y mas facil de mantener. Symfony es maduro, estable,profesional y esta muy bien documentado.
Symfony sigue la estela de Rails para simplificar al maximo el desarrollo de aplicaciones web profesionales con PHP, utilizando las mejores practicas y los patrones de diseño mas importantes. Symfony incorpora muchas de las ideas del RAD("Desarrollo rapido de aplicaciones") para conseguir que la programacion de las aplicaciones sea lo mas productiva, correcta y entretenida posible.

Ventajas
  • Productividad
  • Organizacion clara
  • Convencion con otros frameworks(facil integrar trabajos de otros frameworks)
  • Documentacion
  • Seguridad
  • Comunidad
  • Mejor rendimiento

Desventajas
  • Curva inicial de aprendizaje
  • Convencion (muchas veces para algunos programadores es una desventaja)
  • Sensacion de bala de plata(Se piensa que es el mejor framework una vez que se acostumbra a su uso y se cae en una zona de confort)

3. AngularJS

AngularJS es Javascript. Es un proyecto de código abierto, realizado en Javascript que contiene un conjunto de librerías útiles para el desarrollo de aplicaciones web y propone una serie de patrones de diseño para llevarlas a cabo. En pocas palabras, es lo que se conoce como un framework para el desarrollo, en esta caso sobre el lenguaje Javascript con programación del lado del cliente.
Este Javascript pretende que los programadores mejoren el HTML que hacen. Que puedan producir un HTML que, de manera declarativa, genere aplicaciones que sean fáciles de entender incluso para alguien que no tiene conocimientos profundos de informática. El objetivo es producir un HTML altamente semántico, es decir, que cuando lo leas entiendas de manera clara qué es lo que hace o para qué sirve cada cosa.

Ventajas
  • Angular ofrece más opciones de serie, ayudando a arrancar sin intimidarte por la toma de decisiones
  • Consistencia en la documentacion
  • Mejor y mas facil mantenimiento
  • Un componente en Angular es una porción de código que es posible reutilizar en otros proyectos de Angular sin apenas esfuerzo, lo que permite un desarrollo de aplicaciones mucho más ágil
  • Gran soporte de herramientas
Desventajas
  • Nomenclatura(usa conceptos faciles de comprender,pero los llama por un nombre poco convencional)
  • Sus filtros no funcionan correctamente
  • Falta de documentación de sus funciones
4. React




React (también llamada React.js o ReactJS) es una biblioteca Javascript de código abierto diseñada para crear interfaces de usuario con el objetivo de facilitar el desarrollo de aplicaciones en una sola página. Es mantenido por Facebook y la comunidad de software libre, han participado en el proyecto más de mil desarrolladores diferentes.
React intenta ayudar a los desarrolladores a construir aplicaciones que usan datos que cambian todo el tiempo. Su objetivo es ser sencillo, declarativo y fácil de combinar.

Ventajas
  • Fácil saber cómo se representa un componente, que acaba de observar la función de render.
  • JSX facilita la lectura del código de sus componentes. También es muy fácil ver el diseño o cómo los componentes se enchufan/combinan entre sí.
  • Puede procesar React en el lado del servidor.
  • Es fácil de probar, y también puede integrar algunas herramientas como broma.
  • Garantiza la legibilidad y facilita el mantenimiento.
  • Puede usar Reaccionar con cualquier marco (Backbone.js, Angular.js) ya que solo es una capa de vista.
Desventajas
  • Es solo una capa de vista, todavía tiene que conectar su código para solicitudes de Ajax, eventos, etc. Algunas personas se sorprenden por eso.
  • La biblioteca en sí es bastante grande.
  • La curva de aprendizaje puede ser pronunciada.

5. CakePHP



CakePHP es un marco de desarrollo rápido para PHP, libre, de código abierto. Se trata de una estructura que sirve de base a los programadores para que éstos puedan crear aplicaciones Web. Su principal objetivo es que se pueda trabajar de forma estructurada y rápida, sin pérdida de flexibilidad.CakePHP empezó en 2005, cuando Ruby On Rails estaba ganando popularidad y utiliza muchos de sus conceptos. Desde entonces la comunidad creció y generó muchos subproyectos.

Ventajas
  • Facil de aprender
  • Implementacion rapida
  • Migracion entre entornos
  • Plugins(Herramientas para lo que se necesite programar)
Desventajas
  • Malos consejos a la hora de realizar algun procedimiento(recomendaciones)
  • Tamaño de los ficheros. Demasiado pesados
  • Exceso de consultas

6. ASP.NET


ASP.NET es un entorno para aplicaciones web desarrollado y comercializado por Microsoft. Es usado por programadores y diseñadores para construir sitios web dinámicos, aplicaciones web y servicios web XML. Apareció en enero de 2002 con la versión 1.0 del .NET Framework, y es la tecnología sucesora de la tecnología Active Server Pages (ASP). ASP.NET está construido sobre el Common Language Runtime, permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.

Ventajas
  • Control de los recursos del sistema
  • Velocidad y seguridad en el codigo
  • Portabilidad y gran esbilidad
Desventajas
  • Consumo elevado de recursos innecesarios
  • La ejecucion de las aplicaciones requiere el uso de mas recursos innecesarios
  • No es de codigo abierto

7.Node




Node.js es una forma de ejecutar JavaScript en el servidor, además de mucho más. Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el motor V8 permite a Node proporciona un entorno de ejecución del lado del servidor que compila y ejecuta javascript a velocidades increíbles. 

Ventajas
  • Escalabilidad de manera sencilla
  • Rendimiento
  • Gestion de paquetes
  • "Popularidad"


Desventajas
  • API inestable
  • Falta de una libreria estandar
  • Falta de librerias en general
  • No hay suficiente documentacion

8.Yii


Yii es un framework PHP basado en componentes de alta performance para desarrollar aplicaciones Web de gran escala. El mismo permite la máxima reutilización en la programación web y puede acelerar el proceso de desarrollo.
Yii también es un framework generico de programación Web que puede ser utilzado para todo tipo de aplicaciones Web. Gracias a que es liviano de correr y está equipado con soluciones de cacheo sofisticadas, es adecuado para desarrollar aplicaciones de grán tráfico como portales, foros, sistemas de administración de contenidos (CMS), Sistemas de comercio electrónico (e-commerce), etc.

Ventajas
  • Esta diseñado especificamente para trabajar con aplicaciones web de trafico alto.
  • Manejo de permisos a usuarios
  • Eficiencia y variedad de funcionalidades
  • Clara documentacion(ingles)
  • Seguro
Desventajas

  • Perdida de control sobre lo que se esta haciendo
  • Generador de codigo basura

9.Meteor




Meteor JS es una nueva infraestructura de JavaScript que tiene como objetivo automatizar y simplificar el desarrollo de aplicaciones web que actúan en tiempo real.
Usa la comunicación en tiempo real mediante un protocolo llamado Distributed Data Protocol (DDP), que es soportado por navegadores modernos que usan WebSockets 
Meteor JS es parte de una nueva ola de frameworks y tecnologías que buscan desafiar el status quo haciendo webs reactivas y en tiempo real.

Ventajas
  • Mejor proceso de comunicacion y actualizacion con las bases de datos
  • Facil de aprender
  • Respuesta rapida
  • Gran comunidad activa
Desventajas
  • Meteor viene incluido solo con MongoDB
  • El sistema de paquetes esta cerrado a la comunidad por ahora.

10.Laravel




Laravel es un framework de código abierto para desarrollar aplicaciones y servicios web con PHP 5 y PHP 7. Su filosofía es desarrollar código PHP de forma elegante y simple, evitando el "código espagueti"(Codigo que no tiene logica o es incomprensible para el programador) . Fue creado en 2011 y tiene una gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET

Ventajas
  • Desarrollo rapido
  • Hace la aplicacion mas segura
  • Facil mantenimiento
  • Gran comunidad
Desventajas
  • Lenta ejecucion
  • Soluciones generales para problemas especificos
  • Tiempo para aprender y dominar el framework
  • Visibilidad y control limitado

crear proyecto y app con DJANGO

En esta entrada veremos la creacion de nuestro primer proyecto con Django de python.
Para comenzar, debemos instalar lo que Django nos da para trabajar. Esto se puede hacer de dos formas diferentes; desde el cmd de nuestro equipo junto a la herramienta de python, PIP o podemos hacer la instalacion desde Pycharm en ajustes de nuestro proyecto.

En mi caso, lo he hecho desde el cmd junto a Pip con el siguiente comando.

python pip install Django

Probablemente nos muestre un mensaje de error, debido a que la version de pip que tenga la maquina no este actualizado. Pero, el mismo cmd nos da el comando para actualizarlo y posteriormente instalar django.


Una vez hecho este vamos a crear nuestra aplicación primeramente.


Yo lo he creado de esta forma dentro de la carpeta de scripts de python, pero si se tiene una versión mas actual de python no es necesario hacer esto.
En mi casi, aun y con la variable de entorno que tengo no me reconoce la instrucción django-admin por la versión de python y django que se instalo(dejare una tabla sobre esto).



Para crear un proyecto es la misma sintaxis que en una aplicación, la única diferencia es que en lugar de "startapp" seria "startproject".



Con la instrucción dir/p podemos revisar lo que django nos ha creado en la carpeta con el nombre del proyecto, ya sea para la aplicación y para el proyecto.

Continuando con las instrucciones, dentro de nuestro proyecto podemos correr un runserver para activar el servidor del proyecto que hemos creado, usando el archivo manage.py

Una vez que hemos hecho esto, dentro de lo que la consola nos manda es una direccion ip de nuestro proyecto. Ingresando esta pagina al navegador de su preferencia, nos mostrara algo como esto.


Como nuestro proyecto/aplicación esta vacía porque aun no hemos creado nada, la pagina misma nos muestra un par de instrucciones de como iniciar alguna aplicación que hemos creado y no ha sido mostrada en esta pagina.
Al agregar a la dirección anterior "/admin" nos enviara a una pagina para ingresar un usuario y contraseña que aun no se han creado, pero gracias a Django podemos hacer esto dentro de nuestro proyecto/aplicación en unas entradas mas adelante.



Si bien, al ingresar a cualquiera de estas dos paginas dentro de la consola nos ira mostrando actividades de lo que hemos realizado al entrar a dichas paginas en linea.



Originalmente cuando corremos el servidor con runserver y el archivo manage.py, nos aparecía un mensaje como recomendación para hacer la migración de los archivos de nuestro proyecto o aplicación. Esto se realiza de una manera muy sencilla. Saliendo del servidor con ctrl + c, nos regresa a nuestro cmd en donde ingresaremos lo siguiente y asi comenzara la migración de los archivos y datos.


Al hacer esto, cuando se ingrese de nueva cuenta al servidor ya no nos aparecerá la recomendación de hacer la migración de los archivos.

1.2 Analisis de los manejadores de bases de datos

Un manejador o gestor de bases de datos (DBMS) es un sistema que permite la creacion, gestion y administracion de bases de datos. Asi como la eleccion y manejo de las estructuras necesarias para el almacenamiento y busqueda de la informacion del modo mas eficiente posible.

Gestores de bases de datos (DBMS)


Oracle
Oracle data base RDBMS es un sistema de administracion de bases de datos relacionales de objetos de Oracle corporation.
La base de datos de Oracle es la primera diseñada para la computacion grid empresarial, la cual proporciona la manera mas flexible y rentable de administrar la informacion y las aplicaciones.

Ventajas

  • Oracle es el motor de base de datos objeto-relacional mas usado a nivel mundial
  • Puede ejecutarse en todas las plataformas
  • Permite el uso de particiones para mejorar su eficiencia, de replicacion e incluso ciertas versiones admiten la administracion de bases de datos distribuidas 
  • Oracle es la base de datos con mas orientacion a internet.
Desventajas
  • Se encuentran muchas versiones desde su lanzamiento original de version 8 con varias versiones posteriores con correcciones,hasta su estabilidad en la version 8.0.3. El motivo de estos errores fue, al parecer, la remodelacion del sistema de almacenamiento por causa de la introduccion de extensiones orientadas a objetos.
  • Su mayor inconveniente es su precio. Incluso las licencias de personasl Oracle son excesivamente caras.


MySQL
Es un sistema de administracion de base de datos que nos permite administrar bases de datos relacionales. Es un software de codigo abierto respaldado por Oracle. A pesar de que MySQL es un software de codigo abierto, puede comparse una version de licencia comercial de Oracle para obtener servicios de soporte pemium.

Ventajas
  • MySQL es de codigo abierto
  • Tiene una gran velocidad al realizar operaciones, lo que mejora su rendimiento
  • Facilidad de configuracion e intalacion
  • Soporta gran variedad de sistemas operativos
  • Su conectividad, velocidad y seguridad hacen de MySQL server altamente apropiado para acceder a bases de datos en internet.
Desventajas
  • Gran porcentaja de las utilidades de MySQL no estan documentadas
  • No es intuitivo como otros programas. Ejemplo: Access.

Microsoft SQL Server
SQL Server es un sistema de administracion de bases de datos relacionales desarrollado por Microsoft.Tambien es un ORDBMS, plataforma dependiente tanto de su interfaz grafica como software basado en comandos y SQL language, que es producto de IBM.

Ventajas
  • Es muy util para manejar y obtener datos de la red
  • Compatibilidad con la mayoria de las tareas administrativas de SQL Server.
  • Al trabajar una red social, permite agregar mas servidores de SQL Server y visualizar las bases de datos de otra persona.
Desventajas
  • La acaparacion de memoria RAM para intalaciones y manejo de software
  • Contiene muchas restricciones entre ellas
  • Bloqueos a nivel de pagina
  • Un tamaño fijo y demasiado pequeño al trabajar en la hoja

PostgreSQL
Es un potente sistema de gestion de bases de datos relacionales de codigo abierto.
PostgreSQL se ejecuta en todos los principales sistemas operativos, incluidos Linux, Unix y Windows.
Diseñado para ambientes de alto volumen y nadie puede demandarlo por violar acuerdos de licencia, puesto que no hay costo asociado a la licencia de este software.

Ventajas
  • Su intalacion ilimitada
  • Facilidad al administrar 
  • Dispone de flexibilidad para hacer investigacion y desarrollo de sistemas sin necesidad de incurrir en costos adicionales
Desventajas
  • Es 3 veces mas lento que MySQL
  • La sintaxis de algunos comandos o sentencias no es nada intuitiva
  • Consume muchos recursos de la maquina

MongoDB
MongoDB es una base de datos multiplataforma y orientada a documentos que ofrece alto rendimiento, alta disponibilidad y escalabilidad facil. MongoDB trabaja en concepto de coleccion y documentacion

Ventajas
  • MongoDB tiene la capacidad de realizar consultas utilizando javascript
  • Se utiliza un sistema de archivos, ya que cuenta con la capacidad para balancear la carga y recopilacion de datos utilizando multiples servidores de almacenamiento de archivo.
Desventajas
  • MongoDB bloquea la base de datos cada vez que se realiza una escritura, lo que reduce la concurrencia dramaticamente
  • Tiene problemas de rendimiento cuando el volumen de datos supera los 100 GB.

DB2
Es un producto de base de datos de IBM.
Sistema de gestion de base de datos relacional, diseñado para almacenar, analizar y recuperar los datos de manera eficiente.
DB2 posee monitor grafico el cual posibilita observar el tiempo de ejecucion de una sentencia SQL y corregir detalles para documentar el rendimiento, asi como gestionar tanto datos relacionales convencionales como datos XML.

Ventajas
  • DB2 permite agilizar el tiempo de respuesta de una consulta
  • Recuperacion utilizando accesos de solo indices
  • Posee tablas de resumen, tablas replicadas, uniones hash entre otras.
Desventajas
  • Lentitud al crear y ejecutar consultas
  • Utiliza mucha memoria RAM.

Cassandra
Apache cassandra es un sistema de administracion de bases de datos distribuidas de fuente abierta y gratuita diseñado para manejar grandes cantidades de datos en muchos servidores de productos basicos. Proporciona un mecanismo para almacenar y recuperar datos que no sean las relaciones tabulares utilizadas en bases de datos relacionales.

Ventajas
  • Esta orientado a columnas familias
  • Tolerante a fallos, ya que replica los datos de forma automatica a multiples nodos
  • Almacenamiento de los datos tipo column family
Desventajas
  • No esta orientada a transacciones, el cual es su factor mas debil.
  • Este tipo de sistemas no se recomienda para transacciones y altas concurrencias, debido a la forma de almacenamiento de datos columna a columna

Microsoft Access
Microsoft access es parte del conjunto de aplicaciones de Microsft Office, es un sistema de administracion de bases de datos que combina el motor de base de datos Microsft jet relacional con una interfaz grafica de usuario y herramientas de desarrollo software.
Microsoft access almacena datos en su propio formato basado en el motor de bases de datos de access jet. Tambien importa o vincula directamente a datos almacenados en otras aplicaciones y bases de datos.

Ventajas
  • Otorga capacidades para aprovechar la informacion sin necesidad de ser un experto en bases de datos
  • A traves de bases de datos web recien agregados, access amplia la eficacia de los datos, facilita el seguimiento, creacion de informes y el uso de compartido con otros usuarios
Desventajas
  • No es funcional para bases de datos de gran calibre(en cuanto al volumen de datos o usuarios).
  • Su mayor inconveniente es que no es multiplataforma, pues solo se encuentra para sistema operativo de microsoft.

SQLite
Es una biblioteca de software que implementa un motor de bases de datos SQL transaccional autonomo, sin servidor y de configuracion cero.
SQLite esta disponible para Unix(Linux, Mac OS-X, Android, IOS) y Windows
Una base de datos SQLite completa se almacena en un unico archivo de disco multiplataforma.
SQLite se caracteriza por ser un motor de base de datos robusto y agil diseñado para ambientes de alto volumen.

Ventajas
  • No requiere una configuracion y no necesita uso de servidor (proceso activo para atender peticiones)
  • Es multiplataforma y posee un acceso mucho mas rapido
Desventajas
  • SQLite posee deficiencias de la herramienta where, esta limitacion esta dada por el soporte para clausulas anidadas, al igual que en claves foraneas.

Redis
Redis es un almacen de structura de datos en memoria de codigo abierto, utilizado como base de datos, cache y agente de mensaje.
Redis admite estructuras de datos tales como cadenas, hashes, listas, hiperlogalos,etc.

Ventajas
  • La principal ventaja de Redis es su velocidad. Guarda los datos en RAM, por lo que cuando el microprocesador le pide un dato, lo busca en la RAM sin tocar el disco duro
Desventajas
  • Aun asi, la gran velocidad y el guardarlo en memoria RAM hace que nos encontremos con la desventaja de Redis que se traduce en no poder guardar tablas enteras ni muchos datos.

MariaDB
MariaDB es un fork de MySQL que nace bajo la licencia GPL. Esto debido a que Oracle compro MySQL y cambio el tipo de licencia por un privativo, aunque mantuvieron MySQL community edition bajo licencia GPL.
La compatibilidad con MySQL es practicamente total y por si fuera poco tenemos mejoras de rendimiento y funcionalidad. MariaDB esta diseñada para reemplazar a MySQL directamente ya que mantiene las mismas ordenes, APIs y bibliotecas.

Ventajas
  • Nuevos motores de almacenamiento, para la mayoria de usuarios lo interesante es Aria, que viene a reeemplazar a MyISAM y tambien tenemos a XtraDB que reemplaza a InnoDB.
  • Mejora de velocidad sobre todo en consultas complejas
  • Se añaden nuevas tablas al sistema para almacenar estadisticas que nos pueden ayudar a optimizar la base de datos
  • El sistema para manejar las conexiones se ha mejorado
Desventajas
  • Uno de los escasisimos casos de incompatibilidad con MariaDB
  • El tener que desinstalar MySQL e instalar MariaDB(la migracion de datos es muy sencilla).