20251009 Logs_1 - Contenido educativo
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:
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
de
00:09:18
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
Sí
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
el
00:32:08
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