Capire meglio, scegliere con criterio
Approfondimenti pratici e ragionati su formati, testo, sicurezza, identificatori e concetti che incontriamo ogni giorno nel software.
Base64: codifica binaria in formato testuale
Come Base64 trasforma byte in testo ASCII, perché aumenta la dimensione e quali varianti usare nei diversi protocolli.
Bit, byte, nibble, fixed-width integer e complemento a due
Come i calcolatori rappresentano bit e interi signed, e perché larghezza e interpretazione cambiano il valore osservato.
Encoding, hashing e cifratura: differenze e casi d'uso
Tre trasformazioni spesso confuse: rappresentazione, digest unidirezionale e protezione crittografica reversibile con chiave.
Escaping vs sanitization: contesti HTML e prevenzione XSS
Perché escaping contestuale e sanitization risolvono problemi diversi e come evitare interpretazioni attive di input non affidabile.
Funzioni hash: digest, integrità e sicurezza
Proprietà delle funzioni hash crittografiche, SHA, collisioni, HMAC, password hashing e differenze dalla cifratura.
Grapheme cluster, code point e byte: cosa significa davvero “carattere”
Perché un carattere visibile può contenere più code point e molti byte, e come scegliere la metrica corretta.
HMAC, checksum e verifica dell'integrità
Differenze tra rilevazione accidentale degli errori, digest crittografici e autenticazione dei messaggi con segreto condiviso.
HTML entities, escaping e sicurezza del markup
Entità HTML, riferimenti numerici, escaping contestuale, sanitization e relazione con la prevenzione XSS.
JSON Schema: descrivere e validare strutture dati
Come JSON Schema esprime tipi, proprietà, vincoli, composizione e compatibilità dei documenti JSON.
JSON vs YAML vs XML: quale formato scegliere
Confronto ragionato tra JSON, YAML e XML per API, configurazione, documenti, schema e interoperabilità.
JSON: sintassi, tipi, struttura e validazione
Una guida completa a JSON come formato di scambio dati: grammatica, tipi, parsing, serializzazione, validazione e interoperabilità.
Naming conventions nel software: camelCase, PascalCase, snake_case e kebab-case
Come scegliere e applicare convenzioni di naming coerenti tra codice, API, file, URL e database.
Normalizzazione URI, reserved/unreserved ed equivalenza
Quando due URI possono essere considerati equivalenti e perché canonicalization e percent-encoding richiedono contesto.
Query string e application/x-www-form-urlencoded
Struttura delle query string, coppie nome-valore, percent-encoding e differenze della codifica dei form HTML.
Serializzazione e deserializzazione dei dati
Come strutture in memoria diventano rappresentazioni trasferibili e quali problemi emergono tra tipi, versioni e sistemi diversi.
Sistemi numerici: binario, ottale, decimale ed esadecimale
Basi posizionali, conversioni, rappresentazioni informatiche e differenza tra valore matematico e interpretazione dei bit.
Unicode e UTF-8: code point, byte e caratteri
Come Unicode assegna code point e come UTF-8 li rappresenta in byte, con implicazioni per testo, storage e interoperabilità.
Unix timestamp, Epoch e rappresentazione del tempo
Come rappresentare istanti nel tempo, distinguere UTC, offset e timezone e gestire secondi, millisecondi e ISO 8601.
URL, URI e percent-encoding
Come sono strutturati URI e URL, quali caratteri hanno significato sintattico e quando entra in gioco il percent-encoding.
UTC, offset, timezone, DST e ISO 8601
Come distinguere istanti assoluti, offset e regole geografiche per rappresentare correttamente il tempo nei sistemi software.
UUID v1, v4 e v7: generazione, ordinamento, collisioni e design degli ID
Confronto tra versioni UUID e criteri per scegliere identificatori casuali, temporali o ordinabili.
UUID: identificatori univoci, versioni e utilizzi
Struttura degli UUID, variant e versioni, probabilità di collisione e criteri per scegliere un identificatore distribuito.
XML: elementi, attributi, namespace e documenti
Fondamenti di XML: struttura ad albero, attributi, namespace, encoding, validazione e interoperabilità.
YAML: sintassi, tipi e strutture
Una guida a YAML come formato di serializzazione leggibile: scalari, collezioni, indentazione, anchor e insidie di parsing.