1 00:00:02,609 --> 00:00:18,050 Buenos días, Sergio. Hoy, día 21 de enero, a las 1 y 45, estamos convocados a través de la Jefatura del Departamento para la defensa del modo profesional del ciclo formativo de grado superior de ASIR. 2 00:00:18,969 --> 00:00:25,350 Informo de que esta grabación se utilizará en el entorno de EducaMadrid con fines educativos 3 00:00:25,350 --> 00:00:30,829 y sólo estará a disposición de los profesores en el aula virtual para llevar a cabo la evaluación 4 00:00:30,829 --> 00:00:36,909 y la calificación de la defensa del proyecto. En el aula virtual de proyectos habéis sido 5 00:00:36,909 --> 00:00:42,149 informados de los criterios y la rúbrica de calificación. El orden de presentación del 6 00:00:42,149 --> 00:00:48,929 proyecto es el siguiente. 15 minutos para defender el proyecto y 5 minutos para preguntas 7 00:00:48,929 --> 00:00:55,469 por parte del tribunal. Dicho esto, tu tiempo de exposición comienza a partir de este momento. 8 00:00:55,810 --> 00:00:57,030 Adelante y mucha suerte. 9 00:00:59,130 --> 00:01:04,950 Bueno, pues empezamos. Mi proyecto consiste en una aplicación para la gestión de inventarios 10 00:01:04,950 --> 00:01:15,209 de RACS. Esta aplicación básicamente es un entorno gráfico de sistema gestor de bases 11 00:01:15,209 --> 00:01:24,670 de datos mediante una aplicación web en el cual vamos a poder a través de esta aplicación 12 00:01:24,670 --> 00:01:27,090 crear bases de datos 13 00:01:27,090 --> 00:01:28,230 y gestionarlas 14 00:01:28,230 --> 00:01:33,069 la motivación del 15 00:01:33,069 --> 00:01:35,109 proyecto viene 16 00:01:35,109 --> 00:01:36,950 dada sobre todo porque 17 00:01:36,950 --> 00:01:38,890 yo cuando hice las prácticas 18 00:01:38,890 --> 00:01:43,269 uno de los problemas que había 19 00:01:43,269 --> 00:01:45,129 a la hora de 20 00:01:45,129 --> 00:01:49,049 llevar a cabo 21 00:01:49,049 --> 00:01:50,629 los mantenimientos de los racks 22 00:01:50,629 --> 00:01:52,829 era que no había 23 00:01:52,829 --> 00:02:00,549 nada guardado acerca de la información de los componentes que tenía cada rack. 24 00:02:01,530 --> 00:02:07,750 Entonces, a raíz de aquello, pues se me ocurrió desarrollar una aplicación 25 00:02:07,750 --> 00:02:13,889 en la que guardar toda esa información, porque si bien es verdad que hay empresas 26 00:02:13,889 --> 00:02:18,810 que lo que hacen es utilizar archivos PDF, o sea, archivos Excel, 27 00:02:18,810 --> 00:02:21,990 a la hora de 28 00:02:21,990 --> 00:02:29,740 agregar información y demás, a la hora de gestionar la información que contiene 29 00:02:29,740 --> 00:02:32,280 muchas veces 30 00:02:32,280 --> 00:02:36,900 o esos Excel los perdían 31 00:02:36,900 --> 00:02:41,740 o los habían modificado demasiado 32 00:02:41,740 --> 00:02:45,680 no los habían actualizado y bueno, esta aplicación 33 00:02:45,680 --> 00:02:50,180 la idea de esta aplicación es un poco solucionar ese inconveniente 34 00:02:50,180 --> 00:02:57,939 y dar una metodología más actual a lo que se está utilizando hasta ahora. 35 00:03:01,080 --> 00:03:08,000 ¿En qué consiste? Pues una aplicación web mediante la cual podemos gestionar inventarios de RACs 36 00:03:08,000 --> 00:03:12,979 guardando toda la información sobre los distintos RACs que gestiona un departamento de IT. 37 00:03:12,979 --> 00:03:37,039 El funcionamiento es a través de un frontend basado en HTML, CSS y JavaScript que hacen peticiones a un backend que funciona con Python y este a su vez conecta con un sistema gestor de bases de datos MySQL 38 00:03:37,039 --> 00:03:44,039 que es desde donde extrae la información de las bases de datos y en donde las guarda. 39 00:03:47,020 --> 00:04:05,580 Luego, las tecnologías y herramientas utilizadas, como ya he dicho, HTML5 para darle el aspecto a la, bueno, HTML5 y CSS para darle el aspecto a la interfaz web 40 00:04:05,580 --> 00:04:23,480 y JavaScript que va a ser lo que va a componer el frontend y que va a ser lo que interactúa con el backend, con Python, para poder mostrar las peticiones que le haga en la interfaz de Word. 41 00:04:23,480 --> 00:04:45,579 En el backend, como ya he dicho, tenemos Python. Python se encargará de enviar las peticiones al sistema gestor de bases de datos y antes de nada, Python va a requerir una serie de librerías. 42 00:04:45,579 --> 00:05:06,259 Entre ellas está Flask. Flask es un framework para el desarrollo de aplicaciones web. Será necesario MySQL Connector Python, que es otro framework que permite conectar con sistemas gestores de bases de datos basados en MySQL. 43 00:05:06,259 --> 00:05:33,180 Requiere también Pandas, que Pandas lo que hace, bueno eso es Pandas y OpenPixel son los frameworks que se utilizan para extraer datos en formatos XLS, para poder extraer datos en Excel y también para manipular datos en Excel a través de Python. 44 00:05:33,180 --> 00:06:00,160 Y luego también la última librería es Blueprint porque como el código de Python acabó siendo muy extenso, la manera de poder trabajar cómodamente con el código al final fue a través de dividir, fragmentar el código en distintos ficheros y se unen todos a través de Blueprint. 45 00:06:03,180 --> 00:06:15,699 Como ya he dicho, el sistema gestor de bases de datos que utiliza por detrás es MySQL y las hojas de cálculos las dará en XLS. 46 00:06:16,519 --> 00:06:26,040 El funcionamiento, bueno, el usuario hace una petición al frontend mediante la interfaz web. 47 00:06:26,040 --> 00:06:39,519 JavaScript le envía esa petición al backend, el backend procesa la información y o bien extrae o bien almacena la información 48 00:06:39,519 --> 00:06:46,560 en el sistema gestor de bases de datos para después devolverse al frontend y el frontend a su vez se la devuelve al usuario. 49 00:06:46,560 --> 00:06:59,180 En cuanto al uso profesional, bueno, como ya he dicho, en cualquier tipo de empresa de soporte informático, 50 00:06:59,180 --> 00:07:06,220 que es donde hice yo las prácticas, va a ser bastante útil porque va a poder ayudar al departamento de IT 51 00:07:06,220 --> 00:07:12,040 a mantener organizados todos los inventarios. 52 00:07:12,040 --> 00:07:33,620 Luego también empresas proveedoras de servicios de cloud computing. Al final, como no deja de ser un sistema gestor de base de datos, cualquier tipo de empresas de servicios de cloud computing van a necesitar el uso de bases de datos. 53 00:07:33,620 --> 00:07:37,779 ocurre lo mismo con operadores de centros de datos 54 00:07:37,779 --> 00:07:43,040 y en una pyme tecnológica va a ser bastante útil 55 00:07:43,040 --> 00:07:49,279 ya que al ser una interfaz bastante intuitiva 56 00:07:49,279 --> 00:07:55,699 no será necesario que los técnicos tengan grandes conocimientos en SQL 57 00:07:55,699 --> 00:08:00,459 con lo cual para una pyme le va a venir bien 58 00:08:00,459 --> 00:08:05,839 ya que no tendrá que contratar a gente experta en bases de datos. 59 00:08:07,819 --> 00:08:12,720 Luego, usos en otros posibles sectores, pues en cualquier empresa de logística, 60 00:08:12,959 --> 00:08:19,259 si además le agregamos funciones como puede ser la lectura de códigos de barra o códigos QR, 61 00:08:20,120 --> 00:08:24,720 va a facilitar mucho la logística, por ejemplo, de un almacén. 62 00:08:24,720 --> 00:08:42,879 Ocurre lo mismo en el sector secundario de manufactura y producción, en donde haciéndole unas pequeñas modificaciones al código van a poder sacarle bastante provecho a una aplicación como esta. 63 00:08:42,879 --> 00:09:07,559 Y con la industria energética igual. En estos tres sectores lo que podemos utilizar esta aplicación, pues por ejemplo para crear inventarios sobre la maquinaria que hay, el personal, como ya he dicho agregar funcionalidades como incluir códigos QR, 64 00:09:07,559 --> 00:09:27,899 Puede incluir también, en caso de tener que gestionar el personal, se pueden agregar funcionales para gestionar los usuarios a través de las tarjetas de identificación de empresa que suelen dar y demás. 65 00:09:27,899 --> 00:09:30,899 Los pros y contras 66 00:09:30,899 --> 00:09:33,919 Pros, que es una interfaz sencilla e intuitiva 67 00:09:33,919 --> 00:09:37,019 Permite varias funcionalidades 68 00:09:37,019 --> 00:09:40,600 Permitiría el acceso a varios usuarios 69 00:09:40,600 --> 00:09:44,100 En caso de subir la aplicación a un servidor 70 00:09:44,100 --> 00:09:46,820 En mi caso no me ha sido posible subirla a un servidor 71 00:09:46,820 --> 00:09:48,840 Pero el objetivo sería ese 72 00:09:48,840 --> 00:09:53,720 Y para utilizarla simplemente hace falta un navegador 73 00:09:53,720 --> 00:09:59,340 con lo cual cualquier persona de la intranet de la empresa lo va a poder utilizar. 74 00:10:00,480 --> 00:10:05,639 Contras, es necesario instalar MySQL y Python y sus librerías. 75 00:10:06,679 --> 00:10:11,840 Sería necesario un servidor para utilizarlo a un nivel profesional. 76 00:10:13,159 --> 00:10:16,580 No permite hacer búsquedas demasiado complejas. 77 00:10:16,679 --> 00:10:20,080 Las búsquedas que hace son select simples de momento 78 00:10:20,080 --> 00:10:24,519 y tampoco permite gestionar usuarios ni permisos. 79 00:10:24,659 --> 00:10:27,559 En caso de que queramos gestionar los usuarios y los permisos, 80 00:10:27,700 --> 00:10:29,659 ya tendríamos que hacerlo a través de MySQL. 81 00:10:32,299 --> 00:10:37,080 Luego, como conclusión final, pues considero que esta es una web funcional 82 00:10:37,080 --> 00:10:42,980 puesto en práctica con esta aplicación los conocimientos adquiridos, 83 00:10:42,980 --> 00:10:47,779 sobre todo en la asignatura de base de datos y de lenguaje de marcas. 84 00:10:47,779 --> 00:10:52,179 y gracias al desarrollo de esta aplicación 85 00:10:52,179 --> 00:10:55,860 he adquirido nuevos conocimientos en JavaScript y Python 86 00:10:55,860 --> 00:10:58,259 que creo que me vendrán bien en el futuro. 87 00:11:00,320 --> 00:11:04,259 Y vamos a proceder a las pruebas de funcionamiento. 88 00:11:14,870 --> 00:11:17,309 Bueno, yo lo tengo en una máquina virtual. 89 00:11:20,169 --> 00:11:26,610 En primer lugar lo que hacemos es abrir el ejecutable 90 00:11:26,610 --> 00:11:38,269 Se nos abre la consola de Python y tenemos que copiar y pegar esta IP en el navegador. 91 00:11:39,610 --> 00:11:45,669 Bueno, como ya he dicho, la idea de esto en un entorno profesional sería tenerlo en el propio servidor de la empresa. 92 00:11:46,350 --> 00:11:55,389 En mi caso no he conseguido hacer algo parecido, así que tengo que utilizar la propia IP de desarrollo de Python. 93 00:11:55,389 --> 00:12:19,870 Lo primero que vemos aquí es un login. En mi caso intenté hacer que el login se hiciese a perfiles creados en los perfiles de administración de la propia base de datos MySQL. 94 00:12:19,870 --> 00:12:40,850 No me fue posible, así que tuve que buscar una pequeña solución que fue crear una nueva base de datos a la que le incluyo una tabla en donde puse tres tipos de usuarios. Esos tres tipos de usuarios son los que, con los que puedo loguearme. En este caso me voy a loguear con Técnico 1. 95 00:12:40,850 --> 00:13:01,850 El inconveniente de esto es que como no son usuarios reales como tal del sistema gestor de base de datos, no le he podido dar permisos para según qué cosas, para limitar los permisos a uno o concederle todos los permisos a otro. 96 00:13:01,850 --> 00:13:19,110 Pero bueno, la idea de esta solución es mostrar un poco cómo quedaría ante el usuario. Entonces entraríamos, nos salta un mensaje de bienvenida y aquí tendríamos un buscador. 97 00:13:19,110 --> 00:13:33,250 Aquí podemos buscar las bases de datos, una vez que las buscamos en el apartado de filtro nos aparecen las tablas que hay 98 00:13:33,250 --> 00:13:42,210 Y aquí al darle a la tabla nos hace un select de la tabla 99 00:13:42,210 --> 00:14:00,490 Si mantenemos el cursor encima del nombre del inventario, bueno, aquí he estado teniendo ciertos problemas con eso. 100 00:14:00,490 --> 00:14:18,429 porque cuando refrescaba la tabla, cuando hacía un select de la tabla, no sé por qué, 101 00:14:18,429 --> 00:14:23,769 pero no me permite hacer la descripción de las tablas. 102 00:14:24,590 --> 00:14:33,269 Si ponemos el cursor encima del nombre de la base de datos, 103 00:14:33,269 --> 00:14:40,250 se nos abre este desplegable y al darle podemos hacer un descript de la tabla en cuestión. 104 00:14:42,029 --> 00:14:46,289 Como vemos, en la web distinguimos varias partes, el buscador, 105 00:14:46,289 --> 00:14:52,610 tres botones para poder crear inventarios, eliminarlos y editarlos 106 00:14:52,610 --> 00:14:56,590 y un apartado de filtros que es donde nos aparecen las tablas 107 00:14:56,590 --> 00:14:59,629 para poder hacerle select. 108 00:15:00,870 --> 00:15:04,549 Luego en crear inventario podemos crear un inventario. 109 00:15:06,549 --> 00:15:11,450 Nos salta un mensaje y este inventario ya está creado correctamente. 110 00:15:11,629 --> 00:15:14,769 Podemos comprobarlo también en MySQL. 111 00:15:16,289 --> 00:15:55,139 que como vemos se la veamos y está creado correctamente, también lo podemos eliminar y si hacemos de nuevo ya ha dejado de aparecer, con lo cual estas dos funcionalidades van correctamente. 112 00:15:55,139 --> 00:16:15,460 Luego tenemos el botón de editar inventario. La idea sería en primer lugar crear el inventario, crear la base de datos y a continuación ya rellenarla. Aquí tenemos un apartado de crear tabla, en donde podemos crear una tabla cualquiera. 113 00:16:18,740 --> 00:16:24,600 Bueno, aquí primero tenemos que seleccionar el inventario en donde lo vamos a crear. 114 00:16:29,080 --> 00:16:48,480 Le damos un nombre de tabla y aquí al añadir las columnas podemos escoger si es una clave primaria, si es una clave foránea. 115 00:16:48,480 --> 00:17:06,619 En caso de que sea una clave foránea, nos pide asociarla a una de las tablas. Escogemos la tabla y la columna a la que la queremos asociar. 116 00:17:06,619 --> 00:17:13,339 le damos un nombre y podemos darle un tipo de dato. 117 00:17:15,079 --> 00:17:27,190 También nos permite seleccionar inventarios como puede ser este y alguna de sus tablas para poder renombrarla. 118 00:17:27,190 --> 00:18:11,880 Aquí podríamos poner el cols1, si guardamos los cambios y vamos a mysql, vemos, vale, 119 00:18:11,880 --> 00:18:22,480 le di a renombrar. Se lo ha renombrado y si lo vemos ahora, Firewalls lo ha renombrado 120 00:18:22,480 --> 00:18:31,640 correctamente. Y bueno, también nos permite agregar columnas, nos permite editar las columnas 121 00:18:31,640 --> 00:18:46,140 que ya tenemos. Podemos también quitar claves foráneas y claves primarias en caso de que 122 00:18:46,140 --> 00:18:57,289 lo tenga y también eliminar columna y eliminar las tablas. Y bueno, esas serían todas las 123 00:18:57,289 --> 00:19:03,390 funcionalidades de esta aplicación web. La parte de exportar a Excel al final no la he 124 00:19:03,390 --> 00:19:05,390 conseguido, no la he conseguido salvar 125 00:19:05,390 --> 00:19:07,589 y ya estaría 126 00:19:07,589 --> 00:19:08,769 todo. Bien 127 00:19:08,769 --> 00:19:11,309 llega la fase 128 00:19:11,309 --> 00:19:12,490 de preguntas de defensa 129 00:19:12,490 --> 00:19:14,750 entonces la primera pregunta es 130 00:19:14,750 --> 00:19:17,269 ¿Qué retos has encontrado al integrar la base 131 00:19:17,269 --> 00:19:19,130 de datos MySQL con 132 00:19:19,130 --> 00:19:20,930 Flash y cómo los has 133 00:19:20,930 --> 00:19:26,950 resuelto? Pues retos 134 00:19:26,950 --> 00:19:28,829 bastante, a ver 135 00:19:28,829 --> 00:19:30,609 al final 136 00:19:30,609 --> 00:19:32,769 lo he resuelto a base de 137 00:19:32,769 --> 00:19:34,529 buscar mucho 138 00:19:34,529 --> 00:19:36,410 por internet, a base de 139 00:19:36,410 --> 00:19:46,029 de estar viendo vídeos constantemente y sobre todo a base de pruebas de ensayo y error. 140 00:19:47,549 --> 00:19:53,910 Evidentemente cada vez que intentaba agregar algún tipo de funcionalidad me estaba dando errores al principio. 141 00:19:55,130 --> 00:20:03,849 Luego en muchas ocasiones he tenido que o bien quitar esa funcionalidad que le quería dar 142 00:20:03,849 --> 00:20:16,490 o bien hacer algo similar de otra manera, pero bueno, sobre todo a través de búsqueda de información en Internet. 143 00:20:19,309 --> 00:20:25,930 ¿Cómo garantizarías la seguridad en los datos que has almacenado en los RAC mediante tu aplicación? 144 00:20:26,869 --> 00:20:31,690 ¿Cómo garantizas la seguridad de los datos almacenados en la aplicación? 145 00:20:31,690 --> 00:20:36,079 Bueno, en primer lugar 146 00:20:36,079 --> 00:20:40,480 la idea sería un poco lo que comenté al principio 147 00:20:40,480 --> 00:20:44,720 poder loguearme a través de usuarios 148 00:20:44,720 --> 00:20:46,980 del sistema gestor de bases de datos 149 00:20:46,980 --> 00:20:50,119 que bueno, en mi caso no lo he conseguido 150 00:20:50,119 --> 00:20:53,319 estuve mirando información y vi que 151 00:20:53,319 --> 00:20:56,920 MySQL eso lo tiene capado 152 00:20:56,920 --> 00:21:00,220 para que desde aplicaciones externas 153 00:21:00,220 --> 00:21:12,660 no se puede acceder a los usuarios guardados en la carpeta MySQL, entonces la única que yo conozco sería esa. 154 00:21:12,660 --> 00:21:36,660 Luego, en caso de un entorno profesional, si guardamos la aplicación en un servidor de la compañía, imagino que ya tendrían sistemas de ciberseguridad para evitar corrupción de datos y robo de información. 155 00:21:36,660 --> 00:21:49,380 De qué manera podrías optimizar el rendimiento del sistema si el número de racks a gestionar aumenta significativamente? 156 00:21:49,380 --> 00:22:09,289 Bueno, podríamos, si el número de racks aumenta significativamente ya de por sí cuenta con un buscador para buscar el rack concreto 157 00:22:09,289 --> 00:22:19,329 aunque también le podríamos añadir menús desplegables que muestren todo el listado de racks que haya 158 00:22:19,329 --> 00:22:31,289 y así facilitar un poco al usuario el escoger el rack con el que quiere trabajar y que quiere visualizar. 159 00:22:31,730 --> 00:22:33,890 Creo que sería una de las opciones. 160 00:22:33,890 --> 00:22:43,930 ¿Me refiero a si es escalable la aplicación? 161 00:22:43,930 --> 00:22:53,269 Me refiero a si es escalable 162 00:22:53,269 --> 00:22:55,009 Si tuvieras que gestionar 163 00:22:55,009 --> 00:22:56,170 Muchas empresas 164 00:22:56,170 --> 00:22:57,809 Y muchos racks 165 00:22:57,809 --> 00:23:01,130 ¿Cómo escalarías la aplicación 166 00:23:01,130 --> 00:23:02,430 Para llevarla a un entorno 167 00:23:02,430 --> 00:23:03,470 Donde 168 00:23:03,470 --> 00:23:06,730 Se pudiera gestionar esto? 169 00:23:10,269 --> 00:23:11,430 Bueno, a ver 170 00:23:11,430 --> 00:23:13,170 Siempre se le pueden ir añadiendo 171 00:23:13,170 --> 00:23:14,609 Nuevas funcionalidades 172 00:23:14,609 --> 00:23:37,450 Además, siendo un sistema gestor de base de datos, creo que se podrían hacer agregados en el cual esta aplicación web gestionara, 173 00:23:37,450 --> 00:23:46,109 le diera perfiles independientes a los distintos clientes 174 00:23:46,109 --> 00:23:50,390 y en base al tipo de cliente que sea 175 00:23:50,390 --> 00:23:53,089 se le podrían dar unas funcionalidades u otras. 176 00:23:54,970 --> 00:23:58,930 ¿Y cuáles serían los pasos para desplegar esta aplicación 177 00:23:58,930 --> 00:24:01,109 en un entorno de producción real? 178 00:24:01,109 --> 00:24:24,990 Bueno, en primer lugar tendríamos que instalar un servicio MySQL en un servidor. Si la empresa cuenta con un servidor local, se instalaría ahí y también instalaríamos ahí Python. 179 00:24:24,990 --> 00:24:54,670 Sería similar a lo que he hecho yo aquí en esta máquina virtual. Una vez tengamos instalado tanto el servidor de Python como el sistema gestor de base de datos, podríamos subir la aplicación a la nube de la empresa para que todos los usuarios de la empresa tengan acceso a la aplicación. 180 00:24:54,990 --> 00:25:07,490 Entiendo. Bueno, pues con esto queda terminada la presentación.