Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Introducción a Jenkins - 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 9 de octubre de 2024 por Pedro Luis L.

148 visualizaciones

Descargar la transcripción

Bueno, vamos a ver lo que es un entorno de integración continua. 00:00:01
Un entorno de integración continua es un programa que automatiza la tarea de construir y testear un proyecto. 00:00:04
Se hicieron porque se dieron cuenta de que si el proyecto lo construías y lo testeabas frecuentemente, 00:00:15
encontrabas los errores más rápidamente. 00:00:22
Hay muchas aplicaciones que diariamente, semanalmente, te generan una versión de prueba de la aplicación que la gente puede probar. 00:00:26
Yo que sé, en Firefox están las Nightly, pues Firefox Nightly es simplemente una versión de Firefox que cada poco tiempo te la sacan con los nuevos cambios, las nuevas versiones. 00:00:36
Entonces, claro, tiene el problema, o sea, esto lo hacen cada noche, como pone ahí Naily. 00:00:56
Esto tiene el problema de que estás prácticamente sin testear. 00:01:02
El tester eres tú. 00:01:06
Entonces, pues, lo usan para encontrar fallos. 00:01:07
La ventaja de cada usuario es que te puedes encontrar nuevas funcionalidades 00:01:10
que no están disponibles para el resto de los mortales. 00:01:15
Bueno, pues vamos a ver un entorno de integración continua, 00:01:19
que en nuestro caso se llama Jenkins. 00:01:22
En este Jenkins, le damos aquí, aquí tenemos a Jenkins. Esto es una aplicación web y está muy, muy orientada a Linux. Entonces, pues eso, es mejor ejecutarla en Linux. 00:01:26
¿Se puede ejecutar en otros sistemas operativos? Sí, pero vamos a tener que usar Docker y cosas similares. Como es una aplicación web, necesita un servidor web. Vamos a descargar Tomcat. 00:01:45
tonka, aquí lo tenemos 00:01:58
apache tonka, veis que pone aquí 00:01:59
download y nos vamos a ir 00:02:02
a la versión 10 00:02:04
por aquí abajo veis que pone 00:02:06
un tarje z 00:02:08
tarje z es una forma de comprimir 00:02:09
archivos, muy típica de 00:02:12
Unix 00:02:14
descargamos 00:02:14
se usa porque guarda los permisos 00:02:17
los zip no suelen guardar los permisos 00:02:20
bueno, se habrá descargado entero 00:02:22
parece que sí 00:02:23
vale, lo extraigo 00:02:26
de acuerdo, ahí lo tengo extraído 00:02:27
y ahora necesito descargar Jenkins 00:02:32
me voy aquí Jenkins 00:02:34
donde pone aquí download 00:02:36
pues esta página tengo dos versiones 00:02:38
la estable o la semanal 00:02:40
esta es la que os decía que 00:02:42
hacen pues cada poco tiempo 00:02:44
para encontrar fallos y demás 00:02:46
vamos a descargarnos la semanal 00:02:47
aquí me puedo encontrar fallos, pero bueno, para lo que vamos a hacer 00:02:49
nosotros, pues no creo que 00:02:52
de mucho problema, veis que aquí 00:02:54
pone descargar un paquete de 00:02:55
java world o lo descargamos a muy importante muy importante tenéis que 00:02:58
tener instalado java en vuestro equipo si no lo tenéis está instalado tenéis 00:03:03
que tener teclea sudo apt install open jdk 00:03:08
bueno aquí probar la 23 a ver si cuela sino del 22 y si no el 17 vale y 00:03:16
probando, si funciona el 23 00:03:22
pues genial 00:03:24
si no el 22, si no el 17 00:03:26
la que funciona 00:03:28
yo me he instalado la 23 00:03:29
para saber que versión tienes instalada 00:03:32
tecleas Java-version 00:03:34
me dice que yo tengo la 23 00:03:36
bueno pues 00:03:41
me he descargado ya Jenkins 00:03:44
me he descargado ya Jenkins 00:03:45
aquí está Jenkins 00:03:48
bueno pues me coge este fichito 00:03:49
que me he descargado, copiar 00:03:51
me voy aquí al servidor web 00:03:54
y veis que me he metido 00:03:56
la carpeta dentro del servidor 00:03:58
web apps 00:04:00
pues la pego 00:04:01
ya está instalado Jenkins, bueno, falta configurar 00:04:02
pero la instalación ya la hemos hecho 00:04:06
para arrancar 00:04:08
el servidor web Apache 00:04:09
bueno, pues me meto en Apache 00:04:11
Tomcat 00:04:14
lo he descargado 00:04:14
y me meto en la carpeta 00:04:16
bin, vale 00:04:18
y aquí hay un archivo que se llama 00:04:20
Catalina. Pues voy a ejecutar 00:04:22
Catalina. Punto barra 00:04:24
Catalina. Bueno, si lo ejecuto así, sin parámetros, 00:04:26
me va a decir, ¿qué quieres hacer? 00:04:29
Ejecutarlo, pararlo. Voy a poner un Catalina 00:04:30
RAM. 00:04:32
¿De acuerdo? He ejecutado Catalina RAM. 00:04:36
Bueno, que ya 00:04:39
me ha soltado un montón de cosas, ¿veis? 00:04:40
Ejecutado Catalina RAM. 00:04:41
Aquí me está soltando un montón de mensajes 00:04:43
del servidor, que no está funcionando. 00:04:45
¿Veis que está aquí? 00:04:48
¿Lo veis? Bueno, está haciendo 00:04:50
el despliegue. Ah, 00:04:51
Bueno, por aquí 00:04:53
Veis que ponía 00:04:58
Desplegando Jenkins 00:05:00
Desplegando Jenkins 00:05:02
Lo ha desplegado 00:05:05
Parece ser que no he visto que haya errores 00:05:06
Sí, pero ha habido errores 00:05:09
¿Veis? Aquí ha habido errores 00:05:12
Esto es una... Acordaos que hemos bajado 00:05:14
La versión de prueba de Tomcat, o sea 00:05:16
No, perdón, hemos bajado la versión de prueba 00:05:18
De Jenkins, o sea que puede haber errores 00:05:21
Vamos a ver si el invento funciona 00:05:23
para saber si el invento funciona, voy aquí, te creo, localhost 2.8080 barra Jenkins, ¿de acuerdo? 00:05:24
Esto puede tardar un ratito, ¿eh? Esto puede tardar. 00:05:39
Ah, vale, me está funcionando, me está funcionando porque yo ya los tenía instalado de antes. 00:05:45
me voy a cargar la instalación 00:05:53
me voy a cargar la instalación 00:05:56
para eso me abro un terminal 00:06:00
eso no tendría que haber salido 00:06:02
tiene que salirte un mensajito 00:06:07
de que 00:06:08
de que Jenkins 00:06:10
no está 00:06:12
bueno 00:06:14
un momentito que voy a parar la grabación 00:06:16
voy a destruir mi anterior 00:06:20
versión de Jenkins y ahora 00:06:22
continuar 00:06:24
Bueno, vamos a continuar usando la máscara, la edición de vídeo. 00:06:25
Bueno, he desinstalado mi versión anterior de Jenkins. 00:06:34
Si os pasa, tenéis que borrar el servidor web. 00:06:36
Bueno, repetir todo el proceso, borrar el servidor web, volveros a descargarlo, volveros a bajar Jenkins 00:06:42
y antes de hacer todo eso, ejecutar este comando. 00:06:47
O sea, esto que borra la versión anterior de Jenkins. 00:06:49
bueno pues ya estoy en Jenkins 00:06:52
y me dice que para instalarlo 00:06:56
tengo que, veis que me está diciendo 00:06:57
aquí un archivo 00:07:00
por seguridad me dice que 00:07:01
aquí ha escrito una contraseña 00:07:03
y la tengo que copiar aquí, vale 00:07:06
pues la copio, copio ese 00:07:08
archivo, bueno estoy 00:07:10
haciendo un less, veis 00:07:16
aquí me sale la 00:07:17
la contraseña que tengo que copiar 00:07:19
y pegar, pues la copio 00:07:22
y la pego 00:07:23
Continuo. Vale. Muy importante tener la versión adecuada de Java. Si no ha funcionado puede ser que no tengáis instalado Java. Para instalar Java sudo apt install openjdk-23. Si funciona, si no funciona la 22 y si no funciona la 17. Vale. 00:07:26
Esto yo como ya lo tengo hecho, pues nada. Bueno, ya me está diciendo que estoy bienvenido a Jenkins. Instalar los plugins. Vale, pues voy a instalar los plugins sugeridos. Jenkins se basa en plugins y puedo instalar plugins ya por defecto o nuevos que haya hecho la gente. 00:07:54
Fijaros que aquí está instalando un plugin para manejar WeHub, otro para manejar WIP, otro para mandar correos electrónicos. ¿Qué más tiene? Bueno, distintos tipos de autentificación. 00:08:12
Esto del pipeline case, ves que he hablado mucho del pipeline y del lenguaje Groovy. Hay como dos formas de crear scripts. Lo que vamos a hacer en Jenkins es crear scripts, él los va a ejecutar cuando nosotros le programemos. 00:08:30
Podemos bien ejecutarlos manualmente o decir, venga, cada noche me lo ejecutas, que es lo que hacen, por ejemplo, aquí en el Jenkins semanal, ¿no? Tendrán puesto un proceso que semanalmente lo ejecute y lo suba a la página web. 00:08:47
Parece que ya ha terminado la instalación. Bueno, está terminando la instalación. Pues eso, tengo dos formas de crear los scripts de BAS que conozco de siempre o usar este lenguaje que se llama Groovy. 00:09:01
No lo vamos a meter en Groovy porque esto es una versión muy pequeñita, pero vamos a crear nuestro primer usuario. Aquí ponéis vuestro nombre, PP, contraseña, PP, PP, seguridad máximo, nombre PP, aquí ponéis vuestro nombre, aquí no me pongáis PP, ponéis vuestro nombre. 00:09:19
Y aquí abajo, en dirección de email, ponéis la dirección, ¿de acuerdo? Vale, pues ponemos aquí el usuario, la contraseña, el nombre y la dirección de email. Salvar y continuar. Y me dice que Jenkins ya está funcionando, he instalado Jenkins, voy a poder acceder siempre tecleando esta dirección. 00:09:36
salvamos 00:09:58
y vamos a empezar a usar Jenkins 00:10:00
ahora, entre ejecuciones 00:10:02
acordaros que para poder usar Jenkins 00:10:07
tenéis que primero lanzar el servidor 00:10:09
lanzar Catalina, si no lanzáis Catalina 00:10:11
primero pues no vais a poder acceder aquí 00:10:13
bueno, aquí puedo crear 00:10:15
una nueva tarea 00:10:17
creo una nueva tarea 00:10:18
bueno, puedo crear 00:10:21
un proyecto de estilo libre o un 00:10:23
pipeline 00:10:25
el pipeline 00:10:25
el pipeline 00:10:27
los pasos de un pipeline 00:10:30
los pasos de un pipeline 00:10:36
un momentito que los tengo aquí 00:10:39
no he puesto los pasos de un pipeline 00:10:45
no he puesto los pasos de un pipeline 00:10:49
no he puesto los pasos de un pipeline 00:10:55
para unos apuntillos 00:10:58
no he puesto los pasos de un pipeline 00:11:00
los pasos de un pipeline 00:11:01
van a ser en general 00:11:03
bajarme el proyecto 00:11:05
ejecutar 00:11:07
un constructor 00:11:09
si ese constructor no ha tenido fallos 00:11:11
hacer los tests 00:11:14
si no hay errores en los tests 00:11:15
liberar 00:11:18
la aplicación o mandar un mensaje 00:11:20
¿de acuerdo? o sea, los pasos de un 00:11:22
pipeline, los pasos de un 00:11:24
pipeline son 00:11:30
descargar 00:11:31
el proyecto 00:11:38
que puede ser de width, por ejemplo 00:11:42
de width 00:11:44
el segundo paso es construir 00:11:46
build en inglés 00:11:49
que va a ser generalmente 00:11:55
ejecutar un make 00:11:57
o un build.sh 00:11:59
que es un archivo que ya 00:12:00
estará dentro del git 00:12:02
una vez terminada de construir 00:12:04
hacer los tests 00:12:06
que esto todavía no lo hemos visto 00:12:08
y si los tests no dan errores 00:12:10
lo que llaman deploy 00:12:13
que es liberar la aplicación 00:12:14
liberar la aplicación 00:12:17
o mandar un mensaje 00:12:22
que está correcto 00:12:24
estos son los pasos de un pipeline 00:12:28
¿vale? nosotros vamos a crear 00:12:31
un proyecto de estilo libre, le vamos a poner un nombre 00:12:35
que va a ser prueba 00:12:36
prueba, y vamos a crear un proyecto 00:12:37
de estilo libre aquí, le damos 00:12:40
ok, le damos 00:12:42
aquí está, bueno 00:12:48
le puedo poner, ya estoy en la configuración 00:12:53
le puedo poner una descripción 00:12:55
proyecto de prueba 00:12:57
y aquí me vienen un montón 00:13:00
de opciones, pues mira, puede ser por ejemplo 00:13:03
un proyecto de WeHub. Aquí me pone 00:13:05
unas pequeñas 00:13:07
instrucciones. Desechar 00:13:09
ejecuciones antiguas. Bueno, está muy claro que va a 00:13:11
ahorrar el entorno de trabajo 00:13:13
y me lo va a poner a funcionar. 00:13:14
El origen del código fuente 00:13:21
puede ser ninguno o un 00:13:23
WIT. ¿De acuerdo? Pues si es un WIT, tengo que 00:13:25
decir repositorio y aquí añadirle 00:13:27
las credenciales. O sea, tiene que 00:13:29
poner el usuario y el token correspondiente. 00:13:31
puedo ejecutarlo en equipos remotos, Jenkins está pensado para ser usado en máquinas en la nube. 00:13:33
Esto está pensado para que llegue Jenkins, lance un montón de máquinas virtuales en la nube, 00:13:44
a cada una le da una tarea, pues tú vas a compilar, tú vas a hacer test, tú vas a lo que sea. 00:13:52
Y cuando acaban, pues él junta los resultados y apaga esas máquinas virtuales. 00:13:57
Nosotros lo vamos a hacer en local. 00:14:02
Entorno de ejecución. 00:14:04
Esta opción es interesante, borrar el workspace antes de hacer la construcción. 00:14:06
Si activamos esta opción, vais a ver que se pueden crear archivos durante la ejecución. 00:14:11
O sea, por ejemplo, cuando te bajas un width, cuando haces un width pool y te bajas el repositorio, 00:14:17
pues ahí se queda. 00:14:22
Lo puedo borrar antes de empezar. 00:14:22
En el momento lo voy a dejar sin marcar. 00:14:25
Y aquí vienen las partes importantes, los build steps y las acciones finales. Build steps. Aquí puedo añadir yo mis sell scripts para ejecutar. Bueno, pues puedo decir que, por ejemplo, hago un echo, hola mundo, y un echo, adiós mundo. ¿De acuerdo? Este va a ser mi script. 00:14:27
Una vez que tengo escrito mi script, puedo decidir qué acciones hacer al final. Pues mira, puedo subir por Git el proyecto a algún sitio o puedo ejecutar otros proyectos o puedo mandarme un correo electrónico. 00:14:56
Vale, pues hay un montón de opciones. 00:15:13
Si, por ejemplo, digo que me lo publiqué en Wit, 00:15:17
pues me va a decir, mira, que hazlo si solamente ha sido un bueno, 00:15:20
que haga un merge de resultados, que añade una etiqueta, una run, etcétera, etcétera, etcétera. 00:15:25
Lo voy a quitar, ¿vale? 00:15:31
Lo voy a dejar de momento así. 00:15:32
Lo voy a guardar. 00:15:34
Ya tengo mi script, ¿vale? 00:15:35
Y ahora lo arranco. 00:15:37
¿Veis qué me ha dado aquí? 00:15:42
Bueno, aquí en la zona de builds, si no os habéis fijado, 00:15:43
Ha salido esto. Le voy a dar otra vez. 00:15:46
Ahí está. ¿Veis? 00:15:51
Bueno, me lo pone en verde diciendo que la ejecución ha sido correcta. 00:15:52
Es distinto pulsar aquí que pulsar aquí. 00:15:56
Si pulso aquí en el número, me dice que cuánto tiempo ha tardado, etcétera, etcétera, etcétera. 00:15:57
Vuelvo para atrás. 00:16:03
Si pulso aquí en el símbolo verde, me suelta la salida de la consola, 00:16:05
que efectivamente ha sido un éxito porque este script no tiene errores. 00:16:09
¿Qué pasa si hay errores? 00:16:13
Voy a volver. 00:16:15
¿Qué pasa si hay errores? 00:16:17
Bueno, pues me voy aquí a configurar. 00:16:18
Siempre podéis, si pincháis ahí en el nombre del proyecto y le dais a configurar, 00:16:20
pues siempre podéis volver aquí a la configuración de cambiar cosas. 00:16:25
¿Vale? 00:16:28
Vamos a suponer que voy a borrar un archivo que no existe. 00:16:28
¿De acuerdo? 00:16:34
Claro, este archivo no existe. 00:16:35
Esto es un error. 00:16:37
Si lo guardo, vais a ver que la ejecución ahora va a falto. 00:16:39
¿Veis? Ha fallado. 00:16:46
Lo ponen rojo. 00:16:47
y cuando pincho en el símbolo, ves que dice, mira, que aquí no se puede borrar este archivo, entre otras cosas, porque no existe. 00:16:48
Y me informa. A ver... Vamos a otra vez a la configuración. Vamos a hacer que no falle. 00:16:56
Vamos a hacer que no falle. Voy a coger y le voy a hacer un touch. Ahora no va a fallar, ¿no? 00:17:05
Va a caer el archivo y después lo va a borrar. No va a fallar la ejecución. 00:17:14
¿Veis? Ahora ya no da error porque el archivo es X 00:17:18
Bueno, y hasta aquí nuestro pequeño curso de Jenkins 00:17:26
Bueno, aquí en el panel de control puedo controlar los trabajos 00:17:32
Aquí he creado uno, pero puedo crear todos los que quiera 00:17:36
Aquí en administrar Jenkins 00:17:38
Es que esto ya se escapa de este tutorial 00:17:40
Pues puedo cargarle plugins, puedo controlar las nubes 00:17:43
¿Veis? Esto de nodos 00:17:47
Puedo añadir un nodo, es otro equipo en la nube 00:17:48
a que yo me puedo enchufar y mandarle opciones, pues mira, aquí puedo generar las credenciales de acceso a esos nodos o generar nubes, ¿de acuerdo? 00:17:52
Porque esto está pensado para ejecutarlo en una red. Más cositas interesantes, ah, se me olvidaba, bueno, cuando entréis vais a entrar aquí directamente, 00:18:04
bueno, no vais a entrar aquí directamente, te va a pedir tu usuario y contraseña, porque esto funciona con usuario y contraseña, 00:18:14
Si me desconecto, ¿veis que me pide entrar otra vez? ¿De acuerdo? Vale, pues entro. Y entro directamente a este entorno de pro. Puedo ejecutar otras tareas. ¿De acuerdo? Fijaos que no la he programado. No la he programado. De momento vamos a quedarnos aquí, pero puedo programar su ejecución. No lo vamos a ver, pero se puede hacer. 00:18:19
Y una última cosa que decir es que no es habitual poner los scripts aquí directamente. Lo que vamos a hacer es, en nuestro git, en nuestro widget, en nuestro proyecto, vamos a poner un build.sh y lo que vamos a hacer es directamente ejecutar ese build.sh. ¿De acuerdo? 00:18:44
ese build.sh 00:19:05
puede generar errores 00:19:08
¿cómo se generan los errores 00:19:11
en un build.sh? 00:19:12
bueno, aquí descargaría el proyecto 00:19:15
¿de acuerdo? 00:19:16
haría el cd al proyecto 00:19:18
cd al proyecto que sea 00:19:19
cd proyecto 00:19:20
con pwd 00:19:21
y con ls podéis ver 00:19:25
lo que hay 00:19:28
¿de acuerdo? cuando lo ejecutéis 00:19:30
¿de acuerdo? 00:19:32
sería más bien aquí 00:19:34
o sea, imaginaos que es un git 00:19:35
pues ha hecho la descarga 00:19:38
del proyecto 00:19:40
con WD puede ver 00:19:41
donde estáis, con el SBI los archivos 00:19:43
esto es bueno ponerlo para saber donde tengo que entrar 00:19:45
me entro en el proyecto y lo habitual va a ser 00:19:48
ejecutar un .arrapil.sh 00:19:50
y que construya el proyecto 00:19:52
¿cómo este build puede generar 00:19:53
errores? este build puede generar errores 00:19:56
de la siguiente forma 00:19:58
siempre todo script que acaba 00:19:59
todo script 00:20:01
que tenga un exit 00:20:03
que tenga un exit 00:20:06
puede generar errores 00:20:08
si el exit vale 0 00:20:10
no se genera un error, pero si el exit 00:20:12
vale 1, se genera un error, por ejemplo 00:20:14
si aquí pongo el exit 00:20:16
1, va a generar 00:20:20
un error sí o sí 00:20:22
voy a ir ahora 00:20:24
error, lo veis ahí, me ha dado 00:20:27
un fallido, porque 00:20:30
le he obligado a tener un error 00:20:31
¿de acuerdo? puedo hacer que no 00:20:33
de errores con un exit 0 00:20:38
si lo ejecuto, vais a ver que exit 00:20:40
pero no produce errores, ahí está, ¿vale? Pues puedo en un script ver si se producen errores, por ejemplo, wget, wget es un comando que sirve para descargar archivos, ¿de acuerdo? 00:20:45
Pues con este código puedo ver si se ha generado un error o no. O sea, esto funciona. IF es el sí en inglés, el sí condicional. 00:20:59
Si no se ha producido un error, o sea, si $interrogación, $interrogación es la salida de un comando. No es igual a 0, ¿de acuerdo? No es igual a 0. Si no es igual a 0, es que se ha producido un error. 00:21:12
entonces se ejecuta 00:21:30
este código que pongo yo aquí 00:21:33
pues hace esto, hace aquello 00:21:35
y luego le puedo decir que haga un exit1 00:21:36
esto lo puedo poner o no 00:21:39
indicando que se ha producido 00:21:40
un error, ¿vale? por ejemplo 00:21:43
estas líneas 00:21:44
suelen ser muy típicas, aquí estoy 00:21:46
descargando una hoja de estilos 00:21:49
de internet y aquí estoy 00:21:50
comprobando si la descarga ha sido correcta, ya sabéis que 00:21:53
a veces las descargas fallan 00:21:55
si ha sido correcta, esto no lo va a hacer 00:21:56
y si ha sido correcta, todo lo que pongo aquí se va a ejecutar, ¿de acuerdo? 00:21:59
Puedo comprobar si un archivo existe en nuestros programas, por ejemplo, 00:22:05
si pongo un if menos 6 el nombre del archivo, esto se va a ejecutar si el archivo existe. 00:22:11
Este cachito de código se ejecuta si el archivo existe. 00:22:17
Else en inglés significa si no, si no puedo ejecutar este código de aquí, ¿de acuerdo? 00:22:20
O sea, si el archivo existe, se va a ejecutar este código de aquí y si no existe, se va a ejecutar este otro código de aquí. 00:22:27
Esto lo puedo usar para comprobar si se ha ido la cosa bien. 00:22:36
Imaginaos que he hecho el comando wit. 00:22:40
Pues compruebo si la carpeta existe. 00:22:42
Si la carpeta existe, pues hago lo que tenga que hacer. 00:22:44
Y si no existe, pues hago otra cosa. 00:22:47
También puedo programar subidas automáticas a wit. 00:22:51
O sea, imaginaos que tengo que hacer una página web y después esa página web subirla a otro sitio. Pues muy fácil, se usan usando estos comandos, commit-a-m y aquí un texto, lo que le estoy diciendo al comando wit es que no me abra el editor de texto y directamente ponga este texto como etiqueta del commit, ¿de acuerdo? 00:22:53
O sea, es automático. Y luego, aquí está haciendo un WIPUS, ¿de acuerdo? Y le puedo decir el usuario que usa, ¿vale? Pues mira, al proyecto tal, me imaginaos que la dirección del proyecto es esta, ¿no? 00:23:21
pues antes de la dirección del proyecto hay que poner el usuario y la contraseña, ¿vale? O sea, si vuestro proyecto es https.withapp.com barra pp barra proyecto.wit, pues entre el withapp y el barra barra tenemos que poner esto, el usuario, dos puntos y el token y luego un arroba. 00:23:39
esto es un origen, el origen 00:24:01
de muchos fallos, porque 00:24:04
de muchos errores 00:24:05
de seguridad, muchas veces 00:24:07
la gente no se da cuenta y el token acaba por ahí 00:24:10
y ese token se acaba desperdigando 00:24:12
por un 00:24:14
proyecto, llega 00:24:16
una persona malintencionada, se encuentra 00:24:18
el usuario y el token y lo usa 00:24:20
y a veces pues cuelan virus, cuelan 00:24:22
cosas que no debe ser 00:24:24
en proyectos, ¿de acuerdo? 00:24:26
vale, pues ahora 00:24:28
sí que es todo 00:24:30
Subido por:
Pedro Luis L.
Licencia:
Reconocimiento - No comercial - Compartir igual
Visualizaciones:
148
Fecha:
9 de octubre de 2024 - 19:02
Visibilidad:
Público
Centro:
IES VILLABLANCA
Duración:
24′ 35″
Relación de aspecto:
1.78:1
Resolución:
1364x768 píxeles
Tamaño:
128.58 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid