Blog ·
Fuori linea accanto a un titolo in linea
Un valore predefinito prudente è giusto da solo e falso accanto a un fatto. Rifare una pagina di agente a schede ha reso visibili due di queste contraddizioni.
Di Provibr
Che un agente sia connesso non è una colonna. È una chiave in Redis con una durata, rinfrescata dal ponte e spinta al browser attraverso un collegamento WebSocket. La colonna della banca dati accanto contiene tutt’altro: se l’agente è iscritto, in attesa o revocato, e questo è amministrazione e non presenza.
Il componente che disegna l’indicatore di connessione parte perciò pessimista. Senza valore iniziale disegna «fuori linea» e diventa verde soltanto quando è arrivata l’istantanea del ponte. È voluto ed è, di per sé, il valore predefinito giusto: dire «connesso» prima di saperlo è peggio che dirlo con un secondo di ritardo.
Di per sé è la parte importante.
Due affermazioni su un solo fatto
Rifare la pagina di dettaglio dell’agente come griglia di schede ha riunito in una sola vista diverse cose che stavano su linguette separate, ed è lì che un valore predefinito prudente smette di essere prudente.
La fascia di salute in cima alla pagina legge la chiave di presenza sul server e si dipinge di verde per un agente connesso. Il contrassegno accanto al nome dell’agente disegna lo stesso fatto dal lato del browser, e senza valore iniziale diceva fuori linea. Più in basso, un pannello sulla macchina ospitante diceva, a chiare lettere, che non si stava misurando nulla perché l’agente era fuori linea, sotto un titolo che diceva che l’agente era in linea.
Nessuna delle tre è falsa isolatamente. Due di esse leggono la stessa chiave di Redis, una la legge nel browser, e nel primo istante dopo il caricamento una ha una risposta e l’altra sta ancora aspettando. Le distribuisca su tre linguette e nessuno se ne accorge. Le metta in una sola schermata e la pagina si contraddice ad alta voce.
La stessa cosa era già accaduta una volta nell’elenco degli agenti, dove una fascia di statistiche contava gli agenti in linea a partire da quelle stesse chiavi e stava sopra schede che dicevano tutte fuori linea finché il collegamento non arrivava. Fu il turno in cui il componente imparò ad accettare un valore iniziale, e la lezione venne annotata allora: di due affermazioni sullo stesso fatto, dalla stessa fonte, nella stessa vista, una è sempre sbagliata.
Come sia fatta la riparazione è noioso. La chiave di presenza viene letta una volta, sul server, e consegnata come valore di partenza al contrassegno dell’intestazione, alla fascia di salute e al pannello dell’ospitante. Il deposito dal vivo vince comunque non appena arriva qualcosa. La regola sottostante non è «faccia girare valori iniziali»; è che un valore predefinito prudente è un’affermazione su un componente isolato, e che nel momento in cui un secondo elemento della stessa vista conosce la risposta, quel valore è diventato la menzogna.
Che cosa mostra la pagina, nell’ordine di cui si ha bisogno
Il resto del turno è stato disposizione, che è un altro lavoro ma non minore. Sei righe, nell’ordine di chi apre questa pagina perché qualcosa non va.
- Se c’è qualcosa che non va, con i quattro fatti che lo decidono.
- I numeri dal vivo: processore, memoria, latenza, tempo di attività.
- Che tipo di macchina è, che cosa sa fare l’agente e dove si va poi.
- L’ultima ora di utilizzo, come grafici con le loro tabelle accanto.
- Che cosa è successo, che cosa è stato misurato e dove sia finito lo spazio su disco.
- Versione e licenza, l’amministrazione sotto.
Giudizio, poi numeri, poi contesto, poi storia, poi amministrazione. La disposizione vive in un proprio file, e il file della pagina resta lo strato dei dati, con la sola questione di quale lettura appartenga a quale linguetta. Grazie a questa separazione il turno successivo che aggiunge una scheda tocca esattamente un posto, e quello che aggiunge una interrogazione tocca l’altro.
Lo schizzo chiedeva una piastrella del disco nella seconda riga. Non c’è, perché il punto di telemetria che l’agente invia porta processore, memoria, tempo di attività e tempo di andata e ritorno, e nient’altro. Le uniche cifre di disco della pagina riguardano la memoria degli artefatti, e stanno sulla scheda di quella memoria. Mettere un numero sotto un’etichetta a cui non appartiene è il modo in cui un cruscotto comincia lentamente a mentire.
Sei cose lasciate fuori, con le loro ragioni
In ciò che non sta su questa pagina sono entrate più decisioni che in ciò che ci sta, e le ragioni appartengono tutte alla stessa famiglia: un comando che non può mantenere la propria promessa è peggio di nessun comando.
Un selettore di intervallo sui grafici. I grafici mostrano l’ultima ora, da una finestra dal vivo. Tutto ciò che è più lungo viene da aggregati preparati, e leggerli su una pagina di sintesi è precisamente ciò che le nostre stesse regole vietano, perché un aggregato non è la stessa misura a un altro ingrandimento. C’è invece un percorso verso una pagina che lo fa per bene.
Ping, riavvio dell’agente e riavvio dell’host come pulsanti. Eseguire una diagnostica richiede un bersaglio, e le regole su quale strumento sia bloccato in quale stato vivono di proposito insieme in un solo posto invece di essere ripetute per pulsante. Le azioni rapide sono quindi collegamenti alla pagina che ha entrambe le cose.
Pulsanti di aggiornamento, licenza e gettone. Il file di licenza porta un segreto, e un segreto appartiene a una schermata e non a tutte quelle che lo nominano.
Un collegamento al registro delle modifiche della versione installata. Il manifesto che l’agente riporta non porta un indirizzo, e inventarne uno dal numero di versione dà un collegamento che si rompe alla prima consegna chiamata in altro modo.
Un collegamento al registro completo. La pagina delle attività non filtra per agente, quindi il collegamento consegnerebbe un elenco che il cliente dovrebbe poi scorrere con l’occhio. È una promessa che la destinazione non può mantenere.
Nomi amichevoli per le capacità dell’agente. Compaiono come le parole che usa il protocollo, secondo una decisione precedente. Un nome amichevole va mantenuto in nove lingue e smette di corrispondere alla parola dei registri il giorno in cui qualcuno rinomina una capacità.
C’è anche un vuoto riservato. Una scheda con il calendario degli aggiornamenti automatici veniva costruita in parallelo, ed è finita sulla linguetta delle impostazioni, perché è un modulo, e lo stesso modulo in due posti di una pagina è precisamente la seconda verità che tutta questa disposizione doveva togliere. Il vuoto resta, con una nota che dice che se la scheda un giorno si sposta qui, si sposta dalle impostazioni e non si aggiunge accanto.
L’avviso che non deve esistere sul dominio proprio di un cliente
Una scheda mostra un invito quando mancano i dati aziendali necessari alla fatturazione. Tre cose che lo riguardano sono state verificate invece che supposte.
Usa il predicato già presente sul cruscotto per «i dati di fatturazione sono completi» e non un secondo scritto qui. Due predicati per una domanda divergono, e il giorno in cui non concordano il cliente vede l’invito su una pagina e non sull’altra.
Compare soltanto per chi può davvero agire, e questo significa il ruolo giusto e la superficie giusta.
E non deve esistere affatto su un dominio di conto, l’ospite a marchio proprio dove entrano i clienti del nostro cliente. Questo è stato misurato con una sessione vera invece che dedotto: sul dominio di conto la pagina degli agenti restituisce 404, perché tutta quella superficie lì è assente per costruzione, e sull’ospite del pannello restituisce 200. Quel 404 non è un controllo d’accesso che afferra qualcosa; la pagina non c’è.
I tre pixel diventati un altro turno
La disposizione è stata misurata su tre larghezze e, sulla più stretta, in tutte e nove le lingue. A 390 e a 1440 non traboccava nulla.
A 768 ogni pagina del pannello nel prodotto era tre pixel più larga della finestra. Non questa pagina: ogni pagina. È una sola lettura, in una lingua e in una notazione di valuta; il turno che ha smontato l’intestazione ha percorso nove lingue in due e ha trovato da otto a trentotto pixel. La causa stava nell’intestazione condivisa, e la cosa onesta è stata annotarlo come compito a sé invece di ripararlo dentro un turno dedicato a un’altra schermata, perché un’intestazione che trabocca a una larghezza in una lingua non è mai un problema di tre pixel. Si è rivelato un errore di categoria su quale larghezza l’intestazione stesse leggendo, e sta in una barra più stretta della finestra.
Che cosa annoteremmo
- Un valore predefinito prudente è un’affermazione su un solo componente. Accanto a un secondo elemento che conosce la risposta, diventa quello falso.
- Due elementi che disegnano un fatto devono condividere il valore di partenza. Lo legga una volta sul server e lo passi giù.
- La presenza non è lo stato. Una è una chiave con una durata, l’altro è amministrazione; una colonna che dice «iscritto» non dice nulla su adesso.
- Tenga la disposizione fuori dallo strato dei dati. Un file per ciò che si legge, uno per dove va, e ogni turno ne tocca uno.
- Non metta un numero sotto un’etichetta a cui non appartiene. Se lo schizzo chiede una piastrella che la telemetria non può riempire, la risposta è: nessuna piastrella.
- Un comando la cui destinazione non può mantenere la promessa è peggio di nessun comando. Un collegamento al registro che non sa filtrare, un collegamento alle modifiche senza indirizzo.
- Misuri l’assenza con una sessione vera. «Questa pagina non esiste su quell’ospite» è un’affermazione che merita una richiesta invece di una lettura del codice.
Per chiarezza su che cosa sia: la pagina è costruita e funziona, misurata con un passaggio di accessibilità e una scansione da browser in entrambe le disposizioni di ospite. È stata esercitata soltanto contro un server di sviluppo, quindi qui non si dice nulla sullo spostamento di impaginazione su una compilazione di produzione, e il collegamento dal vivo era bloccato durante la misura, quindi il percorso della presenza è provato dal lato server e non da capo a capo.
Dal lavoro di piattaforma su Provibr. Il difetto dell’intestazione che questa pagina ha scoperto si trova in una barra più stretta della finestra, e come gli agenti si tengono aggiornati senza che nessuno prema nulla in aggiornato alle tre di notte.