Saltar navegación

20251009 Logs_1 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 10 de octubre de 2025 por Raquel G.

26 visualizaciones

Descargar la transcripción

Y no perdemos el hilo 00:00:00
Con esto 00:00:02
Todos o casi todos 00:00:03
Sabéis lo que es 00:00:07
Un archivo 00:00:09
De log 00:00:10
Todos o casi todos 00:00:13
¿Vale? 00:00:16
Que son los logs de una aplicación 00:00:18
Vale 00:00:20
Cuando desarrollamos 00:00:24
Una aplicación 00:00:26
Hay un montón de fases por las que pasamos 00:00:27
lógicamente 00:00:29
la fase de análisis 00:00:31
la fase de diseño 00:00:34
la fase de codificación 00:00:36
pruebas, mantenimiento 00:00:37
este es el ciclo 00:00:39
el modelo de vida clásico 00:00:41
del desarrollo de software, ¿verdad? 00:00:43
lo que viste el año pasado en entorno 00:00:46
lo que pasa es que luego eso 00:00:47
durante el mantenimiento, a su vez 00:00:49
si hay que incorporar cosas 00:00:52
tenemos que entrar de nuevo a lo mejor en un análisis 00:00:53
y un diseño nuevo, por eso 00:00:55
incorporamos el modelo en espiral 00:00:57
o incorporables en entornos de desarrollo, que es estar haciendo el ciclo vida del software, 00:00:59
análisis de desarrollo en espiral durante toda la vida de la aplicación. 00:01:04
Bueno, ¿qué es lo que quiero decir con esto? 00:01:08
Que independientemente de la fase de desarrollo que estemos de nuestra aplicación, 00:01:10
e incluso si estamos ya en la fase de explotación de esa aplicación, 00:01:16
necesitamos tener un registro lo más detallado posible de qué está pasando en la aplicación. 00:01:21
Bien, cuestiones de desarrollo, de la fase de compilación, si cuidado con esto que estoy entrando aquí puede fallar, o cuestiones relacionadas con la fase de explotación, como se ha logado Pepito, se ha logado Juanito, se ha logado no sé qué. 00:01:27
entonces, esos 00:01:42
nosotros 00:01:44
esos pequeños apuntes 00:01:45
los hemos hecho el año pasado con un system.out.println 00:01:47
claro, pero lógicamente 00:01:50
ya sabemos que esa no es la manera 00:01:51
porque no tenemos a un tío delante de la consola 00:01:53
todo el rato cruzado de brazos para ver los avisos 00:01:55
se lo go Juanito, se lo go Pepito 00:01:58
cuidado que entras en un método extraño 00:02:00
aquí te puede ser un error 00:02:03
pues no lo hacemos así 00:02:04
¿vale? más que nada porque 00:02:06
en la fase de explotación de la aplicación 00:02:08
luego llegarán un montón de comunicaciones de fallos 00:02:12
la aplicación 00:02:14
me ha fallado, ¿qué pasa? 00:02:16
pues entonces con los 00:02:19
detalles que te da la persona a la que 00:02:20
le ha fallado no te vas a enterar de nada porque te va a decir 00:02:22
nada que se me ha puesto la pantalla verde 00:02:24
pues se te ha puesto la pantalla verde 00:02:26
a saber por qué será eso, entonces tienes que tener 00:02:28
algún registro que te dé más 00:02:30
detalles de eso 00:02:32
si esos detalles los tenías en la consola 00:02:33
no los vas a poder recuperar de nuevo 00:02:36
entonces alguna herramienta 00:02:38
tendría que haber, algo tendremos 00:02:40
que incorporar en nuestra aplicación 00:02:42
para ir pudiendo 00:02:44
enviar a un fichero y pudiendo enviar 00:02:46
a un fichero los detalles cuando queramos hacerlo 00:02:48
acabas de entrar 00:02:50
en este método, has salido de este método 00:02:52
con este código de error, acabas 00:02:54
de hacer un acceso a base de datos para un login 00:02:56
pues todos esos mensajitos queremos que se vean 00:02:58
en un fichero 00:03:00
y entonces el fichero se queda ahí guardado 00:03:01
a ser posible esos mensajitos 00:03:04
que vayan con la hora, con el día 00:03:06
en el que ocurrió, con un formato 00:03:08
claro y así cuando nos llega 00:03:10
un aviso de 00:03:12
error en la fase de explotación por ejemplo 00:03:13
buscamos rápidamente el día a la hora 00:03:16
y ahí pondrá 00:03:18
método tal devolvió cero 00:03:19
por fallo en el string 00:03:22
no se cuantos, entonces dices 00:03:24
anda, lo de la pantalla verde 00:03:26
viene porque el método devolvió un string null 00:03:28
pues no me di cuenta 00:03:30
de que si eso ocurre no se cuantos 00:03:32
entonces tú ya tiras de ahí y lo arreglas 00:03:34
vale, eso en la fase de explotación 00:03:36
en la fase de desarrollo igual, cuando tú haces las pruebas 00:03:38
normalmente las haces 00:03:40
con una herramienta de pruebas, Java 00:03:42
Unit o la que sea 00:03:44
¿vale? pero si tú 00:03:45
has ido mandando mensajes muy detallados 00:03:48
de todo lo que has hecho en tu aplicación 00:03:50
y en la fase de pruebas algo te ha fallado 00:03:51
pues puedes ir a esos archivos 00:03:54
para ver, oye, esto no ha funcionado 00:03:56
como yo quería, ha hecho otra 00:03:58
cosa, ¿qué ha pasado? abres el archivo y como 00:04:00
ahí está todo detalladito de lo que ha ido haciendo el programa 00:04:02
anda, ha hecho esto que yo no contaba con que lo iba 00:04:04
hacer en este momento? Pues te voy a cambiar 00:04:06
el diseño. Entonces, en cualquiera de las 00:04:08
fases del desarrollo de la aplicación estaría bien 00:04:10
una herramienta que fuera enviando 00:04:12
a un fichero cada dos por 00:04:14
tres lo que nosotros queremos que mande 00:04:16
y nos interese, claro. 00:04:18
¿Vale? Eso sería 00:04:20
una herramienta de logs, de creación de logs. 00:04:22
Se crean los archivos de logs que están ahí en una carpetita 00:04:24
de servidor, los miramos cuando haga falta 00:04:26
y ya está. 00:04:28
Vale. 00:04:30
Java pues tradicionalmente 00:04:31
Tiene una herramienta de logs 00:04:35
Que está en Java útil 00:04:37
Pero bueno, aunque se puede usar 00:04:38
Porque es una herramienta para crear archivos fácilmente 00:04:40
La que más se ha usado 00:04:43
En todo el ecosistema 00:04:45
Este de Java 00:04:48
La que más se ha usado 00:04:48
Es log4j 00:04:49
Cuando digo herramienta 00:04:52
En Java 00:04:58
Siempre me refiero a lo mismo 00:04:59
Me refiero a un conjunto de clases que hacen cosas 00:05:01
Un conjunto de clases que hacen cosas 00:05:03
O lo que es lo mismo, un jar o varios 00:05:05
No, a eso me refiero cuando digo una herramienta 00:05:07
A un conjunto de clases que hacen cosas 00:05:10
O lo que es lo mismo, un jar o varios 00:05:12
Ahí están las clases 00:05:14
Esas clases ya tienen unos métodos 00:05:17
A los que yo fácilmente puedo llamar 00:05:21
Para hacer esas cosas que me interesan 00:05:22
Que en este caso será 00:05:24
Manda al fichero, manda al fichero, manda al fichero 00:05:25
Vale, los 4J 00:05:28
la versión actual es esta, la que se lleva usando ya a tiempo, la versión 2, que en realidad, ¿qué cambia respecto a la original? 00:05:30
No cambia muchas cosas. La original se configuraba sobre todo con un fichero de properties, y esta se solía configurar con un fichero de properties, 00:05:45
os digo estas cosas 00:06:02
de nuevo para que estéis un poco 00:06:05
en el contexto de las cosas 00:06:08
que no se puede encontrar por ahí 00:06:10
y esta ya cuando llegó 00:06:11
pues aunque se puede 00:06:13
configurar con archivo de properties 00:06:16
también, esencialmente se configura 00:06:18
con un archivo .xml 00:06:20
¿vale? cuando se implantó 00:06:22
sobre todo pues el uso 00:06:24
habitual de esta librería 00:06:26
de estos hash es configurarla 00:06:28
con un archivo .xml 00:06:31
¿Pero qué ocurre? 00:06:32
Ocurre que todo 00:06:36
Muy a nuestro pesar 00:06:37
Porque esto es un rollo 00:06:39
Tener que estar todo el rato 00:06:41
Aprendiendo cosas nuevas 00:06:42
Muy a nuestro pesar 00:06:45
Pues lógicamente a lo largo de toda la vida 00:06:46
En los 4J2 00:06:48
Que es la que sigue usándose 00:06:49
Pues llegó el desarrollo cloud 00:06:51
La nube y todo eso 00:06:55
Entonces eso que permite 00:06:57
descentralizar muchas cosas 00:06:59
entre ellas las configuraciones 00:07:02
de toda la vida 00:07:04
las aplicaciones 00:07:06
pues tenían todos sus ficheros de configuración 00:07:07
y todas sus cositas dentro 00:07:10
y ya está 00:07:11
y en muchísimos entornos así sigue siendo 00:07:12
¿vale? 00:07:16
la mayoría de las aplicaciones que tú te encontraras 00:07:17
en el club internacional 00:07:20
libro o lo que sea, pues son aplicaciones que tienen 00:07:22
todo dentro 00:07:24
sus archivos de configuración y lo que sea 00:07:24
pero claro, ahora con esto 00:07:28
de desplegar en la nube y todo eso 00:07:30
pues hombre, vamos a aprovechar el almacenamiento 00:07:32
descentralizado para no tenerlo todo juntito 00:07:34
en la aplicación 00:07:36
¿vale? entonces 00:07:37
un uso típico es 00:07:39
pues yo tengo mi aplicación 00:07:44
la voy a desplegar en un servicio 00:07:46
en la nube, la puedo desplegar bien 00:07:50
me pago yo un servicio en la nube 00:07:52
en el cual tengo yo una máquina virtual que es un servidor 00:07:56
que sería como si fuera mi servidor, el mismo 00:07:59
y despliego mi aplicación tranquilamente 00:08:01
pues no ha cambiado nada, en esa situación no ha cambiado nada 00:08:04
mi aplicación es la misma, lo que pasa es que en lugar de desplegarla 00:08:07
en el servidor físico de mi empresa que está ahí encerrado en cuatro llaves 00:08:10
y que solo toca un técnico 00:08:14
en lugar de dárselo al técnico para que lo despliegue en su servidor 00:08:16
que está ahí encerrado en cuatro llaves, o muchos 00:08:18
porque se supone que están balanceados, tener carga balanceada 00:08:21
para que si uno falla, tirar del otro 00:08:24
pues en lugar de eso 00:08:26
me ahorro el mantenimiento de los servidores 00:08:27
me ahorro tener esa habitación sobre cuatro 00:08:30
llaves, me lo ahorro 00:08:32
desplegándolo en un servicio en la nube 00:08:33
en el cual lo que tengo es un servidor 00:08:36
virtual ahí, no pasa nada 00:08:37
yo lo despliego ahí y se acabó, ese sería un primer 00:08:40
paso 00:08:42
otro paso es, vamos a aligerar esto un poquito 00:08:42
entonces llega 00:08:46
Docker, pues que es una herramienta 00:08:48
que pum, es como una 00:08:50
cajita, un sobrecito 00:08:52
donde tú metes tu aplicación 00:08:53
con configuraciones 00:08:56
con historias, con cosas 00:08:58
y te lo empaqueta en un formato hiper mega ligero 00:08:59
y estupendo y magnífico 00:09:02
¿vale? 00:09:04
eso sería esa aplicación 00:09:06
empaquetada en ese formato 00:09:08
de Docker 00:09:10
pues es lo que se llama un contenedor 00:09:10
que tiene la aplicación, súper mona, súper ligerita 00:09:13
y claro, podrías también 00:09:16
medir un sistema operativo 00:09:19
que sepa trabajar con Docker, pues como 00:09:21
Kubernetes, por ejemplo, pues te lo 00:09:24
pones en tu equipo y ahí te pones tú 00:09:26
tu, despliegas tu contenedor Docker 00:09:28
y tienes tu aplicación, pero hombre 00:09:30
no es la idea hacer 00:09:32
todo eso para volver a usar mi servidor otra vez 00:09:34
entonces hay servicios 00:09:36
en la nube que tienen 00:09:38
aplicaciones 00:09:40
que manejan Docker 00:09:42
entre las, esta es 00:09:43
una de ellas, la más famosa 00:09:46
quizás, supongo 00:09:48
Y esta es una especie de sistema operativo 00:09:49
Que es capaz de manejar aplicaciones 00:09:53
Que en lugar de estar en el hard de toda la vida 00:09:55
Están en un contenedor docker 00:09:58
Pues el Kubernetes es este 00:09:59
Pues maneja lo 00:10:01
Vale, entonces esta sería una arquitectura 00:10:03
Relativamente 00:10:07
Habitual 00:10:08
Para desplegar tu aplicación en la nube 00:10:13
Sin complicarte la vida 00:10:15
¿Vale? Sin complicártela 00:10:17
No tienes que pagar servidores tuyos 00:10:18
ni nada. Esto, pues el que no lo conozca, que muchos de vosotros no lo conocéis, si 00:10:21
tenéis la oportunidad de hacer un curso, no es una cosa muy complicada. Yo no conozco 00:10:30
los detalles en profundidad, solo conozco de qué va por encima. Pero instalarse Docker 00:10:35
es sencillo y una vez que tienes la aplicación, hacer un contenedor que tenga tu aplicación 00:10:39
es fácil y luego 00:10:45
ponerla en marcha 00:10:47
bien en Docker o bien en 00:10:48
Kubernetes que te maneja 00:10:51
muchas a la vez, pues 00:10:53
tampoco parece ser muy complicado 00:10:54
entonces si 00:10:56
vais votos en paralelo, haciendo cursillos 00:10:59
mirando cosas sobre esto, fenomenal 00:11:01
porque 00:11:03
pueden contar con que lo sepáis 00:11:03
cualquier empresa 00:11:07
entonces es lo típico, que es una cosa 00:11:08
relativamente concreta, es me hago un curso de esto 00:11:10
y más o menos sé de esto 00:11:13
y ya está, y ya si alguien me dice 00:11:14
pues sabes usar esto 00:11:16
pues sí, sí usarlo, y te ha llevado 00:11:18
a aprender a usarlo, ¿cuánto? pues 10 horas 00:11:20
12 horas, entonces 00:11:22
compensa, ¿vale? otra cosita 00:11:24
más que podéis poner, bueno, he dicho 10 horas 00:11:26
y 12 horas porque no lo sé, a lo mejor alguien se ha 00:11:28
puesto y es mucho más complicado de lo que yo creo 00:11:30
no sé, ¿tú lo has manejado? 00:11:32
lo he manejado, pero 00:11:34
un poco, pero cuando empiezo 00:11:35
por el tema de los manifiestos 00:11:38
se puede volver muy, claro, ser un experto 00:11:39
pero a lo que vamos es que la idea es 00:11:42
que si vosotros os presentáis a una empresa 00:11:44
os presentáis diciendo, sí, lo conozco 00:11:46
más o menos, luego si tienes que trabajar 00:11:49
con ello, claro, ya es cuando te toca a lo mejor 00:11:50
encerrarte, pum, pum, pum, hasta 00:11:52
pero es verdad que 00:11:54
el manejo más o menos, supongo 00:11:56
que bueno, que como 00:11:58
para cubrir expediente 00:12:00
y arrancar, igual son 00:12:02
no sé, unas cuantas horas 00:12:04
pero que os vayáis metiendo 00:12:05
en general en estas cosas que van surgiendo 00:12:08
para no llegar a la empresa y decir 00:12:10
Uy, porque a veces lo de echar fuera o quedarse depende de una palabra, de que tú digas sí o que digas no. ¿Qué sabes de PHP? Tú puedes decir, ni idea, ya estás fuera. O puedes decir, sí, lo conozco, no he trabajado últimamente, pero sí en ocasiones he hecho cosas con PHP y podría volver a hacerlas. 00:12:12
o sea, eso es casi lo mismo que decir 00:12:39
ni idea, casi lo mismo 00:12:42
pero tú dices eso otro y de esas palabras 00:12:44
depende que ya está, que pases al siguiente 00:12:46
paso de la entrevista 00:12:48
entonces, y luego ya te vas a tu casa 00:12:49
y dices, a ver de qué va esto 00:12:52
y como sois muy listos 00:12:54
pues no tendréis problemas 00:12:56
yo llegando a casa 00:12:57
es que eso queda muy 00:12:58
de ir de sobrado 00:13:05
no lo sé, también 00:13:07
en gran parte, muchas de las cosas que yo os digo 00:13:10
lógicamente son de mi opinión 00:13:12
y mi visión, pero a mí me sonaría 00:13:14
no lo sé, pero 00:13:16
no sé, me suena 00:13:18
muy sobrado 00:13:20
también depende 00:13:21
lo que pasa es que claro, no es lo mismo que te pregunte 00:13:24
por lenguaje de programación, que puedes no tener 00:13:26
ni idea, pero tú sabes 00:13:28
que como sabes programar, te lo vas a estudiar rápido 00:13:30
entonces te puedes permitir decir 00:13:32
no he trabajado últimamente con ello, pero bueno 00:13:34
que si te dicen algo que no tienes ni idea 00:13:36
entonces, si tú ahí dices 00:13:38
bueno, no lo he usado 00:13:41
recientemente, pero en su momento si hice algo 00:13:42
cuidado porque te dicen, pum 00:13:44
te hacen otra pregunta más y tú no tienes ni idea 00:13:46
y ahí la has cagado 00:13:49
entonces, es una especie de equilibrio 00:13:49
entre no decir 00:13:53
no tengo ni idea 00:13:55
a las claras, pero hombre 00:13:56
tampoco mostrar que sí, sí 00:13:58
que va sobrado, no vaya a ser que quieran indagar más 00:14:00
pues depende, pero 00:14:03
Pero lo que yo quería decir ahora es que nunca digáis ni idea y pongáis cara de que me estás hablando, aunque sea la realidad, aunque sea la realidad, porque es que de eso puede depender que tú, si para echarte ya tendrán tiempo, si luego resulta que les has mentido y no eres un manta, no van a tener un problema de echarte, para echarte ya tendrán tiempo. 00:14:06
ni remordimiento 00:14:25
ni nada, igual problema con 00:14:28
con la administración un poco más 00:14:30
pero nada, bueno 00:14:32
y todo este rollo 00:14:33
¿a qué venía todo este rollo? que siempre 00:14:35
cuento unos rollos 00:14:38
que no veas, vale, pues 00:14:40
venía a que los 4J2 00:14:41
cuando ya se implantó 00:14:43
pasamos de mayoritariamente 00:14:46
usar ficheros de properties 00:14:48
XML que van dentro de la aplicación 00:14:49
¿vale? 00:14:51
los XML están muy bien y son muy chulos 00:14:52
porque es que son muy claros 00:14:55
los miramos con los ojos y es que lo entendemos 00:14:57
tenemos unos nodos ahí estupendos 00:14:59
pero cuando ya 00:15:00
pasamos a arquitecturas en las cuales 00:15:02
nos podemos permitir descentralizar 00:15:05
la configuración 00:15:08
como le pasa 00:15:10
a Kubernetes 00:15:12
que puede coger los ficheros de configuración 00:15:12
de fuera 00:15:15
no hace falta que estén en la propia aplicación 00:15:16
como le pasa a Spring Cloud 00:15:19
que puede coger los ficheros de configuración de fuera 00:15:21
no hace falta tener la aplicación 00:15:24
pues entonces, que una aplicación 00:15:25
coja un fichero de fuera 00:15:28
significa que de alguna manera tiene que parsearlo 00:15:29
tiene que comunicarse con él 00:15:31
entonces 00:15:33
para parsear entre máquinas 00:15:34
para comunicarse cosas 00:15:38
entre máquinas, no hay nada 00:15:39
mejor, bueno si hay una cosa un poco 00:15:41
mejor, dicen, que el JSON 00:15:43
porque el JSON 00:15:45
es más feo 00:15:47
a la vista 00:15:50
Menos claro 00:15:50
Tampoco tanto 00:15:52
Es un objeto 00:15:55
Sí, pero 00:15:56
Bueno, pero tú ves clave, valor, no lo sé 00:15:58
Está en gustos, eso dicen 00:16:00
Que el XML 00:16:02
Un lenguaje de marcas 00:16:03
Orientado a dejar un poquito más claro 00:16:06
La meta información 00:16:08
Y de hecho, XML admite comentarios 00:16:09
Y JSON ni siquiera 00:16:13
Admite comentarios 00:16:14
Porque JSON está orientado a que hablen máquinas 00:16:16
Entre sí 00:16:19
El XML sí que admite un humano que lo mire. 00:16:19
JSON está orientado a ser un lenguaje que una máquina, una aplicación, 00:16:26
lo saque de otra y parse lo que tiene dentro a objetos o a lo que haga falta. 00:16:30
Entonces, para parsear lo que tiene dentro JSON a objetos o a lo que haga falta, 00:16:35
eso es mucho más rápido que parsear un XML. 00:16:38
Parsear un XML, ya solo quitar comentarios, ya es algo. 00:16:41
Que en JSON no tienes ni que hacer porque no hay. 00:16:45
Entonces, en contextos en los cuales 00:16:46
Hemos sacado los ficheros de configuración fuera 00:16:49
Como en el 00:16:51
Kubernetes 00:16:53
Pues 00:16:54
Conviene usar 00:16:55
Configuración 00:16:59
Para los 4J2 en JSON 00:17:01
Por eso también se puede 00:17:03
Configurar en los 4J2 en JSON 00:17:05
Y ya el colmo 00:17:07
De archivos feos, o eso dicen 00:17:09
Son los archivos 00:17:11
Estos de aquí 00:17:14
estos archivos 00:17:15
lo mismo, son archivos de texto 00:17:19
para configurar parámetros 00:17:21
y todavía 00:17:22
se parsean de forma más eficiente 00:17:25
que los JSON 00:17:27
¿y por qué dicen que son feos? 00:17:28
no lo sé, ahora podemos saber algunos 00:17:30
son una cosa así, no lo sé 00:17:32
¿vale? 00:17:34
que no son muy claros 00:17:39
que no son muy legibles a la vista 00:17:40
no son legibles, pero claro 00:17:43
para que una máquina Parsec, para la máquina 00:17:44
que sea elegible no es lo de menos 00:17:46
lo que le importa es que sea capaz de sacar rápidamente 00:17:48
la clave y el valor, la clave y el valor 00:17:51
para trasladarlo a un objeto 00:17:52
o lo que haga falta trasladarlo 00:17:54
bueno pues entonces 00:17:56
los 4J2 00:17:58
se configura 00:17:59
sobre todo en los contextos 00:18:01
en los cuales las aplicaciones están en las empresas 00:18:04
instaladas con XML 00:18:06
es el archivo típico que vamos a ver ahora 00:18:07
pero también admite esta configuración 00:18:09
que también vamos a ver 00:18:12
un archivo JSON de configuración a ver cómo 00:18:14
funciona. Y esta otra, 00:18:16
pero esta es más rara y esta está más 00:18:18
restringida a 00:18:20
cuando tienes el 00:18:21
log4j2 en un entorno 00:18:24
descentralizado, que el archivo 00:18:25
lo saca al sistema operativo después 00:18:28
de una URL. 00:18:29
¿Vale? 00:18:32
Bueno, pues 00:18:34
otra cosa más. 00:18:35
Conclusión más importante de esto, 00:18:40
aparte de saber lo que es los logs, que eso ya lo 00:18:42
sabíais, pero al que no lo supiera, pues 00:18:44
O sea, lo sabe más. 00:18:46
La segunda conclusión es 00:18:48
mentiras a medias en las entrevistas. 00:18:51
Y la tercera, 00:18:55
todo lo que podáis ir estudiando en paralelo, 00:18:56
hacedlo. 00:19:00
Como por ejemplo esto. 00:19:01
Diréis, pero ya tengo mucho que estudiar 00:19:05
como para decirme a estudiar en paralelo. 00:19:07
Pero así es ser joven. 00:19:08
Vale. 00:19:14
Bueno, no sé si alguien ha algún módulo que va a meterlo. 00:19:17
No hay ningún módulo aquí que sea de computación en la nube. 00:19:22
Entonces, aquí no tenemos... 00:19:25
Si hubiera alguna optativa de computación en la nube, 00:19:30
pues se podría meter ahí, pero aquí no. 00:19:32
Aquí tenéis videojuegos. 00:19:34
Examen, por cierto. 00:19:37
¿Ah, sí? 00:19:39
Hoy examen de videojuegos. 00:19:40
Sí, se ha retirado así como... 00:19:42
Ni siquiera lo ha visto en la clase anterior. 00:19:44
Pues lo habéis repasado 00:19:46
Pues ya está 00:19:54
Pero a ver 00:19:56
¿Cómo? Puede ser esta, ¿vale? 00:19:57
Entonces 00:20:05
Esto es simplemente 00:20:06
Una herramienta que te permite automatizar 00:20:10
algunas de las tareas 00:20:13
que se realizan cuando tú desarrollas 00:20:16
una aplicación. La compilación 00:20:17
por supuesto, aunque la Eclipse eso ya te lo tiene 00:20:20
automatizado. Las pruebas, 00:20:21
la gestión de las 00:20:25
famosas dependencias, 00:20:26
te permite automatizar 00:20:28
toda esa serie de tareas. 00:20:29
En nuestro caso 00:20:33
para lo que nos va a ser útil 00:20:34
es para la gestión de las cosas 00:20:35
de las que yo dependo, de las clases que 00:20:38
vamos a usar que no están en la distribución 00:20:40
estándar de Java. 00:20:42
gracias a Maven 00:20:43
ese problema va a ser sencillísimo 00:20:45
no van a tener que andar persiguiendo 00:20:47
por internet para descargar 00:20:49
hay 00:20:50
estas dos 00:20:52
que yo sepa 00:20:55
son las dos herramientas más comunes 00:20:57
Gradle es más reciente, Maven es la de siempre 00:20:58
la de toda la vida y la que está 00:21:01
instalada en la mayoría de las aplicaciones Java 00:21:03
y Gradle 00:21:05
pues este tiene 00:21:07
Maven se configura también con XML 00:21:08
Gradle tiene un lenguaje propio 00:21:10
para sus archivos de configuración 00:21:13
y Gradle 00:21:14
se usa como ya habréis comprobado 00:21:15
en Android Studio 00:21:19
los proyectos de Android Studio 00:21:20
habéis hecho algún proyecto 00:21:21
con Android Studio 00:21:24
y lo imagino 00:21:25
que será un proyecto 00:21:29
de esto 00:21:30
claro, pues tiene un fichero 00:21:31
de configuración con un lenguaje 00:21:34
propio suyo más particular que el de 00:21:36
9 que es un XML 00:21:38
en realidad vienen a ser 00:21:39
Son para lo mismo 00:21:42
Las dos, son para lo mismo 00:21:44
¿Vale? Nosotros vamos a usar Maven 00:21:46
Porque es lo más habitual en Java 00:21:48
Pero es un poquito 00:21:50
Parecido 00:21:52
Pues nada, venga, vamos a hacer un primer proyecto 00:21:53
Que 00:21:56
Tenga logs 00:21:58
¿Eh? 00:22:01
Voy, voy, voy 00:22:05
Vale, pues venga 00:22:06
Ahora 00:22:09
En lugar de un proyecto Java normal 00:22:11
Un proyecto Maven 00:22:14
¿Vale? 00:22:17
Podéis decir Maven lo que queráis 00:22:19
Yo sabéis que lo digo todo mal 00:22:21
No porque no sepa inglés 00:22:22
Sino porque me sale así 00:22:23
Que inglés se enseña mal 00:22:26
Y claramente el tío que no está en un puente 00:22:30
Claro 00:22:35
Que inglés se enseña mal 00:22:35
En todas partes, o te refieres aquí en concreto 00:22:37
No, eso es una broma 00:22:39
Es que el tío 00:22:40
En ocho meses 00:22:41
también como en universidades 00:22:44
y es una estafa 00:22:46
Ah, circula un tío por ahí 00:22:47
Ah, ya, ya, ya 00:22:50
Vale, pues nada 00:23:00
Esta es otra cosa 00:23:05
que uno si quiere 00:23:08
se puede meter a conocer todos los detalles 00:23:09
de Maven 00:23:12
y ya está, y volverse un experto 00:23:12
en Maven, como en Docker, en Kubernetes 00:23:15
nosotros 00:23:17
aquí vamos a usar lo estándar 00:23:19
y más o menos lo básico para sobrevivir 00:23:21
pues son 00:23:23
cuatro cosas que son las que vamos a mencionar ahora 00:23:25
ya está 00:23:27
bueno 00:23:27
en Maven tiene algunos términos 00:23:32
suyos propios 00:23:35
como el de arquetipo 00:23:37
y artefacto 00:23:39
¿Vale? Son algunos términos 00:23:40
suyos propios 00:23:44
que... 00:23:45
¡Qué bueno están ahí! 00:23:48
¿Qué? ¡Qué bueno están ahí! 00:23:52
Bueno, es una palabra de asistencia. 00:23:54
Y artefacto 00:23:57
también. 00:23:58
Un buen artefacto. 00:23:58
Pues venga. Arquetipo 00:24:01
significa 00:24:03
tipo de aplicación que vas a generar. 00:24:04
Puede ser una aplicación de escritorio, 00:24:07
una aplicación web con modelo vista 00:24:09
controlador, una aplicación de 00:24:10
Sprint, una librería de clases. 00:24:12
Es el tipo de aplicación que vas a generar. 00:24:16
Y artefacto es la aplicación. 00:24:19
Un artefacto Maven es una aplicación con la estructura de Maven y ya está. 00:24:24
Y arquetipo es qué tipo de aplicación. 00:24:28
Bueno, pues aquí te dice, ¿qué tipo de aplicación vas a generar? 00:24:30
Nosotros una normalicha y corrienticha. 00:24:35
Y entonces nos interesa saltarnos la selección de arquetipo. 00:24:37
si no nos la saltáramos, vamos a verlo ahora 00:24:41
pues tenemos 200.000 tipos diferentes 00:24:43
entonces, bueno, yo voy a decirle 00:24:45
aquí que le añada, porque si no 00:24:47
no me aparece en el workspace 00:24:49
pero si vosotros no tenéis 00:24:50
workspace, pues, o sea 00:24:53
working set, pues 00:24:55
vale, ya le voy a quitar 00:24:56
vale, pues entonces, si 00:25:00
no nos saltamos la lección de arquetipos 00:25:08
tipos, fijaos qué cantidad de tipos diferentes de aplicación, pues, Destruz, que es una 00:25:10
herramienta de acceso a datos relativamente antigua, pero que todavía se usa, donde metes 00:25:23
el XML en ficheros de configuración y ya está, o el XML, el SQL, de una aplicación 00:25:28
De JavaFX, bueno 00:25:36
De todo 00:25:37
Una aplicación REST 00:25:38
Una cantidad de chuminadas 00:25:43
200.000 millones 00:25:46
Una pregunta 00:25:48
El Eclipse lo tenías que instalar 00:25:48
De X forma para que te metiera 00:25:52
Muchas más opciones 00:25:54
Es que a mí solo me salen Apache 00:25:56
Muy poquitas opciones 00:25:57
Y Apache 00:26:00
El Eclipse 00:26:01
Estándar 00:26:06
Este que yo estoy usando aquí 00:26:08
No le he puesto nada 00:26:11
Adicional 00:26:13
Es el eclipse 00:26:14
Y de hecho es que este ni siquiera es moderno 00:26:15
Porque este lo tengo desde hace un año y pico 00:26:18
El proyecto 00:26:19
No sé 00:26:23
Pero bueno, da igual 00:26:26
Que no te salgan 00:26:27
Porque nosotros 00:26:28
Lo que vamos a hacer va a ser 00:26:29
Le decimos 00:26:32
Saltate la elección de arquetipos 00:26:34
Sáltatela, quiero un proyecto Maven de toda la vida. 00:26:35
Entonces, nos lo saltamos y ahora aquí vienen otras terminologías propias suyas de Maven. 00:26:39
Maven lo que quiere, como todos, es que a ser posible, los nombres de los proyectos, de las aplicaciones, sean únicos en Internet, ¿vale? 00:26:46
Que haya una especie de unicidad de nombres, dime. 00:26:57
Más terminología. 00:27:09
Normalmente las aplicaciones que hacen las empresas, pues en muchos de los casos, 00:27:15
se distribuyen a través de un servidor web para que tú accedas a esa aplicación web. 00:27:23
Se distribuye en un servidor web, ¿no? 00:27:28
Y esa empresa tendrá su nombre de dominio, ¿vale? 00:27:31
Nosotros podríamos tener una empresa y nuestra empresa, pues, se podría llamar, su nombre de dominio podría ser este. 00:27:36
Vale, entonces yo, si a todos los paquetes de mi aplicación les llamo, pues, por ejemplo, el DAO, le llamo así, al paquete de lógica, 00:27:47
lo llamo 00:28:00
poniéndole esta coletilla 00:28:02
si a todos les pongo esta coletilla 00:28:04
que es mi nombre de dominio 00:28:08
pues aparte de tener una homogeneidad 00:28:09
en mis aplicaciones 00:28:12
de alguna manera los convierto en únicos 00:28:13
porque solo yo tengo este dominio 00:28:16
los nombres de dominio son únicos 00:28:18
dos empresas no comparten su nombre de dominio 00:28:20
entonces siguiendo esta filosofía 00:28:22
es por lo que viene esto de aquí 00:28:24
el artefacto ID 00:28:25
sería el nombre que tú le das a tu 00:28:27
aplicación, a tu proyecto, ¿vale? 00:28:30
Pues yo le voy a poner, por ejemplo, 00:28:32
dos el que os dé la gana y yo para 00:28:34
luego organizarme para subirla, 00:28:36
pues unidad 00:28:38
didáctica una, 00:28:39
uno, 00:28:42
ejemplo de 00:28:43
logs. 00:28:47
Y ahora, ¿aquí 00:28:50
qué pondría? Pues lo normal aquí es poner 00:28:51
tu nombre de dominio, de la 00:28:54
empresa, ¿vale? 00:28:55
¿Tiene el dominio registrado? 00:28:57
00:29:04
No hay más Dan2 en toda España 00:29:04
Ni en el mundo 00:29:07
Solo estáis vosotros 00:29:08
Es que como no vamos a subir esta aplicación 00:29:10
Ah, vale 00:29:14
Y ya está, y en nombre 00:29:15
Pues nada, uno pone lo que le salga 00:29:16
Yo pongo siempre lo mismo 00:29:19
Y se acabó 00:29:21
No me voy a meter 00:29:23
En complicaciones de esto primero 00:29:25
Porque ni las conozco 00:29:27
Las complicaciones, ni nos interesa 00:29:28
nosotros queremos esta herramienta sobre todo para facilitarnos 00:29:30
la gestión de las 00:29:32
clases de las que dependemos que no están 00:29:34
en la distribución estándar 00:29:36
entonces pues ya tenemos 00:29:38
el nombre de nuestra cosa 00:29:40
y ya se ha acabado 00:29:42
¿dónde está el proyecto? 00:29:44
¿cómo que error? 00:29:48
ah esto es lo de 00:29:50
grados 00:29:51
pero ¿cómo que error fatal? 00:29:51
¿qué os pasa? 00:29:57
¿dónde? 00:29:58
¿En la mía o en la vuestra? 00:30:00
No, en la mía. 00:30:01
Ah, no, pero en la mía esto es por la prueba que hice. 00:30:02
A ver si va, porque como había actualizado la máquina virtual, 00:30:07
por si se me seguía nada, no, esto está bien. 00:30:10
Vale, entonces... 00:30:13
Bueno, pues mi proyecto es este 00:30:14
y veréis que lo único que cambia respecto al otro, 00:30:19
bueno, cambia muchas cosas, 00:30:22
pero una cosa que cambia es que tiene una M pequeñita. 00:30:22
Entonces, ¿qué significa que sea un proyecto MAVEN? 00:30:26
que su estructura de carpetas 00:30:28
ha cambiado. La estructura de 00:30:32
carpetas de Maven ya es 00:30:34
distinta. Y es 00:30:36
esta de aquí. 00:30:37
¿Qué pasa? 00:30:41
El POM, ese. 00:30:43
Ah, claro. 00:30:46
Sí. 00:30:48
Vale, entonces, esta es la estructura 00:30:49
de un proyecto 00:30:52
Maven estándar. 00:30:53
Si fuera aplicación web, sería 00:30:55
otra estructura, la que fuera. ¿Qué tiene? Esta es la carpeta SRC. Aquí es donde pondremos 00:30:57
nuestros paquetes. Los pondremos aquí. Esta es una ruta, la de recursos, que está en 00:31:04
el PAD, que es para poner recursos de la aplicación que no son ficheros de código, ficheros fuente. 00:31:11
Aquí es donde irán precisamente los ficheros de configuración. Los properties, los XML 00:31:18
L irán aquí, en recursos 00:31:25
aquí irán 00:31:27
las clases de prueba 00:31:29
yo no sé 00:31:30
más o menos de pruebas en general 00:31:32
qué cosas haríais el año pasado, pero bueno 00:31:35
si uno trabajara bien 00:31:37
pero yo no sé si alguien trabaja 00:31:39
bien, bueno, o sea, más que si uno 00:31:41
trabajara bien, más que si uno trabajara 00:31:43
como dicen que es trabajar 00:31:45
bien, pues tal cual 00:31:47
se va haciendo una clase, en paralelo 00:31:49
tal cual se hace su clase de prueba 00:31:51
en paralelo, así no deja 00:31:53
las pruebas para el final, porque lo que se deja 00:31:55
para el final no se hace 00:31:57
entonces si uno trabajara bien, a la vez que va haciendo aquí 00:31:58
clases, en este SRCT 00:32:01
se iría haciendo sus clasecitas de prueba 00:32:03
y Maven te automatiza 00:32:05
pasar las pruebas 00:32:09
te lo automatiza, pero 00:32:10
¿alguien alguna vez mete dentro aquí algo? 00:32:12
yo nunca he metido nada, pero si 00:32:15
alguien lo hace bien, pues debería 00:32:17
¿vale? 00:32:19
los que habéis trabajado fuera 00:32:21
de las fases de pruebas, ¿qué opináis? ¿se hacen bien 00:32:22
en condiciones. Te obligan a llevar un libro. 00:32:25
Ah, bueno, joder. 00:32:29
¿Qué coberaje? 00:32:29
Claro, coberaje 00:32:31
es toda la parte de tu código 00:32:34
que es susceptible a tus pruebas. 00:32:35
La que estás cubriendo. 00:32:38
Hay líneas de código que a lo mejor no estás cubriendo 00:32:39
porque se te están escapando en las pruebas. 00:32:41
Entonces, un 80% tienes que 00:32:44
tener el gobierno. 90. 00:32:45
Te saltas el no cubrir el modelo y poco más. 00:32:47
Te saltas el cubrir todo, 00:32:50
cada I, cada tal, una prueba por cada uno. 00:32:51
Claro, asumen que en el modelo 00:32:54
Hombre, pocos errores vas a cometer 00:32:56
Total son get set y propiedades 00:32:57
¿No? Pero en lo demás 00:33:00
Claro 00:33:01
Pues nada, en algunos sitios 00:33:02
Si se hace bien entonces 00:33:05
Y ya está 00:33:06
Y este es el famoso fichero de configuración 00:33:08
De Mave 00:33:12
¿Vale? Entonces 00:33:13
Este fichero 00:33:15
De configuración 00:33:18
Pues uno lo abre 00:33:19
Y le aparece esto 00:33:23
y de repente 00:33:30
le sale un error 00:33:31
es muy bien 00:33:33
de repente le sale a uno un error 00:33:36
siempre en este 00:33:40
no, no, no, no, da igual 00:33:41
uno podría pasar toda su vida 00:33:44
sin arreglar este error 00:33:46
y no pasaría nada, porque esto no es un código fuente 00:33:47
eso es un XML 00:33:50
pero si os da todo como a mí 00:33:51
que haya cosas rojas 00:33:54
pues después de un tiempecito 00:33:55
uno averiguó 00:33:58
hace un par 00:34:01
de añitos, de repente, de puñetera 00:34:03
casualidad, averigüé 00:34:05
cuando todavía no había hecha GPT 00:34:07
aunque no sé si hecha GPT lo sabría esto 00:34:09
ahora se lo preguntamos 00:34:11
que si pones aquí una S 00:34:12
pum, eso se te quita 00:34:14
entonces, no cambia nada 00:34:17
no va a funcionar igual 00:34:21
todo va a funcionar igual 00:34:23
pero por lo menos no ves eso en rojo 00:34:24
Y te quedas más tranquilo 00:34:26
¿Verdad? 00:34:28
¿Eh? 00:34:31
Lo del ver las cosas en rojo, ¿verdad? 00:34:32
Pero en los ficheros de configuración hay veces que es inevitable 00:34:34
El Eclipse es un pesado 00:34:36
Y... ¿Vale? 00:34:38
Para quitar los rojos 00:34:43
Vale, pues este famoso fichero 00:34:44
De configuración que hemos conseguido 00:34:50
Ya quitarle el error 00:34:52
aquí ya se pueden meter 00:34:54
que pierdo el hilo 00:34:57
si yo vuelvo de fondo 00:35:00
pierdo el hilo, aquí ya se pueden meter 00:35:02
un montonazo de historias 00:35:03
para configurar Mabel y decirle 00:35:05
cómo compilas, dónde están 00:35:07
cómo pasas las pruebas, los parámetros 00:35:10
para las pruebas, cómo 00:35:11
construyes tu proyecto cuando tiene 00:35:13
un montón de millones 00:35:15
de cosas que a nosotros 00:35:17
nos dan igual, a nosotros sólo nos 00:35:19
importa las 00:35:21
dependencias, que es 00:35:23
¿qué clases vamos a usar? 00:35:25
Entonces, aquí todavía 00:35:28
no tiene creado 00:35:29
una... 00:35:30
Entonces, lo primero que 00:35:34
creamos es esto, para decirle 00:35:35
oye, que yo dependo de cositas, 00:35:38
que las necesito. Haz el favor 00:35:39
de buscarlas y traérmelas. 00:35:41
Dependo de cosas que las necesito. 00:35:44
Dependencias. 00:35:47
Pues ahí dentro irán esas cositas 00:35:48
de las que dependemos. 00:35:49
Ahora, 00:35:52
¿De qué dependemos nosotros? 00:35:53
Aparte de lo que tenemos en nuestra 00:35:55
distribución estándar. 00:35:57
Pues de log4j. Si queremos hacer logs, 00:35:59
dependemos de log4j. 00:36:01
¿O sea que el PON depende? 00:36:03
No, nuestra aplicación. 00:36:05
Nuestra aplicación depende de la existencia 00:36:06
del hard de log4j. 00:36:09
Porque va a usar los métodos de ese hard. 00:36:11
Los va a usar para hacer los logs. 00:36:13
Depende de la existencia. 00:36:15
Entonces, 00:36:17
¿cómo le decimos? 00:36:20
Oye, méteme en los 4J 00:36:22
¿Cómo se lo decimos? 00:36:24
¿Alguien te va a parar a ir al baño? 00:36:27
Sí, bueno, vamos a parar dos minutos 00:36:30
Antes de... 00:36:32
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
26
Fecha:
10 de octubre de 2025 - 12:26
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
36′ 35″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
124.75 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid