Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesina
Autor:
Daniel Esteban Lizárraga Aldaba
Asesor:
Dra. Vanessa Guadalupe Félix Aviña
4
Agradecimientos
Agradezco a mis padres, por todo el esfuerzo que hicieron para que pudiera
culminar mi carrera universitaria, les doy las gracias por estar conmigo en este largo
trayecto de la carrera, por apoyarme en momentos difíciles y darme siempre las
fuerzas para no rendirme.
A su vez, les doy las gracias a mis compañeros, amigos y profesores, que siempre
buscaron apoyarme de la mejor manera posible, las enseñanzas que me dieron
para esforzarme y dar siempre lo mejor de mí.
5
Índice Temático
6
2.1.2.2.1 Traductor ……………………………………… 19
7
2.3.2 Sistema gestor de base de datos ……………………………… 28
3.3.2 Desarrollar una API REST para tareas con Python, Flask y
MySQL …………………………………………………………………… 47
8
Índice de Imágenes
Imagen 1 ………………………………………………………………………………… 11
Imagen 2 ………………………………………………………………………………… 12
Imagen 3 ………………………………………………………………………………… 17
Imagen 4 ………………………………………………………………………………… 18
Imagen 5 ………………………………………………………………………………… 19
Imagen 6 ………………………………………………………………………………… 19
Imagen 7 ………………………………………………………………………………… 20
Imagen 8 ………………………………………………………………………………… 21
Imagen 9 ………………………………………………………………………………... 22
Imagen 10 ………………………………………………………………………………. 27
Imagen 11 ………………………………………………………………………………. 29
Imagen 12 ………………………………………………………………………………. 30
Imagen 13 ………………………………………………………………………………. 31
Imagen 14 ………………………………………………………………………………. 32
Imagen 15 ………………………………………………………………………………. 32
Imagen 16 ………………………………………………………………………………. 35
Imagen 17 ………………………………………………………………………………. 36
Imagen 18 ………………………………………………………………………………. 36
Imagen 19 ………………………………………………………………………………. 38
Imagen 20 ………………………………………………………………………………. 38
Imagen 21 ………………………………………………………………………………. 39
Imagen 22 ………………………………………………………………………………. 39
9
Imagen 23 ………………………………………………………………………………. 40
Imagen 24 ………………………………………………………………………………. 40
Imagen 25 ………………………………………………………………………………. 40
Imagen 26 ………………………………………………………………………………. 41
Imagen 27 ………………………………………………………………………………. 41
Imagen 28 ………………………………………………………………………………. 42
Imagen 29 ………………………………………………………………………………. 42
Imagen 30 ………………………………………………………………………………. 42
Imagen 31 ………………………………………………………………………………. 43
Imagen 32 ………………………………………………………………………………. 43
Imagen 33 ………………………………………………………………………………. 44
Imagen 34 ………………………………………………………………………………. 44
Imagen 35 ………………………………………………………………………………. 45
Imagen 36 ………………………………………………………………………………. 45
Imagen 37 ………………………………………………………………………………. 46
Imagen 38 ………………………………………………………………………………. 46
Imagen 39 ………………………………………………………………………………. 46
Imagen 40 ………………………………………………………………………………. 48
Imagen 41 ………………………………………………………………………………. 48
Imagen 42 ………………………………………………………………………………. 49
Imagen 43 ………………………………………………………………………………. 49
Imagen 44 ………………………………………………………………………………. 50
Imagen 45 ………………………………………………………………………………. 50
10
Imagen 46 ………………………………………………………………………………. 50
Imagen 47 ………………………………………………………………………………. 51
Imagen 48 ………………………………………………………………………………. 51
Imagen 49 ………………………………………………………………………………. 52
Imagen 50 ………………………………………………………………………………. 52
Imagen 51 ………………………………………………………………………………. 52
Imagen 52 ………………………………………………………………………………. 53
Imagen 53 ………………………………………………………………………………. 53
Imagen 54 ………………………………………………………………………………. 53
Imagen 55 ………………………………………………………………………………. 54
Imagen 56 ………………………………………………………………………………. 54
Imagen 57 ………………………………………………………………………………. 55
Imagen 58 ………………………………………………………………………………. 55
Imagen 59 ………………………………………………………………………………. 55
Imagen 60 ………………………………………………………………………………. 56
Imagen 61 ………………………………………………………………………………. 56
Imagen 62 ………………………………………………………………………………. 56
11
CAPÍTULO I
12
1.1 Antecedentes
Logo de la empresa
Fuente: https://www.develop.com.mx/
13
1.1.1 Localización
Develop se encuentra ubicada en Presa Santa Teresa 176, Col. Irrigación, Miguel
Hidalgo, 11500 Ciudad de México, CDMX.
Ubicación de Develop
1.1.3 Misión
14
Desarrollar capital humano de clase mundial y alta ética profesional, mediante
procesos sistemáticos coordinados con el Sector Público, Academia y Marcas.
Hoy en día los diversos sistemas y aplicaciones con las que se interactúa para cubrir
ciertas necesidades, son más complejas de lo que deberían, puesto que muchas
veces no se tiene ni idea del cómo funcionan o con qué fin fueron creados.
15
1.2.2.1 Objetivo General
¿Por qué utilizar Python como herramienta de desarrollo por encima de otros
lenguajes de programación?
1.2.4 Hipótesis
Una vez estudiado los diversos cursos proporcionados sobre Python, será posible
tener un gran dominio sobre los conceptos esenciales que van relacionados con el
16
correcto uso del lenguaje de programación, de la misma forma será posible aplicar
los conocimientos adquiridos para el futuro desarrollo de aplicaciones.
Con el paso del tiempo, las tecnologías van cambiando adaptándose a lo que se
necesita, para seguir ofreciendo un funcionamiento óptimo, por lo que es un
problema el dejar que las diversas herramientas evolucionen sin tener en cuenta
que se deben adquirir los conocimientos necesarios para hacer uso de las mismas
en cuanto a la generación de software de calidad.
1.2.6 Relevancia
17
CAPÍTULO II
“Marco Conceptual”
18
2.1 Lenguaje de Programación
Fuente: PiperLab.
19
Pragmática: se refiere al modo en que el contexto influye en la forma cómo
interpretamos y analizamos los problemas que queremos resolver con un lenguaje
de programación.
Fuente: Gnux.
Es el más primitivo de los lenguajes y es una colección de dígitos binarios o bits que
la computadora lee e interpreta y son los únicos idiomas que las computadoras
entienden.
20
2.1.2.1.2 Lenguaje ensamblador
Permite escribir códigos mediante idiomas que conocemos y luego, para ser
ejecutados, se traduce al lenguaje de máquina mediante traductores o
compiladores.
2.1.2.2.1Traductor
Imagen 6. Traductor.
21
2.1.2.2.2 Compilador
Imagen 7. Traductor.
Permite traducir todo un programa de una sola vez, haciendo una ejecución más
rápida y puede almacenarse para usarse luego sin volver a hacer la traducción.
Compiladores
Depuradores
Enlazadores
Este programa toma objetos generados en los primeros pasos del proceso de
compilación y los recursos necesarios de la biblioteca, quita aquellos procesos y
datos que no necesita, y enlaza el código con dicha biblioteca para así aumentar su
tamaño y extensión.
22
Interpretadores o traductores
Carga el código ingresado y traduce las instrucciones para que el programa pueda
ser ejecutado.
IDE
Es una aplicación informática que proporciona una serie de servicios que facilitan la
programación de software, tales como:
Funciones de autocompletado;
2.2 Python
23
2.2.1 Historia
Fuente: El Pythonista.
2.2.2 Versiones
Versión 1.0
24
desarrolladores de Python se cambió a BeOpen.com para formar el equipo de
BeOpen Python Labs.
Versión 2.0
En octubre del año 2000 se publica la segunda versión de Python. Una nueva
versión en la que se incluyó la generación de listas, una de las características más
importantes del lenguaje este lenguaje de programación. Esta nueva versión de
Python también incluyó un nuevo sistema gracias al cual los programadores eran
capaces de hacer referencias cíclicas y, de esta manera, Python podía recolectar
basura dentro del código.
Versión 3.0
Propósito general
Multiplataforma
Interpretado
25
Quiere decir que no se debe compilar el código antes de su ejecución En ciertos
casos, cuando se ejecuta por primera vez un código, se producen unos bytecodes
que se guardan en el sistema y que sirven para acelerar la compilación implícita que
realiza el intérprete cada vez que se ejecuta el mismo código.
Interactivo
Orientado a Objetos
Funciones y librerías
Sintaxis clara
Python tiene una sintaxis muy visual, gracias a una notación identada de obligado
cumplimiento. Para separar las porciones de código en Python se debe tabular hacia
dentro, colocando un margen al código que iría dentro de una función o un bucle.
Esto ayuda a que todos los programadores adopten unas mismas notaciones y que
los programas de cualquier persona tengan un aspecto muy similar.
26
Tiene licencia de código abierto y está disponible para los usuarios de forma
gratuita.
Python posee una baja velocidad de procesamiento, por lo que puede volverse
difícil de manejar para aplicaciones grandes y complejas.
La mayoría de los servidores con servicio hosting no tienen soporte para Python.
Los tipos de datos básicos de Python son los booleanos, los numéricos y las
cadenas de caracteres.
Python también define otros tipos de datos, entre los que se encuentran:
Iteradores
Clases
27
Instancias
Excepciones
2.2.6.1Tipos numéricos
Python define tres tipos de datos numéricos básicos: enteros, números de punto
flotante y los números complejos.
Números enteros
El tipo de los números enteros es int. Este tipo de dato comprende el conjunto de
todos los números enteros, pero como dicho conjunto es infinito, en Python el
conjunto está limitado realmente por la capacidad de la memoria disponible. No hay
un límite de representación impuesto por el lenguaje.
Para representar el mayor número posible de los números reales con las
limitaciones de memoria, se adaptó la notación científica de representación de
números reales al sistema binario.
El último tipo de dato numérico básico que tiene Python es el de los números
complejos, complex.
Los números complejos tienen una parte real y otra imaginaria y cada una de ellas
se representa como un float.
En Python la clase que representa los valores booleanos es bool. Esta clase solo
se puede instanciar con dos valores/objetos: True para representar verdadero y
False para representar falso.
28
Formalmente, un string es una secuencia inmutable de caracteres en formato
Unicode.
Fuente: Arkhotech.
29
La información de una base de datos orientada a objetos se representa en forma de
objetos, como en la programación orientada a objetos.
Una base de datos distribuida consta de dos o más archivos que se encuentran en
sitios diferentes. La base de datos puede almacenarse en varios ordenadores,
ubicarse en la misma ubicación física o repartirse en diferentes redes.
Una base de datos orientada a grafos almacena datos relacionados con entidades
y las relaciones entre entidades.
Una base de datos OLTP es una base de datos rápida y analítica diseñada para
que muchos usuarios realicen un gran número de transacciones.
2.4 Framework
30
Imagen 11. Framework.
La tecnología AJAX permite que el usuario haga solicitaciones al servidor sin que
sea necesario recargar una página después de cada nueva solicitud. De esta forma,
las informaciones van surgiendo a medida que son solicitadas sin la necesidad de
que la página quede recargándose.
31
De gestión de contenidos
A estos Frameworks también se les conoce como CMF, que significa, Content
Manager Framework y facilita la programación de aplicaciones de un Sistema de
Gestión de Contenidos, popularmente conocido como CMS.
De Multimedia
Esta interfaz facilita el trabajo de los programadores que trabajan con video, audio
e imagen y colabora con la creación de las aplicaciones multimedias en general,
pudiendo servir para proyectos más complejos, como videoconferencias y
conversores de medios.
2.4.2 Flask
Fuente: Wikipedia.
Flask es un “micro” Framework: Para desarrollar una App básica o que se quiera
desarrollar de una forma ágil y rápida Flask puede ser muy conveniente, para
determinadas aplicaciones no se necesitan muchas extensiones y es suficiente.
32
Tiene un depurador y soporte integrado para pruebas unitarias: Si tenemos algún
error en el código que se está construyendo se puede depurar ese error y se
puede ver los valores de las variables. Además, está la posibilidad de integrar
pruebas unitarias.
Es compatible con wsgi: Wsig es un protocolo que utiliza los servidores web para
servir las páginas web escritas en Python.
Buen manejo de rutas: Cuando se trabaja con Apps Web hechas en Python se
tiene el controlador que recibe todas las peticiones que hacen los clientes y se
tienen que determinar que ruta está accediendo el cliente para ejecutar el código
necesario.
Fuente: Medium.
33
Una API de REST, o API de RESTful, es una interfaz de programación de
aplicaciones que se ajusta a los límites de la arquitectura REST y permite la
interacción con los servicios web de RESTful.
2.6 Insomnia
Fuente: Snapcraft.
Insomnia es un cliente REST multiplataforma, con una interfaz clara y sencilla. Con
funcionalidades que nos van a facilitar enormemente el trabajo.
2.7 Git
Fuente: Medium.
34
CAPÍTULO IIl
“Desarrollo”
35
Como se sabe, hoy en día el mundo laboral se encuentra en constante cambio, ya
que las nuevas tecnologías que van surgiendo no esperan a nadie, la mayoría, sino
que todas las empresas e instituciones buscan el conocer las diferentes tecnologías
y con ello irse adaptando a la demanda, buscando así tener una gran presencia en
el mercado laboral. Es un hecho que una constante capacitación y actualización de
conocimientos en los integrantes de un equipo de desarrollo, es necesaria, pues
mediante las mismas será posible el fortalecer u obtener diversas aptitudes y
conocimientos que permitirán al equipo abordar diversos ámbitos de tecnologías
relevantes en ese tiempo.
3.1 Desarrollo
36
3.2 Configuración de las Herramientas de desarrollo
Un IDE funge como una herramienta de gran peso y esencial para todo
programados, el contar con un buen IDE, que sea intuitivo, cómodo y fácil de usar
es de suma importancia, ya que cuando se desee ingresar largas líneas de código
será mejor la visualización del mismo y habrá una mejor gestión.
El IDE que fue tomado en cuenta durante estas capacitaciones fue el editor de texto
Visual Studio Code el cual es una gran elección puesto que, incluye soporte para la
depuración, control integrado de Git, resaltado de sintaxis, finalización inteligente de
código, fragmentos y refactorización de código. También es personalizable, por lo
que las personas pueden cambiar el tema del editor, los atajos de teclado y las
preferencias. Y un punto importante es que es gratuito.
Fuente: Propia.
37
Para ir probando las apps que se vayan desarrollando, será necesario el utilizar un
navegador web, que servirá como herramienta para cumplir con dicho objetivo. En
este caso se optó por utilizar Google Chrome el cual hoy en día es uno de los más
populares del mercado, contando con buenas herramientas en su developer tools
siendo este mejor que otros navegadores de su estilo.
Fuente: Hipertextual.
Fuente: Propia.
38
3.3 Actividades de desarrollo
3.3.1 Desarrollar una API REST relacionada a productos en venta con Python
y el framework Flask
El desarrollo de esta actividad como su nombre lo dice, consistió en crear una API
REST en la cual se manejará información relacionada a productos que se
encontrarían en una tienda en línea, simulando cómo sería el trabajar en una
aplicación desde su back-end utilizando Python y Flask para ello.
Importación de módulos
Uso de funciones
Retorno de funciones
Importación de dependencias
Promesas
Callbacks
Peticiones HTTP
Servidores locales
Para la creación de una API Rest, es necesario conocer los temas mencionados
anteriormente, para que esta cumpla con el protocolo RESTful que caracteriza este
tipo de aplicaciones.
39
Estructura del Proyecto
Fuente: Propia.
Se observan 2 archivos y una carpeta con la caché que se está generando durante
la ejecución de la app. Los otros 2 archivos son los esenciales puesto que en ellos
está la información y la lógica de ejecución de la app.
Archivo products.py: tiene solo información básica sobre ciertos productos para
gestionar mediante los métodos creados, cuentan con atributos como nombre,
precio y cantidad.
Fuente: Propia.
40
Archivo app.py: contiene todas las importaciones tanto del framework y métodos
necesarios, así como los métodos GET, POST, PUT y DELETE necesarios para
gestionar los datos.
Fuente: Propia.
Fuente: Propia.
La siguiente ruta, funciona a manera de testear que el server está funcionando con
éxito, solo utiliza una función para devolver un mensaje como json para dar la
bienvenida a la app.
41
Imagen 23. Mensaje de bienvenida servidor.
Fuente: Propia.
Fuente: Propia.
Como se puede observar fue exitoso, ya que regresa un código 200 a manera de
respuesta.
Fuente: Propia.
42
Imagen 26. Método GET todos los productos en el navegador.
Fuente: Propia.
Fuente: Propia.
43
Imagen 28. Método GET un solo producto.
Fuente: Propia.
Fuente: Propia.
44
Imagen 30. Método GET producto inexistente desde Insomnia.
Fuente: Propia.
Fuente: Propia.
En esta ruta al no ser de tipo GET, se tiene que especificar de manera manual que
es un método POST, al llamarse la ruta esta invoca la función de addProduct en el
cual en base al cuerpo recibido en la petición crea un nuevo producto y lo agrega al
arreglo de productos existente, por último, retorna un mensaje satisfactorio pues se
agregó el producto y arroja los productos actualizados.
Fuente: Propia.
45
Para probar el método desde Insomnia, dentro del método POST se le mandó un
nuevo producto con el nombre Router, el cual tiene un precio y cantidad para
agregar, el cual como se puede ver fue agregado satisfactoriamente y fue retornado
junto con los otros productos.
Fuente: Propia.
La ruta recibe un string con el nombre del producto a actualizar, se le especifica que
debe usar el método PUT para hacerlo.
Una vez recibido el nombre del producto a cambiar, se invoca la función editProduct
el cual en sus parámetros recibe el nombre a buscar, se evalúa que exista entre los
productos existentes, entra a una validación en la que si la variable que trae los
resultados debe ser mayor a 0 para afectar al producto y actualizarlo, al actualizarlo
se arroja un mensaje de que fue actualizado el producto y retorna el producto ya
actualizado, en dado caso que no se encuentre se da un mensaje avisando que el
producto no fue encontrado.
Fuente: Propia.
46
Como se observa el producto a modificar fue el que tenía el nombre de Laptop este
al si existir se cambió por Laptop Gamer y fue retornado el producto modificado
junto con un mensaje de que fue actualizado.
Fuente: Propia.
En este caso se le mandó como nombre a cambiar Escritorio este al no existir arroja
un mensaje relacionado con la inexistencia del producto.
Fuente: Propia.
47
Imagen 37. Método DELETE exitoso desde Insomnia.
Fuente: Propia.
Fuente: Propia.
Fuente: Propia.
El server corre sobre el puerto 4000, se valida solo que este corriendo como app
principal.
48
Esta práctica fue de gran ayuda puesto que al poner a prueba los conocimientos
previos relacionados, con peticiones HTTP, promesas, callbacks y consumo de
APIS Rest será posible crear aplicaciones en un futuro siguiendo una serie de pasos
similares. Este reto de programación fue un éxito, solamente quedaría de lado que
pudo haber sido mejor si se hubiera utilizado persistencia, para retener los datos y
no solo usarlos de una manera volátil, pero como la práctica se estipuló de esa
manera fue cumplida en su totalidad.
3.3.2 Desarrollar una API REST para tareas con Python, Flask y MySQL.
El desarrollo de este reto puso en práctica temas importantes como los siguientes:
Importación de módulos
Uso de funciones
Retorno de funciones
Importación de dependencias
Promesas
Callbacks
Peticiones HTTP
Servidores locales
Bases de datos
49
Estructura del Proyecto
Fuente: Propia.
Se observan dos directorios, uno con el nombre src el cual contiene un archivo
app.py este cuenta con toda la lógica, es decir los métodos asociados a cuando se
realices las diferentes peticiones dentro de la API. El otro directorio es donde se
instaló Virtualenv que es una herramienta usada para crear un entorno Python
aislado, el cual tiene sus propios directorios de instalación que no comparten
bibliotecas con otros entornos virtualenv o las bibliotecas instaladas globalmente en
el servidor, por lo que permite trabajar de forma local sin problemas.
Fuente: Propia.
Fue necesario el realizar diferentes importaciones, entre las que están, Flask que
fue el framework utilizado, jsonify que permite el retornar información en el formato
50
json, sqlalchemy y marshmallow que son las dependencias que fueron utilizadas
para realizar las conexiones con la base de datos a usar.
Fuente: Propia.
Fuente: Propia.
51
Imagen 44. Task_schema y Tasks_schema
Fuente: Propia.
Se crean dos variables, una con el nombre task_schema que es una instancia de
TaskSchema y sirve para obtener una sola respuesta de un registro existente en la
base de datos, la otra variable tasks_schema igual es una instancia de
TaskSchema, pero esta puede recibir diferentes registros y no solo uno.
Fuente: Propia.
Esta ruta es la correspondiente al path por default que se arroja una vez iniciado el
servidor, la misma al iniciar invoca un método con el nombre hello que retorna solo
un mensaje de bienvenida como un json.
Fuente: Propia.
52
Imagen 47. Método POST
Fuente: Propia.
Fuente: Propia.
Una vez ejecutado el método POST se le mandan los argumentos que se ven en la
imagen, solamente el título y descripción puesto que el id es auto incrementable, en
lado derecho se observa la tarea que fue insertada y se le dio el id 5, esto porque
ya se habían realizado pruebas y ese fue el id correspondiente a la sucesión.
Lo siguiente sería revisar la base de datos para ver si efectivamente fue insertado
en la tabla de las tareas.
53
Imagen 49. Inserción en BD
Fuente: Propia.
Se insertaron más elementos, ya que para ejecutar los diferentes métodos será
necesario tener varios registros.
Fuente: Propia.
Fuente: Propia.
54
Antes de ejecutar el método GET en Insomnia para su testeo se muestran los
registros en el momento que tiene la base de datos.
Fuente: Propia.
Una vez ejecutada la petición desde insomnia se observa que fue satisfactoria, ya
que retorna todas las tareas presentes en la base de datos.
Fuente: Propia.
Es similar al anterior, solo que este recibe un id, el cual le pasa a la función que
invoca, para que dicha función asocie ese id a una consulta para traerlo y guardarlo
en la variable task, al final se retorna la tarea que tenga el id indicado.
55
Imagen 54. Método GET una tarea desde insomnia
Fuente: Propia.
Como se sabía que existían en ese momento cuatro registros enumerados del 5 al
8, se optó por obtener el registro 7, lo cual como se observa en la imagen fue un
éxito.
Fuente: Propia.
Este método recibe un id el cual se desea modificar, dentro se invoca una función
que se le inyecta el id y se le asocia a una query del id que se desea encontrar
mismo que se guarda en una variable con el nombre task, el título y la descripción
recibida como cuerpo se integran en variables con el mismo nombre, para después
insertarlas en el registro por medio del task, finalmente se cierra la sesión en la base
de datos y se retorna el elemento modificado.
Fuente: Propia.
56
El registro a cambiar fue el 5, se mandaron los datos a modificar y como se observa
en el lado derecho fue satisfactorio.
Fuente: Propia.
Fuente: Propia.
57
Imagen 59. Método DELETE desde Insomnia
Fuente: Propia.
Fuente: Propia.
Se vuelve a entrar a la base de datos, para verificar que en efecto se haya removido,
lo cual si fue realizado.
Fuente: Propia.
En estas líneas lo que se hace es validar que la app este corriendo con el nombre
main, y que al correr se utilice el debugger, al no asignarle ningún puerto el server
se encontrará corriendo desde el puerto 5000.
Fuente: Propia.
58
Con la realización de esta práctica se tomaron en cuenta conocimientos adquiridos
sobre las peticiones HTTP, mismas que como se sabe son fundamentales dentro
de la creación de aplicaciones, en este caso fueron utilizadas para realizar una
REST API. El presente reto fue un completo éxito, ya que se cubrieron temas que
no fueron abordados en la práctica anterior, un tema esencial como la persistencia
es de suma importancia, ya que es necesario el mantener la información dentro de
cualquier sistema o aplicación.
59
CAPÍTULO IV
“Resultados y Conclusiones”
60
4.1 Resultados
Una vez concluidos los cursos en forma de capacitación, fue posible el conocer y
comprender de una mejor manera diversos aspectos básicos sobre el lenguaje de
programación Python. Los diferentes aprendizajes que se fueron adquiriendo han
sido empleados de manera satisfactoria para trabajar el uso y creación de APIS
REST.
4.2 Conclusiones
Tomando en cuenta los resultados, se puede afirmar que las capacitaciones fueron
una gran oportunidad, puesto que permitieron ampliar o mejoras conocimientos, y
así mismo enfocarlos a un ámbito más especializado. El realizar capacitaciones
constantes debe ser una prioridad por parte de las empresas, ya que, al querer
seguir mejorando en el campo laboral, poco a poco se deben ir adaptando a las
demandas de nuevas tecnologías.
61
Bibliografía
[1] RockContent. (2019, abril 20). ¿Qué es un lenguaje de programación y qué tipos
existen? | Blog Programación. Recuperado el 8 de noviembre de 2021. Disponible
en: https://rockcontent.com/es/blog/que-es-un-lenguaje-de-programacion/
[2] Martín López Mendoza. (2020, julio 16). Qué es un lenguaje de programación |
Lenguajes de Programación. Recuperado el 8 de noviembre de 2021. Disponible
en: https://openwebinars.net/blog/que-es-un-lenguaje-de-programacion/
[3] Desarrollo Web. (2003, noviembre 19). Qué es Python | Guía desarrollo web.
Recuperado el 8 de noviembre de 2021. Disponible en:
https://desarrolloweb.com/articulos/1325.php
[4] Tokio School. (2020, octubre 22). La historia de Python. Las versiones de un
lenguaje único | Plataforma educativa. Recuperado el 8 de noviembre de 2021.
Disponible en: https://www.tokioschool.com/noticias/historia-python/
[5] Student Place. (2018, septiembre 6). ¿Python? | Blog web. Recuperado el 8 de
noviembre de 2021. Disponible en:
https://studentplace98.blogspot.com/2018/09/python.html
[8] Juan José Lozano Gómez. (Sin fecha). Tipos de datos básicos de Python | Blog
Python. Recuperado el 8 de noviembre de 2021. Disponible en:
https://j2logo.com/python/tutorial/tipos-de-datos-basicos-de-python/
62
[9] Maestros del Web. (2007, octubre 26). ¿Qué son las bases de datos? | Platzi
Editorial. Recuperado el 8 de noviembre de 2021. Disponible en:
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/
[10] Oracle. (Sin fecha). Base de datos | Guía Oracle. Recuperado el 8 de noviembre
de 2021. Disponible en: https://www.oracle.com/mx/database/what-is-database/
https://www.edix.com/es/instituto/framework/
[12] RockContent. (2020, enero 8). Guía completa del Framework: qué es, cuáles
tipos existen y por qué es importante en Internet | Blog Programación. Recuperado
el 9 de noviembre de 2021. Disponible en:
https://rockcontent.com/es/blog/framework/
[13] Epitech. (2021, julio 8). Qué es Flask (Python) y cuáles son sus principales
ventajas | Guía. Recuperado el 9 de noviembre de 2021. Disponible en:
https://www.epitech-it.es/flask-python/
[14] José Domingo Muñoz. (2017, noviembre 17). Qué es Flask | Lenguajes de
programación. Recuperado el 9 de noviembre de 2021. Disponible en:
https://openwebinars.net/blog/que-es-flask/
[15] RedHat. (2020, mayo 8). ¿Qué es una API de REST? | Soluciones internet.
Recuperado el 9 de noviembre de 2021. Disponible en:
https://www.redhat.com/es/topics/api/what-is-a-rest-api
[17] Aarón Leyva. (Sin fecha). Control de versiones con Git | Portales hacia el
pasado. Recuperado el 9 de noviembre de 2021. Disponible en:
https://web.inventoteca.com/blog/noticias-1/post/control-de-versiones-con-git-7
63
Glosario
64
API REST: Una API de REST, o API de RESTful, es una interfaz de programación
de aplicaciones que se ajusta a los límites de la arquitectura REST y permite la
interacción con los servicios web de RESTful.
65