Defensa_Proyecto_Iván_Hernandez_DAW
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
grabación. Vale, entonces, buenas tardes. Hoy día 9 de mayo a las 16 y 23 estamos convocados
00:00:00
a través de Jefatura del Departamento para la defensa del módulo profesional de proyecto
00:00:14
de ciclo formativo de grado superior de TAU, de desarrollo de aplicaciones web. Te informo
00:00:20
de que esta defensa está siendo grabada y que esta grabación se usará en el entorno
00:00:25
cerrado de EducaMadrid con fines educativos y que solo estará a disposición de los profesores
00:00:29
evaluadores en el aula virtual para llevar a cabo la evaluación y la calificación de
00:00:33
la defensa del proyecto. En el aula virtual de proyectos habéis sido informados de los
00:00:38
criterios y de la rúbrica de calificación y el orden de la presentación es el siguiente,
00:00:43
15 minutos máximo para defender el proyecto y 15 minutos máximo para las preguntas por
00:00:48
parte del tribunal. Dicho esto, tu tiempo de exposición comienza a partir de este momento.
00:00:54
Que te salga muy bien y tengas mucha suerte.
00:01:00
Nada pues
00:01:02
quería presentar un poco lo que es
00:01:05
la aplicación web que he hecho
00:01:08
que es
00:01:10
que es una aplicación online
00:01:10
que es completamente
00:01:14
pública, se puede acceder desde
00:01:16
desde el mismo momento que
00:01:18
presento estas diapositivas
00:01:19
y bueno
00:01:22
los puntos que voy a
00:01:24
comentar son un poco
00:01:25
la descripción del proyecto
00:01:27
el uso del framework
00:01:29
su implementación con NesJS, un poco el diseño que ha aplicado usando Framework Tailwind y luego
00:01:31
en la parte final un poco el tema de test, he querido incluirlo también un poco y bueno
00:01:41
conclusiones del desarrollo. La descripción del proyecto es bastante sencilla, yo quería hacer como
00:01:48
una aplicación así para subir PDFs, donde cualquier persona a través de un formulario
00:01:57
pudiera subir un documento, sobre todo un documento pequeño, y bueno, se podía subir
00:02:06
de distintas temáticas, pueden ser asignaturas, tecnologías, lo he hecho sobre todo con tecnologías,
00:02:12
es decir, puedes subir PDFs indicando que son de Javascript, de HTML, CSS, los puede
00:02:20
a consultar a cualquier alumno.
00:02:26
La idea es esa, que tú puedas tener como un tablón de documentos donde los usuarios
00:02:30
suban los documentos que ellos consideren oportuno y que los puedan buscar mediante
00:02:38
un pequeño buscador escribiendo un texto.
00:02:44
Para hacerlo barrajeé distintas posibilidades y entre ellas vi que la que más se adecuaba era RIAD, que es una librería concretamente de Javascript.
00:02:53
Me permitió un poco modularizar el desarrollo, hacer componentes, aunque en este proyecto no he hecho mucho, hice solamente el formulario.
00:03:09
Y luego también me estuve pegando bastante con la gestión de estados, con hooks. Es decir, había componentes estáticos y otros dinámicos y en los dinámicos normalmente hay que usar estados para controlar cualquier variación que hay en el componente.
00:03:18
ventajas de real sobre todo es que es bastante sencillo estuve trabajando con él unas semanas
00:03:35
previas a empezar un proyecto es bastante popular y bueno puedes hacer componentes reutilizables
00:03:46
no sé si voy a aprovechar y bueno comentar un poco la estructura de realidad he hecho algunos
00:03:53
componentes, como es la formulario, la cabecera. Normalmente tengo también aquí las páginas.
00:04:09
Bueno, si no, más adelante lo profundizaré un poco más en detalle. Pasamos luego a NesJS.
00:04:22
Lógicamente, cuando haces la... Podría haber optado por hacer una página single page,
00:04:32
que subiese todo directamente, pero quise probar con este framework que se adapta bastante bien a Riaz
00:04:38
y me permite sobre todo desorrendarizar al lado del servidor, generar sitios estáticos o mejorar la velocidad de carga.
00:04:46
Es como una capa por encima de Riaz que me permite trabajar eso con componentes tanto al lado del servidor como del cliente.
00:04:57
Y bueno, tuve que investigar bastante, ver un poco las ventajas que tenía. Vi que, por ejemplo, usaba API, bueno, mejor lo digo en español, rutas API, que me permitían crear endpoints, por ejemplo, para subir, eliminar o visualizar todos los ficheros PDF, tenía que hacer declaraciones de rutas API.
00:05:04
Sí, bueno, de todas formas, a ver, en SJS normalmente tiene una estructura basada en carpetas, es decir, había una estructura basada en SRC y otra en APP, es decir, las páginas normalmente tienen que tener una nomenclatura llamada page,
00:05:33
Por ejemplo, la página de ver.plf también es una carpeta y su nombre es paste, es decir, en SJS tiene una serie de, una estructura de carpetas bien definida que si no la sigues a la jatabla, pues obviamente no funciona tu aplicación.
00:06:02
De acuerdo, en tema de estilos tenía pensado usar Bootstrap, Bootstrap 5, pero al final para el tema de estilos decidí usar Tailwind.
00:06:20
El Tailwind normalmente, la ventaja que tiene es que lo que hace es revisar los ficheros HTML, los componentes y en base a las clases que has definido, solo quedarte con esas clases.
00:06:42
Es decir, si por ejemplo en el código, si entramos aquí en componentes y lo resueltamos en cabecera, todas estas clases vienen predefinidas por Tailwind.
00:06:58
Y él lo que hace es, cuando generas la versión final de la aplicación, normalmente lo que hace es filtrar y quedarse exclusivamente con las que se necesita, sin tener que usar todo el CSS, como suele hacerse con Boost.
00:07:13
Y bueno, es bastante más sencillo, te pegas menos porque las clases ya vienen predefinidas.
00:07:29
Por ejemplo, aquí vienen la propiedad y el valor que aplican y es más organizado.
00:07:38
Bueno, también puedes personalizarlo, hay bastantes temas con distintos colores, se puede hacer diseños más sencillos y más fáciles de escalar.
00:07:50
Tiene bastantes opciones.
00:07:59
Sí, el proyecto también es responsive, me pedió bastante para que fuera, se pudiera ver en distintos dispositivos, intenté hacer un diseño bastante sencillo, bastante simple, es verdad que a nivel visual no es muy, no tiene muchas cosas, pero bueno, es simplemente eso, es un tablón, todo blanco, un fondo negro, unos botones muy sencillos y nada, simplemente he hecho eso con Telweb.
00:08:01
De acuerdo. El tema de test estuve empezando con Jest, luego vi que realmente se puede usar esta tecnología más actual que es VITES y bueno, lo que hice fue pequeños test unitarios.
00:08:34
Es unitarios bastante sencillos. Al principio lo dejé bastante para el final, pero, por ejemplo, si los test unitarios en bits normalmente se declaran, hay un fichero con fracción donde lo que hace es buscar todos aquellos ficheros que terminen con esta nomenclatura, con un test, un stack, y los ejecuta.
00:08:58
Por ejemplo, si venimos aquí a algún componente, por ejemplo, tengo, bueno, la carpeta de utilidades, tengo este, ¿no? Sí, tengo un test sencillo, por ejemplo, hizo un método para formatear fechas a través de un plugin del Visual Code, el ejecuto, y más o menos los valida al momento.
00:09:23
Entonces, por ejemplo, esta que se encarga de comprobar que esta fecha se formatea bien.
00:09:51
Si yo, por ejemplo, aquí cambio por un 8, lo vuelvo a lanzar, veremos que el test unitario es para allá.
00:09:57
A ver, no he hecho muchas, pero he hecho básicas, es decir, algún método.
00:10:07
Sí, ya está. Esto es un plugin que me permite ejecutarlas unas a otras.
00:10:16
o prácticamente todas.
00:10:23
Tengo agrupadas aquí, quiero recordar, por el método.
00:10:26
El tema de las pruebas es importante porque te permite detectar errores
00:10:38
que normalmente solo se ven cuando estás en producción.
00:10:42
Me permite asegurar que todo funciona correctamente
00:10:47
y me da un poco de valor al código a nivel de calidad.
00:10:49
Implementación, bueno.
00:10:59
he hecho, bueno, he validado
00:10:59
componentes, es un poco
00:11:04
lo mismo, es decir, he intentado
00:11:06
prevenir errores
00:11:07
intentar probar un poco
00:11:09
bits como se pueden sacar
00:11:12
partido de
00:11:14
y bueno, eso es un poco
00:11:14
el resumen
00:11:17
vale, ahora
00:11:19
un poco las conclusiones
00:11:22
y ya un poco ya centrándome
00:11:23
en lo que es
00:11:26
un poco la aplicación
00:11:27
lo que intento es eso, mejorar la calidad
00:11:31
es decir, no intentar hacer un desarrollo
00:11:33
muy desperdicado
00:11:35
muy poco práctico
00:11:36
que cualquier persona que lo pueda
00:11:39
hacer un vistazo
00:11:41
lo pueda
00:11:43
usar o añadir
00:11:45
nuevas funcionalidades
00:11:47
intentar eso, hacer lo más óptimo posible
00:11:48
y hacer una experiencia
00:11:51
usuaria clara y que lo pueda
00:11:53
entender con la mayor facilidad posible y bueno para ello voy a hacer una pequeña prueba
00:11:55
esta es un poco la aplicación es decir tengo la página principal a última vez sí que es verdad
00:12:07
que he puesto un login bueno esto es muy sencilla tú vienes a esta página a subir apuntes puedes
00:12:13
Puedes poner un texto, a ver, lógicamente el usuario puede poner lo que sea, luego se
00:12:21
podría ir a controlar, luego puedes elegir una temática de asignatura o tecnología
00:12:29
y luego aquí puedes seleccionar un pdf, claro el tema es, le damos, se valida todos los
00:12:34
campos, los tres campos y le damos a subir apunte.
00:12:45
saldrá un mensaje de que se ha subido correctamente
00:12:49
y cuando vayamos de nuevo a la pantalla principal
00:12:54
le tendremos aquí para visualizar.
00:12:58
Podemos descargarlo.
00:13:05
Aquí sale una versión.
00:13:08
Es verdad que es un poco raro porque estoy usando la URL
00:13:11
que viene de la tecnología que estoy usando, Everfair Blow.
00:13:15
pero también hay la opción de verlo directamente desde el sitio web
00:13:19
que te abre directamente el PDF
00:13:27
aquí lo que hago es pasarle la URL
00:13:28
en esta página capturo esa URL
00:13:33
y lo transformo a base 64
00:13:36
que es la única forma
00:13:40
con la que puede pintarlo
00:13:41
Es decir, hay una librería llamada Riaz PDF que te permite, si haces la conversión a B64, de poder visualizarlo correctamente.
00:13:45
Luego, otra cosa que hice a última hora era incluir un login.
00:13:59
el login
00:14:03
y funciona bien
00:14:05
vale, ha funcionado
00:14:07
bien porque
00:14:10
puse una librería para
00:14:11
loguearme
00:14:15
usando la cuenta de GitHub
00:14:18
yo, por ejemplo
00:14:20
aquí tengo una cuenta de GitHub
00:14:22
y como
00:14:23
estoy logueado en la cuenta de GitHub
00:14:25
directamente me ha
00:14:27
logueado aquí
00:14:29
y luego hay cosas
00:14:30
que he querido meter ha sido un botón de eliminar
00:14:32
si tienes permisos, es decir, si tú te logreas
00:14:35
con GitHub, puedes eliminar algún contenido
00:14:38
que no sea adecuado y darle a eliminar
00:14:41
bueno, sale un pequeño
00:14:44
warning que te advierte de que lo va a eliminar
00:14:46
y te lo, a ver, lo he quitado
00:14:50
sí, creo que ya no está
00:14:54
el que usé de prueba ya no está
00:14:57
sí, es un poco
00:14:59
como un modo administrador
00:15:01
le doy a cerrar sesión
00:15:04
y directamente solo
00:15:07
aparecen dos botones
00:15:09
y no sé si luego aquí
00:15:11
esto es un poco
00:15:17
son las tricas, es decir, yo monté
00:15:19
sitio web
00:15:23
a través de Vercel
00:15:24
que permite subir aplicaciones
00:15:25
desarrolladas en SJS directamente
00:15:28
que crea un dominio, un dominio según el despliegue, que muestra algunos datos así de acceso de la ciudad al sitio.
00:15:30
Luego, varias cosas que son importantes es que aquí en la configuración del proyecto he tenido que declarar algunas variables.
00:15:45
Por ejemplo, esta es la variable de entorno que me permite subir PDFs, luego tengo aquí credenciales para poder loguearme como usuario de GitHub y luego para los PDFs tuve que habilitar esta opción que viene dentro de Berserk que me permite subir archivos.
00:15:56
También tuve que investigar bastante de cómo poder subir ficheros y bajarlos en su entorno.
00:16:28
Y bueno, aquí tengo un histórico de cuándo se subieron, el tamaño y el tipo de fichero.
00:16:39
Y luego, más o menos todo lo estuve trabajando en un repositorio de GitHub.
00:16:46
estuve subiendo aquí los commits
00:16:56
y cada vez que hace un commit
00:17:00
normalmente te hace un despliegue
00:17:02
aquí creo que
00:17:04
aquí están todos los despliegues
00:17:06
que el último creo que fue
00:17:09
la semana pasada
00:17:10
y bueno, también es cierto que si el código
00:17:12
no está del todo bien, lógicamente
00:17:15
no te deja
00:17:16
no te deja subir
00:17:17
bueno, eso es un poco
00:17:19
la idea, ¿verdad?
00:17:25
eso hacer un un poco un reto era no hacer una aplicación muy estática a ver cómo subir un
00:17:26
fichero la gente lo utilizará y lo podrá consultar y bueno eso es un un poco todo no sé si
00:17:34
más o menos
00:17:43
Sí, me ha parecido que lo has cronometrado
00:17:45
Claro, tengo la idea
00:17:47
Muy bien
00:17:49
Sí, sí, sí
00:17:52
Vale, yo te quería
00:17:53
hacer un par de preguntillas
00:17:55
de cosas que has comentado
00:17:58
el login este que has puesto
00:17:59
que me parecía una, que te lo comenté
00:18:01
porque me parecía una, si no llevaba mucho tiempo
00:18:03
una posible mejora
00:18:05
pero no he entendido muy bien lo que me has contado
00:18:07
o sea, el login es como
00:18:09
¿O para logarse un administrador que pueda borrar o no es un logro de si yo quiero subir, tengo que logarme?
00:18:11
Bueno, a ver cómo lo explico. Yo realmente lo único que... Yo lo que uso es esta librería en concreto y tiene varios proveedores.
00:18:19
Es decir, ella por detrás, tú le indicas, por ejemplo, le tienes que indicar el proveedor que vas a usar.
00:18:30
Tú puedes usar Google, GitHub, LinkedIn, hay un montón.
00:18:41
Entonces, luego lo único que sí que te pide como requisito es que esos proveedores estén habilitados.
00:18:46
Es decir, yo, por ejemplo, necesito una clave secreta y un identificador.
00:18:55
Entonces, más que desarrollo, lo que tuve que investigar era un poco, a ver,
00:19:00
tengo que investigar cómo habilitar
00:19:06
la autenticación de esos proveedores
00:19:11
por ejemplo en GitHub hay
00:19:13
una URL
00:19:14
de desarrolladores
00:19:16
y bueno
00:19:18
yo tengo, me creé dos aplicaciones
00:19:20
una local y otra en producción
00:19:23
y esto lo que hace
00:19:25
es, por ejemplo
00:19:27
a ver cómo lo explico
00:19:29
vamos a entrar en la aplicación de producción
00:19:30
y bueno
00:19:32
Me genera, como he comentado antes, una idea y una clave secreta. Yo le digo que he hecho una aplicación y que esa aplicación tiene esta URL, es esta de aquí. Cuando yo pulso en el botón de Login, esta de aquí, no sé cómo explicarlo, no me he metido muy bien en las tipas.
00:19:34
Hace una llamada, hace un callback, una llamada y me recupera, me da el visto bueno. Es decir, llama una API de autenticación y GitHub a través del IDE y la clave secreta le da el visto bueno y me devuelve la sesión con el usuario.
00:20:01
Esa es un poco la... No sé si lo he explicado bien.
00:20:22
Sí, sí, pero lo que me refería era, si yo ahora quiero subir un libro, yo no necesito logarme. Perdón, unos apuntes. Yo no necesito logarme.
00:20:28
Sí, eso podría controlarlo, cierto. Podría controlar, por ejemplo, que este botón se visualizara en caso de que la sesión estuviese. Eso lo puedo cambiar, pero eso.
00:20:36
No, no, no, no cambies nada.
00:20:50
Ah, bueno, no.
00:20:52
Está fenomenal, está fenomenal.
00:20:54
¿Qué te ha costado? Entiendo que has tenido que investigar muchas cosas porque la verdad es que has utilizado muchas tecnologías, entonces entiendo que tienes que investigar bastante.
00:20:56
Claro, yo cuando empecé el curso en septiembre me dio por investigar un poco por mi cuenta y bueno, yo tampoco tenía claro cómo hacerlo y bueno, al principio no sabía cómo subirlo, tenía otras opciones además de esta.
00:21:07
tenía pensado usar Amazon
00:21:28
había Amazon Web Service, otras
00:21:31
y lo que
00:21:33
me ha dado es eso, el hecho de subir
00:21:35
un simple ficherito
00:21:37
y ahí
00:21:39
perdona, ahí
00:21:41
tienes un tope
00:21:43
no he probado, cuando me lo
00:21:45
mandaste lo podía haber probado pero se me ha ocurrido después
00:21:47
y no lo he probado yo, ¿hay algún
00:21:49
tope de tamaño? me refiero
00:21:51
si yo intento subir un archivo
00:21:53
que no es PDF, entiendo que me da error
00:21:55
o que no me dejará, ¿no?
00:21:57
¿Eso lo controlas?
00:21:58
Sí, me pasó una cosa.
00:22:00
A ver, sí, creo que tengo...
00:22:02
Sí, tengo una variable.
00:22:04
Pero esta variable,
00:22:07
bueno, esta constante que uso,
00:22:09
lo controlo a través del propio formulario.
00:22:11
Ah, vale, vale.
00:22:14
O sea, lo tienes controlado,
00:22:15
que si es más grande que X tamaño,
00:22:16
no me deja subir.
00:22:18
A ver, es que me pasó una cosa curiosa
00:22:19
porque cuando empecé con ello,
00:22:21
hay un límite,
00:22:23
hay un límite establecido por la propia, bueno, me venía limitado a un mega.
00:22:25
Cuando intenté aumentar el límite hay que hacerlo a través de esta propia,
00:22:38
quería ponerla a 4 o 5 pero no pude, y bueno, también no pude, no lo subí mucho
00:22:45
porque el problema
00:22:54
de ver celeste es que
00:22:56
tiene un tope
00:22:58
entonces no sé por qué motivo lo capea
00:22:59
un mega, si me pensaba
00:23:02
de la cuota mensual que podía
00:23:04
bueno, que es una tontería porque no creo que supere
00:23:05
un giga
00:23:08
de capacidad
00:23:10
pero bueno, que en resumen
00:23:11
que viene limitado a un mega
00:23:13
pero que luego
00:23:15
tú puedes subirlo
00:23:17
Vale, pero tú tienes controlado
00:23:18
eso me refiero, tienes controlado
00:23:21
si yo intento subir algo que no sea
00:23:23
un PDF porque te quiero meter un virus
00:23:25
en tu plataforma
00:23:26
tú eso lo controlas
00:23:28
Sí, creo que también el campo
00:23:30
de subida de ficheros está establecido
00:23:32
para que eso sean PDFs
00:23:34
Vale, vale, es que
00:23:36
podría generar un problema gordo
00:23:38
que tú permitas cualquier tipo de archivo
00:23:40
porque te podrían meter ahí cualquier cosa
00:23:42
Creo
00:23:45
Claro, es que
00:23:46
y luego además la visualización del PDF no funcionaría
00:23:48
lógicamente, si tú subes
00:23:51
otra cosa que no sea un PDF
00:23:52
dejaría de funcionar
00:23:55
no sé dónde lo tengo
00:23:56
pero sé que
00:23:59
tengo una regla
00:24:01
a ver si no tardo mucho en encontrarlo
00:24:02
sí, yo creo que
00:24:06
si tenéis ahí puesto
00:24:12
validar, no sé qué, el nombre PDF
00:24:15
sí, validar fichero
00:24:17
comprobo que el tipo es PDF
00:24:19
que sea menos de
00:24:21
húmeda, si no, no te dejas
00:24:23
oírlo
00:24:26
Vale, sí que le veo, la verdad es que
00:24:27
aunque como tú dices es un entorno bastante
00:24:30
sencillo, muchas veces las cosas
00:24:32
sencillas son las más intuitivas
00:24:34
porque cuando ponemos un mogollón de
00:24:36
botones, de enlaces, no sé qué
00:24:38
es como, espérate, ahora dónde tengo que dar
00:24:39
o sea que tampoco me parece una mala
00:24:42
idea que sea sencillo
00:24:44
muchas veces menos o más
00:24:46
me parece fenomenal
00:24:48
también que hayas indagado
00:24:50
y utilizado tantas, incluso
00:24:52
como cuentas en la
00:24:54
memoria que hayas comparado
00:24:56
es bueno, voy a indagar por aquí
00:24:58
si esto no me convence, voy a ver
00:25:00
opciones, porque cuando explicas
00:25:02
sí que explicas muy bien
00:25:04
por qué has inventado una cosa y la otra
00:25:05
Sí, yo
00:25:07
lo que comentaba, yo
00:25:09
parecía una cosa sencilla de subir ficheritos
00:25:11
y vi con el tiempo que
00:25:14
te empiezas a pegar
00:25:16
y te empiezas a pegar
00:25:17
y es una locura
00:25:20
Claro, sí que es verdad que, aun siendo muy sencilla, por ejemplo, posibles mejoras que se me ocurrían, tipo lo del login, que parece igual una chorrada, dices, jolín, para añadir una tontería que es la funcionalidad del login, se me ocurrió también, y ya no te lo comenté porque digo, claro, es que si no me acuerdo, son comentarios de posibles mejoras de, pues, como cuando tú vas a algún sitio y valoras un restaurante que se pudiera valorar, a lo mejor que se pudieran poner estrellitas,
00:25:22
que la gente dijera tutorial de javascript o éste tiene ocho estrellas y éste tiene dos sabes que
00:25:49
queda está súper completo con el tiempo que tenéis la verdad es que está súper completo pero que lo
00:25:56
que además es un proyecto que se puede que se pueden hacer muchas cosillas sobre él es como
00:26:02
esto es un saco sin fondo todo lo que le quieras añadir muchas cosas me cuenta ayer bueno antes
00:26:08
ayer que pudiera ver tengo un buscador por nombre pero también podía haber hecho tecnologías hacer
00:26:17
como una búsqueda por categorías y algo así como categorías pero bueno está muy bien es que está
00:26:24
bien eso significa decir cuando ves un proyecto y veis posibles mejoras lo que ves es un proyecto
00:26:34
ampliable que no es lo mismo que ver fallos es que esto no funciona o es que esto así no puede ser
00:26:41
Es diferente, con lo cual es fenomenal.
00:26:47
Creo que no era cuestión de preguntarte cosas, sino un poco tu impresión de si, que entiendo que la respuesta es que sí, que si has aprendido mucho en el proyecto.
00:26:50
Sí, la verdad es que yo te digo que sí, claro.
00:26:59
Claro, es fenomenal, porque al final peleándote con las cosas es como aprendes.
00:27:02
Y nada, las dudas que tenía era eso, si controlabas lo del tamaño y las posibles opciones, pero yo te digo que con el tiempo que tenéis para hacerlo me parece que está bastante bien.
00:27:06
Así que por mi parte voy a finalizar la grabación un momentito y te comento.
00:27:19
- Idioma/s:
- Etiquetas:
- Gestión de proyectos
- Autor/es:
- Patricia Santos Gonzalez
- Subido por:
- Patricia S.
- Licencia:
- Reconocimiento - No comercial - Sin obra derivada
- Visualizaciones:
- 2
- Fecha:
- 9 de mayo de 2025 - 16:59
- Visibilidad:
- Clave
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 27′ 29″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 250.76 MBytes