Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Separar las bibliotecas estándar del código propio

4 tareas · 40 min · Principiante

M-7401 conserva más de tres mil nombres de función. Leerlos uno por uno es perder la mañana; agruparlos por paquete es encontrar en minutos lo que escribió el autor. En esta sala se separa el runtime, la biblioteca estándar y las dependencias de terceros de los paquetes propios, se mira qué pide cada función propia a los demás y se compara la lista de dependencias con la de la herramienta interna en Go que TI compila y firma. Todo sale de nombres que ya leyó una herramienta: no se desensambla ni se ejecuta nada.

0 de 4 · 0%

Objetivo de la sala

M-7401 conserva más de tres mil nombres de función. Leerlos uno por uno es perder la mañana; agruparlos por paquete es encontrar en minutos lo que escribió el autor. En esta sala se separa el runtime, la biblioteca estándar y las dependencias de terceros de los paquetes propios, se mira qué pide cada función propia a los demás y se compara la lista de dependencias con la de la herramienta interna en Go que TI compila y firma. Todo sale de nombres que ya leyó una herramienta: no se desensambla ni se ejecuta nada.

En Go el nombre completo de una función empieza por la ruta de su paquete, y esa ruta delata su origen. Los paquetes de la biblioteca estándar tienen rutas cortas sin dominio, como net/http u os. Las dependencias de terceros empiezan por un dominio, porque así se publican los módulos. El código del autor está en el paquete main y en los que empiezan por la ruta de su módulo principal, la que se leyó en la sala anterior.

Hay un caso que confunde: algunos módulos los mantiene el propio proyecto Go pero no forman parte de la biblioteca estándar; se descargan como cualquier dependencia y se cuentan como tal.

Responde para continuar

Una función se llama `codigo.example/red/reintentos.Hacer`. ¿De qué parte del binario es, en principio?

Ver pista de ayuda

Mira cómo empieza la ruta del paquete.

La consola tiene los nombres de función de M-7401 ya contados por paquete. Primero mira la tabla completa con SELECT * FROM paquetes. Después agrúpala por origen con esta consulta:

SELECT origen, SUM(funciones) FROM paquetes GROUP BY origen

Responde para continuar

Escribe cuántas funciones de M-7401 pertenecen a los paquetes propios del autor.

Ver pista de ayuda

Es la fila del origen que corresponde al autor en la consulta agrupada.

Una vez aislado lo propio, la pregunta útil es qué le pide cada función a los demás paquetes. Una función propia que llama al paquete de red y tiene a mano una dirección es una candidata a capacidad de comunicación; una que llama al paquete que lanza procesos es una candidata a ejecutar órdenes. «Candidata» porque pedir algo no prueba que haya ocurrido: eso lo dice el informe del entorno aislado.

Consulta SELECT * FROM funciones_propias y fíjate en la columna de lo que pide cada una.

Responde para continuar

Escribe el nombre de la única función propia de M-7401 que pide algo al paquete que lanza procesos del sistema.

Ver pista de ayuda

El paquete de la biblioteca estándar que lanza procesos es os/exec.

Las dependencias también se leen por comparación. Que M-7401 y corteplan.exe compartan una biblioteca de reintentos de red no dice nada: muchas herramientas la usan. Lo que tiene la muestra y no tiene un programa sano de la casa que hace un trabajo parecido es lo que orienta la lectura, y lo que más tarde puede convertirse en una regla.

Consulta SELECT * FROM dependencias.

Responde para continuar

Escribe la ruta del módulo de terceros que usa M-7401 y no usa corteplan.exe.

Ver pista de ayuda

Busca la fila donde la columna de corteplan.exe dice que no la usa.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad