Ir al contenido

Blog ·

La selección abarca la frase entera

Catorce frases llamaban VM a un contenedor. Cambiar la palabra funciona en inglés y se rompe en siete idiomas, así que la rama abarca toda la frase.

Por Provibr

Un contenedor de Proxmox es, en nuestro producto, un VPS. El cliente pide uno, recibe una máquina con una dirección y un plan, y todas las pantallas que hablan de servidores hablan de él correctamente. El tipo en la base de datos dice vm, y está bien: lo vendido es un servidor privado virtual.

La diferencia vive una capa más abajo, en las palabras. Un contenedor no tiene BIOS, ni disco virtual en el sentido en que una máquina virtual lo tiene, ni agente invitado. Una ronda anterior anotó, como cabo suelto, que una frase de una página de contenedor seguía diciendo «la VM». Eran catorce.

Por qué la palabra es la unidad equivocada

La reparación evidente es un hueco donde va el sustantivo. Algo así como una selección sobre el tipo de recurso que produce «contenedor» o «VM», puesta en medio de la frase.

En inglés funciona. En alemán se rompe, porque el artículo no es el mismo para esas dos palabras. Se rompe igual en español, francés, italiano, portugués y rumano, y se rompe más fuerte en ucraniano, donde el sustantivo en esa posición tiene que llevar una terminación de caso que la palabra sustituida no tiene.

Se puede ir detrás de esto. Añada también una selección para el artículo, luego otra para la concordancia del adjetivo, y descubra después que el orden natural de las palabras cambia. Lo que ha construido a esas alturas es un pequeño motor gramatical, dirigido por una traductora a la que no se le permite ver la frase.

La rama abarca por tanto la frase entera. Una variante para un contenedor, otra para todo lo demás, y la traductora escribe cada una como una frase en su propio idioma en lugar de rellenar un hueco en una frase inglesa. La rama genérica es idéntica byte a byte al valor que sustituyó, así que nada de lo que ya era correcto se movió.

La rama se llama container y no lxc, porque la pestaña de copias de seguridad ya usaba exactamente ese nombre para exactamente esa pregunta, y su modelo de vista llama al campo igual. Dos formas de escribir la misma distinción dentro de un mismo catálogo cuestan un poco cada vez y son una conjetura cada vez: la ronda siguiente tiene que averiguar cuál de las dos se aplica aquí.

Una selección cuyas ramas coinciden es invisible

Una prueba que comprueba la forma de estas claves, que se analizan, que existen ambas ramas, que el argumento se escribe igual en todas partes, pasa con una selección cuyas dos ramas dicen exactamente lo mismo. Ese es justamente el defecto que se está reparando, así que una comprobación de forma vale aquí muy poco.

La guarda dibuja por tanto ambas ramas, en los nueve idiomas, y exige que la rama de contenedor de una frase inglesa ya no contenga la palabra que debía eliminar. Exige además que la propia lista no se haya vaciado en silencio: una guarda sobre una lista vacía es el verde más barato del software.

Veintiuna pruebas, y cada una se demostró haciéndola fallar primero. Es la misma forma que la guarda sobre las palabras de cobertura de copias, y por la misma razón: el fallo interesante no es un error de sintaxis, sino una frase gramaticalmente perfecta y fácticamente falsa.

La frase que nunca fue verdad

Una de las catorce no era en absoluto un problema de palabras.

La pestaña de red tiene una línea para cuando aún no se ha observado ninguna dirección. Decía, en esencia: aún no se ha visto nada, el agente invitado tiene que estar en marcha dentro de la VM.

En un contenedor esa frase se muestra siempre, porque el agente no lee direcciones de contenedores en absoluto. La función de observación devuelve una lista vacía para ese tipo de invitado antes de preguntar nada. La frase aparecía por tanto de forma permanente, y mientras estuvo ahí decía dos cosas que no eran ciertas: que aquello podría cambiar en cuanto algo arrancara, y que lo que lo cambiaría es un agente invitado, que un contenedor nunca tiene.

Nadie había mentido. La frase se escribió para máquinas virtuales, para ellas era correcta, y se llegaba a ella por un camino de código que había ganado un segundo punto de llamada. Esa es la manera corriente en que una pantalla acaba diciendo algo falso: no porque alguien escriba una falsedad, sino porque una frase verdadera se muestra en una situación de la que nunca trató.

La rama de contenedor dice lo que ocurre de verdad, es decir, que las direcciones dentro de un contenedor no se leen. No ofrece esperanza de que el número aparezca más tarde, porque no la hay.

Frase antiguaQué tenía de malo en un contenedor
PromesaAún no se ha visto nadaNo va a cambiar; el código nunca mira
CausaEl agente invitado debe estar en marchaLos contenedores no tienen uno
ArregloArranque el agente invitadoNo hay nada que arrancar

Dos formas en que la medición salió verde por el motivo equivocado

La comprobación de navegador de todo esto se escribió primero y estuvo mal dos veces, de maneras que merece la pena nombrar porque ambas producen un resultado aprobado.

La primera: la comprobación leía el texto visible de la página y buscaba la palabra «contenedor». La encontró. Estaba en el nombre del plan de prueba, zz-k7-containerplan, sembrado por la propia comprobación, mientras la frase tres líneas más abajo seguía diciendo «la VM». Una prueba que siembra un montaje y luego busca en toda la página una palabra que ese montaje contiene está midiendo su propia preparación. El arreglo es un gancho en el elemento que lleva de verdad la frase, para que la afirmación solo pueda satisfacerla aquello de lo que trata.

La segunda era un defecto real que la primera había tapado. El tipo que gobierna la selección se derivaba de una variable del formulario de pedido que lleva una condición sobre la ubicación, si el plan tiene dónde ejecutarse. Un plan de contenedor sin ubicación salía por tanto como «no es un contenedor», y la página decía «la VM» en un pedido de contenedor. El tipo viene ahora del propio tipo de cómputo del plan más lo que eligió el cliente, y ninguno de los dos sabe nada de ubicación.

Esa es la forma más general: un valor que casualmente va de la mano con lo que quiere saber no es el valor que quiere. Coincide hasta el día en que deja de coincidir, y ese día no falla nada, simplemente dice lo otro.

Cuando dos constantes comparten nombre

Otra cosa menor de la misma ronda, en una guarda completamente distinta, porque ilustra bien cómo una comprobación estática puede perder pie.

Tenemos una guarda que resuelve por nombre, en todo el proyecto, la forma de argumentos de las constantes de traducción compartidas, para que una clave usada con un objeto compartido siga estando cubierta. Dos componentes distintos definían cada uno una constante where con contenidos distintos. La guarda, que resuelve por nombre, ya no podía decir a cuál se refería cada llamada, y las abandonó todas, incluidas llamadas de un tercer fichero que no tenía nada que ver con ninguna de las dos.

Renombrar una de ellas lo arregló. La lección no va de nombres: va de que una guarda que resuelve símbolos por nombre entre ficheros tiene un modo de ambigüedad, y ese modo es el silencio. La comprobación no informa de «dos candidatas», no informa de nada sobre esas llamadas, y el recuento de claves cubiertas baja en una cantidad que nadie vigila.

Lo que se dejó como estaba, a propósito

Tres cosas quedaron como estaban, y escribir por qué forma parte del trabajo.

Una frase le dice a un cliente que reinstalar destruye todo lo que hay en los discos de la máquina. En un contenedor eso no es un problema de palabras: reinstalar un contenedor conserva, borra o excluye por punto de montaje, y el reemplazo honesto es una afirmación sobre qué puntos de montaje caen en qué grupo. Eso es una pantalla, no una traducción, y pertenece a la ronda que la construya.

Una indicación del formulario de pedido llama a un campo el nombre de host de la máquina virtual, en un contexto en el que lo que se nombra es una cuenta de alojamiento. Eso es una decisión de contenido y no una cuestión de contenedores, y fingir lo contrario habría colado un cambio de redacción dentro de un arreglo de palabras.

Y el contador de licencias sigue diciendo VM, porque eso es lo que cuenta. La unidad por la que se factura a un cliente no es la unidad que un cliente mira, y renombrarla en silencio haría que una línea de factura dejara de coincidir con un número de una página.

Lo que dejaríamos por escrito

  1. Ponga la rama alrededor de la frase, no alrededor del sustantivo. La sustitución de palabras funciona en inglés y falla en todas partes por artículos y casos.
  2. Reutilice el nombre de rama que ya existe. Dos formas de escribir una distinción en un catálogo son una conjetura para cada ronda futura.
  3. Dibuje ambas ramas en la prueba. Una selección cuyas ramas coinciden pasa cualquier comprobación que solo mire la forma.
  4. Compruebe contra un gancho en el elemento, no contra la página entera. Un nombre de montaje que contiene la palabra buscada es luz verde para nada.
  5. Un valor correlacionado no es el valor. Derivar un tipo de recurso de algo que lleva una condición de ubicación funciona hasta que un plan no tiene ubicación.
  6. Una guarda que resuelve por nombre enmudece ante un nombre ambiguo. No informa de la ambigüedad, no informa de nada.
  7. Una frase puede ser falsa sin que nadie haya escrito una falsedad. Cierta para un caso, alcanzada desde un segundo punto de llamada, es la ruta habitual.

Para que quede claro qué es esto: las catorce claves están en producción en los nueve idiomas y vigiladas. Siete de esos idiomas solo han pasado por la prueba de dibujado y no por una segunda lectora, y nada de esto se ejecutó contra un Proxmox real en esta ronda.

Del trabajo de plataforma en Provibr. Qué difiere realmente entre los dos tipos de invitado está en VM o contenedor en Proxmox, y por qué reinstalar un contenedor es un reemplazo y no una reparación está en reinstalar un contenedor es un reemplazo.

Empiece con un host y un agente

Cree una cuenta, instale el agente con un solo comando y conecte su primer host de Proxmox. El periodo de prueba dura 14 días y no pide ningún dato de pago.