162 29/03/2026 07/04/2026 22 min

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1. CODICE & LOGICA GENERALE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Abstraction
  Nascondere i dettagli implementativi e mostrare solo
  l'interfaccia necessaria. "Non ti interessa come funziona
  dentro, solo cosa fa."

Encapsulation
  Raggruppare dati e funzioni correlate in un unico oggetto,
  nascondendo lo stato interno.

Inheritance (Ereditarietà)
  Una classe eredita proprietà e metodi da un'altra.
  Figlio eredita dal genitore.

Polymorphism
  Stesso metodo si comporta diversamente a seconda
  dell'oggetto che lo esegue.

Interface
  Contratto che definisce quali metodi una classe DEVE
  implementare, senza specificare come.

Singleton
  Pattern che garantisce che esista una sola istanza
  di una classe in tutta l'applicazione.

Factory
  Pattern che crea oggetti senza specificare la classe
  esatta. "Dammi un oggetto di tipo X" → la factory
  decide quale classe usare.

Observer
  Pattern dove un oggetto notifica automaticamente
  tutti i "subscriber" quando cambia stato.

Dependency Injection
  Passare le dipendenze a una classe dall'esterno
  invece di crearle dentro. Rende il codice testabile.

Inversion of Control (IoC)
  Principio per cui il controllo del flusso viene
  delegato a un framework esterno invece che al tuo codice.

Duck Typing
  "Se cammina come un'anatra e starnazza come un'anatra,
  è un'anatra." → non importa il tipo, importa il comportamento.

Type Coercion
  Conversione automatica di tipo. Es: "5" + 3 = "53" in JS
  (stringa + numero → stringa).

Truthy / Falsy
  Valori che vengono trattati come true/false in un
  contesto booleano. Es: 0, "", null, undefined = falsy.

Short-circuit Evaluation
  In A && B, se A è falso B non viene valutato.
  In A || B, se A è vero B non viene valutato.

Guard Clause
  Condizione all'inizio di una funzione che esce subito
  se i prerequisiti non sono soddisfatti. Evita annidamenti.

Early Return
  Uscire da una funzione prima della fine quando
  una condizione è già soddisfatta. Rende il codice piatto.

Recursion
  Funzione che chiama sé stessa. Richiede sempre un caso
  base per fermarsi (altrimenti stack overflow).

Immutability
  Un valore non può essere modificato dopo la creazione.
  Si crea una nuova copia con le modifiche.

Side Effect
  Quando una funzione modifica qualcosa fuori dal suo
  scope (variabili globali, DB, file system, ecc.).

Pure Function
  Funzione senza side effects: dati gli stessi input,
  restituisce sempre lo stesso output.

Higher-order Function
  Funzione che accetta altre funzioni come parametri
  o ne restituisce una. Es: map(), filter(), reduce().

Closure
  Funzione che "ricorda" le variabili del contesto dove
  è stata creata anche dopo che quel contesto è terminato.

Callback
  Funzione passata come argomento, da eseguire
  successivamente o su un evento.

Generator
  Funzione speciale che può essere "messa in pausa"
  e ripresa. Produce valori uno alla volta con yield.

Spread Operator
  Espande un array/oggetto nei suoi elementi.
  Es: [...array1, ...array2] unisce due array.

Destructuring
  Estrarre valori da array/oggetti in variabili separate.
  Es: const { nome, eta } = utente;

Regex (Regular Expression)
  Sequenza di caratteri che definisce un pattern di ricerca.
  Es: /^\d{4}-\d{2}-\d{2}$/ valida una data YYYY-MM-DD.

Glob Pattern
  Pattern per cercare file con wildcards.
  Es: **/*.php = tutti i file PHP in tutte le sottocartelle.

Bitmasking
  Usare operazioni bit-a-bit per memorizzare più flag
  booleani in un singolo intero.

Namespace
  Raggruppare codice sotto un nome per evitare
  conflitti tra classi/funzioni con lo stesso nome.

Trait
  In PHP: blocco di codice riutilizzabile che può
  essere incluso in più classi (no ereditarietà multipla).

Magic Methods
  In PHP: metodi speciali con __ che si attivano
  automaticamente. Es: __construct(), __get(), __toString().

Match Expression
  In PHP 8+: alternativa a switch, più precisa
  (confronto stretto, restituisce valore).


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  2. PATTERN & ARCHITETTURA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

MVC (Model-View-Controller)
  Separazione in tre layer: Model (dati), View (HTML),
  Controller (logica). Ogni parte ha una responsabilità.

Repository Pattern
  Layer tra la logica di business e il database.
  Il codice non scrive query direttamente, le delega
  al repository.

Service Layer
  Strato che contiene la logica di business pura,
  separata da controller e DB.

ORM (Object-Relational Mapping)
  Libreria che mappa tabelle DB in oggetti del codice.
  Es: invece di scrivere SQL scrivi $user->save().

Middleware
  Strato tra richiesta e risposta che applica logica
  trasversale: autenticazione, logging, rate limit, CORS.

Webhook
  Il tuo server riceve una notifica HTTP da un servizio
  esterno quando succede qualcosa. Es: pagamento ricevuto.

Message Queue
  Sistema dove i messaggi/task vengono messi in coda
  ed elaborati in modo asincrono da worker separati.

Pub/Sub (Publish/Subscribe)
  Pattern dove un publisher invia messaggi senza sapere
  chi li riceve. I subscriber ascoltano ciò che gli interessa.

Event-driven Architecture
  Il sistema reagisce a eventi invece di eseguire
  flussi sequenziali fissi.

Monolith
  Applicazione dove tutto il codice è in un unico
  progetto/processo deployato insieme.

Microservices
  Architettura dove l'applicazione è divisa in servizi
  piccoli e indipendenti che comunicano via API/eventi.

API Gateway
  Punto di ingresso unico per tutte le API, che gestisce
  autenticazione, routing, rate limiting.

WebSocket
  Connessione bidirezionale persistente tra client e server.
  Usata per chat, notifiche real-time.

SSE (Server-Sent Events)
  Il server invia aggiornamenti al client in modo
  unidirezionale su una connessione HTTP tenuta aperta.

Long Polling
  Il client fa una richiesta HTTP e il server la
  tiene aperta finché non ha dati da inviare.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  3. PERFORMANCE & OTTIMIZZAZIONE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Bottleneck
  Il punto del sistema più lento che limita le
  performance dell'intero flusso.

Profiling
  Analizzare il codice in esecuzione per capire dove
  viene speso il tempo e la memoria.

Benchmarking
  Misurare le performance in condizioni controllate
  per confrontare soluzioni diverse.

Throughput
  Quante richieste/operazioni il sistema riesce a
  elaborare per unità di tempo.

Latency
  Tempo che passa tra l'invio di una richiesta e
  la ricezione della risposta.

TTFB (Time to First Byte)
  Tempo che il browser aspetta prima di ricevere
  il primo byte di risposta dal server.

LCP (Largest Contentful Paint)
  Metrica che misura quando il contenuto principale
  della pagina diventa visibile. Core Web Vital.

CLS (Cumulative Layout Shift)
  Misura quanto la pagina "salta" visivamente durante
  il caricamento. Core Web Vital.

FID (First Input Delay)
  Tempo tra la prima interazione dell'utente e la
  risposta del browser. Core Web Vital.

Critical Rendering Path
  Sequenza di passi che il browser esegue per convertire
  HTML/CSS/JS in pixel sullo schermo.

Above the Fold
  Contenuto visibile senza scorrere. Va ottimizzato
  per caricamento immediato.

Preload
  Dire al browser di scaricare una risorsa in anticipo
  perché servirà presto.

Prefetch
  Scaricare in background risorse che probabilmente
  serviranno nella prossima navigazione.

Debounce
  Eseguire una funzione solo dopo che smette di essere
  chiamata per N ms. Es: ricerca live dopo 300ms
  dall'ultima digitazione.

Throttle
  Eseguire una funzione al massimo una volta ogni N ms
  anche se chiamata più spesso. Es: scroll events.

Memoization
  Cachare i risultati di una funzione: stessi parametri
  → stesso risultato senza ricalcolare.

Lazy Loading
  Caricare una risorsa solo quando serve, non subito.
  Es: immagini caricate solo quando entrano nel viewport.

Eager Loading
  Caricare tutto subito in anticipo. Opposto di lazy.

Tree Shaking
  Eliminare dal bundle JS/CSS il codice non usato
  durante la compilazione.

Minification
  Ridurre dimensione di JS/CSS rimuovendo spazi,
  commenti, accorciando nomi variabili.

Bundling
  Unire più file in uno solo per ridurre richieste HTTP.

Transpilazione
  Convertire codice da un linguaggio/versione a un altro.
  Es: TypeScript→JS, SCSS→CSS, PHP8→PHP7.

Sourcemap
  File che collega codice minificato al sorgente originale,
  per debug leggibile in produzione.

FOUC (Flash of Unstyled Content)
  La pagina appare brevemente senza stili prima che
  il CSS venga applicato.

Reflow
  Il browser ricalcola posizioni e dimensioni di tutti
  gli elementi. Operazione costosa, da evitare in loop.

Repaint
  Il browser ridisegna un elemento senza ricalcolarne
  il layout. Meno costoso del reflow.

GPU Compositing Layer
  Elemento spostato su un layer gestito dalla GPU
  (tramite transform/opacity). Migliora animazioni
  ma può causare problemi con backdrop-filter.

Stacking Context
  Contesto CSS che determina l'ordine di sovrapposizione
  (z-index). Creato da opacity, transform, filter,
  isolation, position+z-index, ecc.

Service Worker
  Script JS che gira in background nel browser,
  intercetta richieste di rete, abilita offline/PWA.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  4. DATABASE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Upsert
  INSERT + UPDATE combinati: se esiste aggiorna,
  altrimenti inserisce. SQL: INSERT ... ON DUPLICATE KEY UPDATE.

Backfill
  Popolare retroattivamente dati mancanti su record
  già esistenti. Es: aggiungere colonna e riempirla.

Migration
  Script versionato che modifica lo schema del DB
  in modo controllato e reversibile.

Schema
  Struttura del DB: tabelle, colonne, tipi, relazioni,
  vincoli.

Index (Indice)
  Struttura che velocizza query su una colonna. Senza
  indice → full table scan su tutta la tabella.

Full Table Scan
  Il DB legge ogni riga della tabella per trovare
  i risultati. Lento su tabelle grandi.

Query Plan / Explain
  Analisi di come il DB esegue una query. EXPLAIN in
  MySQL mostra se usa indici o fa table scan.

N+1 Problem
  1 query per la lista + N query per i dettagli di
  ogni elemento. Risolto con JOIN o eager loading.

Transaction
  Gruppo di operazioni che vengono eseguite tutte
  o nessuna (atomicità).

Rollback
  Annullare le modifiche di una transaction fallita,
  riportando il DB allo stato precedente.

Commit
  Confermare definitivamente le modifiche di una
  transaction nel database.

ACID
  Proprietà di una transaction: Atomicity (tutto o niente),
  Consistency (dati sempre validi), Isolation (transazioni
  separate), Durability (i dati salvati rimangono).

Prepared Statement
  Query SQL con parametri separati dal codice.
  Previene SQL injection, migliora performance.

Foreign Key
  Vincolo che garantisce che un valore esista nella
  tabella referenziata. Garantisce integrità referenziale.

JOIN
  Unire righe di più tabelle in base a una condizione.
  INNER: solo corrispondenze. LEFT: tutti della sinistra.

Normalizzazione
  Organizzare il DB per eliminare ridondanze dividendo
  i dati in tabelle correlate.

Denormalizzazione
  Aggiungere ridondanza intenzionale per velocizzare
  le letture, a scapito della complessità di scrittura.

Deadlock
  Due transazioni si bloccano a vicenda aspettando
  che l'altra rilasci una risorsa.

Connection Pool
  Insieme di connessioni DB pre-aperte e riutilizzabili,
  per evitare il costo di aprirne una per ogni richiesta.

Sharding
  Dividere il DB orizzontalmente: dati diversi su
  server diversi, per scalare.

Replication
  Copiare i dati su più server. Master scrive,
  Slave/Replica legge. Per scalabilità e backup.

Stored Procedure
  Blocco di SQL salvato nel DB ed eseguito sul server
  DB, non nell'applicazione.

Trigger
  Procedura automatica che si esegue prima/dopo
  INSERT/UPDATE/DELETE su una tabella.

View
  Query salvata come "tabella virtuale". Semplifica
  query complesse, non salva dati fisicamente.

Cursor
  Meccanismo per scorrere i risultati di una query
  riga per riga invece di caricarli tutti in memoria.

Soft Delete
  Invece di cancellare fisicamente, si imposta un flag
  (deleted_at). Il record rimane nel DB ma è "nascosto".

Optimistic Locking
  Si assume che non ci siano conflitti. Si verifica
  solo al salvataggio con un campo version/timestamp.

Pessimistic Locking
  Si blocca il record durante la lettura per impedire
  modifiche concorrenti. SELECT ... FOR UPDATE.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  5. SICUREZZA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SQL Injection
  Inserire SQL malevolo nell'input utente per manipolare
  il database. Prevenuto con prepared statements.

XSS (Cross-Site Scripting)
  Iniettare JS malevolo nella pagina, eseguito nel browser
  delle vittime. Prevenuto con escaping dell'output.

CSRF (Cross-Site Request Forgery)
  Ingannare un utente autenticato a eseguire azioni
  non volute. Prevenuto con token CSRF.

CSP (Content Security Policy)
  Header HTTP che specifica quali risorse il browser
  può caricare. Limita XSS e injection.

Nonce
  Stringa casuale unica per ogni richiesta. Nel CSP
  autorizza script specifici senza aprire tutto.

Salt
  Stringa casuale aggiunta alla password prima dell'hash,
  per rendere inutili le rainbow tables.

Hash
  Funzione one-way che trasforma dati in una stringa
  di lunghezza fissa. Non reversibile. Es: bcrypt, SHA-256.

Rainbow Table
  Dizionario pre-calcolato di hash → password originali.
  Il salt lo rende inutile.

Brute Force Attack
  Provare tutte le combinazioni possibili finché
  si trova la password giusta.

Dictionary Attack
  Attacco che usa un elenco di password comuni invece
  di provarle tutte.

Session Hijacking
  Rubare il token di sessione di un utente per
  impersonarlo.

Clickjacking
  Ingannare l'utente a cliccare su qualcosa di diverso
  da ciò che vede, tramite iframe invisibili.

CORS (Cross-Origin Resource Sharing)
  Meccanismo che controlla quali domini possono fare
  richieste alla tua API da JavaScript.

JWT (JSON Web Token)
  Token firmato che contiene dati dell'utente.
  Stateless: non serve sessione server-side.

OAuth
  Protocollo che permette accesso a risorse senza
  condividere credenziali. "Login con Google" usa OAuth.

SSO (Single Sign-On)
  Un solo login per accedere a più servizi/applicazioni.

Rate Limiting
  Limitare richieste per IP in un periodo di tempo.
  Previene brute force e scraping.

WAF (Web Application Firewall)
  Firewall applicativo che filtra traffico malevolo
  prima che raggiunga l'app. Es: Cloudflare WAF.

Whitelist
  Lista di ciò che è PERMESSO. Tutto il resto è bloccato.
  Più sicuro della blacklist.

Blacklist
  Lista di ciò che è BLOCCATO. Tutto il resto passa.

Principle of Least Privilege
  Ogni componente/utente ha solo i permessi strettamente
  necessari, niente di più.

Defense in Depth
  Più layer di sicurezza sovrapposti: se uno fallisce
  gli altri proteggono ancora.

Zero-day
  Vulnerabilità scoperta ma non ancora patchata
  dal vendor. "Zero giorni" di protezione.

CVE (Common Vulnerabilities and Exposures)
  Database pubblico di vulnerabilità di sicurezza
  note, ognuna con un codice univoco. Es: CVE-2024-1234.

Penetration Testing (Pentest)
  Test di sicurezza dove si simula un attacco reale
  per trovare vulnerabilità prima degli hacker.

Timing Attack
  Misurare il tempo di risposta per dedurre informazioni
  segrete. Es: confronto password non costante nel tempo.

Sanitizzazione
  Pulire l'input utente rimuovendo/neutralizzando
  caratteri pericolosi prima di usarlo.

Escaping
  Convertire caratteri speciali in entità sicure.
  Es: < → &lt; per HTML, ' → \' per SQL.

Encoding
  Rappresentare dati in un formato diverso.
  URL encoding, Base64, HTML entities, ecc.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  6. JAVASCRIPT & BROWSER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Event Loop
  Meccanismo JS che gestisce l'esecuzione asincrona.
  Controlla call stack e code di messaggi in loop.

Call Stack
  Pila delle funzioni in esecuzione. Quando chiami
  una funzione viene "impilata", quando finisce viene
  "rimossa".

Microtask Queue
  Coda ad alta priorità per Promise e MutationObserver.
  Eseguita prima della macrotask queue.

Macrotask Queue
  Coda per setTimeout, setInterval, eventi DOM.
  Eseguita dopo che lo stack è vuoto.

Promise
  Oggetto che rappresenta il risultato futuro di
  un'operazione asincrona. Stati: pending, fulfilled, rejected.

async/await
  Sintassi per scrivere codice asincrono come se fosse
  sincrono. Dietro le quinte usa Promise.

Fetch API
  API moderna del browser per fare richieste HTTP.
  Sostituisce XMLHttpRequest (XHR).

DOM Manipulation
  Modificare la struttura HTML della pagina via JS:
  creare, modificare, spostare, eliminare elementi.

Event Bubbling
  Un evento su un elemento figlio "sale" verso i
  genitori. onClick su button → attiva anche onClick div.

Event Delegation
  Invece di attaccare listener a ogni elemento figlio,
  ne metti uno solo sul genitore e sfrutti il bubbling.

IntersectionObserver
  API browser che notifica quando un elemento entra/esce
  dal viewport. Usato per lazy load e animazioni scroll.

MutationObserver
  API che osserva modifiche al DOM e notifica quando
  elementi vengono aggiunti/rimossi/modificati.

RequestAnimationFrame (rAF)
  Esegue una funzione prima del prossimo repaint del
  browser. Usato per animazioni fluide (60fps).

Web Worker
  Script JS che gira in un thread separato, senza
  bloccare l'interfaccia utente.

LocalStorage
  Storage nel browser persistente (rimane dopo chiusura).
  Max ~5MB. Sincrono, bloccante.

SessionStorage
  Come LocalStorage ma dura solo per la sessione
  corrente del browser.

IndexedDB
  Database nel browser per grandi quantità di dati
  strutturati. Asincrono.

Polyfill
  Codice che implementa funzionalità moderne su browser
  vecchi che non le supportano.

Shim
  Strato di compatibilità tra due interfacce diverse.
  Più generico del polyfill.

Progressive Enhancement
  Prima si costruisce la versione base (funziona sempre),
  poi si aggiungono miglioramenti per browser moderni.

Graceful Degradation
  Si costruisce per browser moderni, poi ci si assicura
  che funzioni anche senza le feature avanzate.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  7. CSS & UI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Specificity (Specificità CSS)
  Peso di un selettore CSS. Determina quale regola
  "vince" in caso di conflitto. ID > class > tag.

Cascade
  L'ordine in cui le regole CSS vengono applicate.
  Specificità + ordine di dichiarazione + !important.

Box Model
  Ogni elemento HTML è una scatola: content + padding
  + border + margin.

Flexbox
  Sistema CSS per layout monodimensionale (riga o colonna)
  con allineamento flessibile degli elementi.

CSS Grid
  Sistema CSS per layout bidimensionale (righe E colonne).
  Più potente di Flexbox per layout complessi.

Media Query
  Regola CSS che applica stili diversi in base alle
  caratteristiche del dispositivo (larghezza, ecc.).

Breakpoint
  Larghezza a cui il layout cambia. Es: 640px (sm),
  768px (md), 1024px (lg) in Tailwind.

Responsive Design
  Sito che si adatta automaticamente a qualsiasi
  dimensione di schermo.

Mobile-first
  Si progettano prima gli stili per mobile, poi si
  aggiungono per schermi più grandi con min-width.

Critical CSS
  CSS necessario per renderizzare il contenuto
  above the fold, da inline nella pagina per velocità.

Utility-first (es. Tailwind)
  Approccio dove si compone il design usando classi
  piccole e specifiche invece di scrivere CSS custom.

BEM (Block Element Modifier)
  Convenzione naming CSS: .blocco__elemento--modificatore.
  Evita conflitti e rende la struttura esplicita.

CSS Custom Properties (variabili)
  Variabili native CSS dichiarate con --nome: valore
  e usate con var(--nome).

Isolation: isolate
  Proprietà CSS che crea un nuovo stacking context
  senza altri effetti collaterali.

Viewport Units
  Unità CSS relative al viewport: vw (larghezza),
  vh (altezza), vmin, vmax, dvh (dynamic).

calc()
  Funzione CSS per calcoli con unità miste.
  Es: calc(100% - 2rem).

clamp()
  Funzione CSS per valori responsive senza media query.
  clamp(min, preferito, max).

Aspect Ratio
  Proporzione width/height di un elemento.
  aspect-ratio: 16/9 mantiene le proporzioni.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  8. RETE & SERVER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DNS (Domain Name System)
  Traduce nomi dominio in indirizzi IP.
  trgtkls.it → 1.2.3.4

TTL DNS
  Quanto tempo i resolver cachano una risposta DNS
  prima di richiederla di nuovo.

SSL/TLS
  Protocollo di cifratura per HTTPS. TLS è la versione
  moderna e sicura di SSL.

Handshake TLS
  Scambio iniziale per stabilire una connessione cifrata:
  negoziazione algoritmi, scambio certificati, chiavi.

Reverse Proxy
  Server davanti all'applicazione che gestisce SSL,
  redirect, cache, compressione. Es: Nginx davanti a PHP.

Load Balancer
  Distribuisce le richieste su più server backend.

Sticky Session
  Il load balancer manda sempre lo stesso utente
  allo stesso server (per sessioni non condivise).

CDN (Content Delivery Network)
  File statici serviti dal server geograficamente
  più vicino all'utente.

Cache-Control
  Header HTTP che dice al browser/proxy come cachare
  la risposta e per quanto tempo.

ETag
  Hash del contenuto della risposta. Il browser lo
  manda nella richiesta successiva per verificare
  se il contenuto è cambiato.

HTTP/2
  Versione HTTP con multiplexing: più richieste
  sulla stessa connessione in parallelo.

HTTP/3 / QUIC
  Versione HTTP su UDP invece di TCP. Più veloce
  su connessioni instabili (mobile).

Status Code HTTP
  200 OK, 301 Redirect permanente, 302 Temporaneo,
  304 Not Modified, 400 Bad Request, 401 Non autenticato,
  403 Forbidden, 404 Not Found, 429 Too Many Requests,
  500 Server Error, 503 Service Unavailable.

CORS (Cross-Origin Resource Sharing)
  Header che controlla quali domini possono fare
  richieste cross-origin via JS.

Payload
  I dati effettivi trasmessi in una richiesta/risposta,
  esclusi gli header.

Endpoint
  URL specifico di un'API che risponde a un certo tipo
  di richiesta. Es: POST /api/commenti.

REST
  Stile architetturale per API: URL = risorsa,
  metodo HTTP = azione (GET leggi, POST crea, ecc.).

CRUD
  Create, Read, Update, Delete — le quattro operazioni
  base su qualsiasi risorsa.

Idempotente
  Stessa operazione eseguita N volte = stesso risultato
  di eseguirla una volta. GET e DELETE sono idempotenti.

Webhook
  Il tuo server riceve chiamate HTTP automatiche da
  servizi esterni su eventi. Es: notifica pagamento.

Keep-Alive
  La connessione TCP rimane aperta per più richieste
  invece di riaprirla ogni volta.

gzip / Brotli
  Algoritmi di compressione per ridurre dimensione
  delle risposte HTTP prima di inviarle.

VPS (Virtual Private Server)
  Server virtuale dedicato su hardware condiviso.
  Hai root access completo.

SSH (Secure Shell)
  Protocollo per connettersi a server remoti in modo
  sicuro via terminale.

SFTP
  FTP sicuro su SSH per trasferire file al server.

Rsync
  Tool per sincronizzare file tra locale e remoto
  trasferendo solo le differenze.

Port Forwarding
  Redirigere traffico da una porta a un'altra o
  a un altro host.

Daemon
  Processo che gira in background sul server,
  senza interfaccia utente. Es: nginx, mysql, php-fpm.

Systemd
  Sistema di init Linux che gestisce l'avvio dei
  servizi (daemon) e li riavvia se crashano.

Cron Job
  Task programmato che si esegue automaticamente
  a orari/intervalli definiti. Es: ogni giorno alle 3:00.

PHP-FPM (FastCGI Process Manager)
  Gestore di processi PHP. Nginx passa le richieste
  a PHP-FPM che le esegue e restituisce la risposta.

Process Manager
  Software che gestisce processi: li avvia, riavvia
  in caso di crash, monitora memoria/CPU. Es: PM2, supervisord.

Log Rotation
  Rotazione automatica dei file di log per evitare
  che crescano infinitamente. Il vecchio viene compresso.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  9. GIT & VERSIONING
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Commit
  Snapshot del codice in un momento specifico con
  un messaggio che descrive cosa è cambiato.

Branch
  Linea di sviluppo separata dal main. Permette di
  lavorare su feature senza toccare il codice stabile.

Merge
  Unire i cambiamenti di un branch in un altro.

Rebase
  Riscrivere i commit di un branch spostandoli su
  un punto di partenza diverso. Storia più lineare.

Cherry-pick
  Prendere un singolo commit da un branch e applicarlo
  su un altro senza fare merge completo.

Squash
  Unire più commit in uno solo. Usato per pulire
  la storia prima del merge.

Stash
  "Mettere da parte" modifiche non ancora committate
  per lavorare su altro, da riprendere dopo.

Tag
  Etichetta su un commit specifico. Usato per marcare
  release (v1.0, v2.3.1).

Hotfix
  Correzione urgente di un bug in produzione,
  fatta direttamente sul branch di release.

Gitflow
  Strategia di branching con branch dedicati per
  feature, release, hotfix, develop, main.

Trunk-based Development
  Tutti lavorano sul main branch con feature piccole
  e frequenti. Alternativa a Gitflow.

Diff
  Differenze tra due versioni di un file o due commit.

Patch
  File che descrive le differenze applicabili altrove.

Conflict
  Quando due branch modificano la stessa parte di
  un file in modo incompatibile. Va risolto manualmente.

.gitignore
  File che elenca cosa Git deve ignorare (non tracciare).
  Es: node_modules/, .env, *.log.

Shallow Clone
  Clonare solo gli ultimi N commit invece di tutta
  la storia. Più veloce per grandi repository.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  10. CI/CD & DEPLOY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CI (Continuous Integration)
  Integrare il codice frequentemente con test automatici
  ad ogni push. Trova i bug subito.

CD (Continuous Delivery/Deployment)
  Automatizzare il deploy in produzione dopo i test.
  Delivery = manuale, Deployment = automatico.

Pipeline
  Sequenza automatica di step: test → build → deploy.
  Si blocca se uno step fallisce.

Environment
  Ambienti separati: development (locale), staging
  (pre-produzione), production (live).

.env file
  File con variabili d'ambiente (credenziali DB, API keys).
  Non va mai committato nel repository.

Feature Flag
  Interruttore nel codice per abilitare/disabilitare
  funzionalità senza deploy. Per rollout graduali.

Canary Deploy
  Rilasciare la nuova versione a una piccola % di utenti
  per testare prima del rollout completo.

Blue-Green Deploy
  Due ambienti identici (blue=attivo, green=nuovo).
  Si switcha il traffico istantaneamente.

Rollback
  Tornare alla versione precedente quando un deploy
  introduce problemi.

Artifact
  File prodotto da una build (zip, docker image, bundle).
  Archiviato e usato per il deploy.

Container (Docker)
  Pacchetto isolato con tutto il necessario per eseguire
  un'applicazione: codice, runtime, dipendenze.

Image Docker
  Template immutabile da cui si creano container.
  Come un blueprint.

Orchestration (Kubernetes)
  Gestione automatica di molti container: avvio,
  scaling, restart, load balancing.

Zero-downtime Deploy
  Deploy senza interruzione del servizio. Gli utenti
  non notano nulla durante l'aggiornamento.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  11. TESTING & QUALITÀ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Unit Test
  Testare una singola funzione/componente in isolamento.
  Veloce, deterministico.

Integration Test
  Testare come più componenti lavorano insieme.
  Più lento ma più realistico.

E2E Test (End-to-End)
  Simulare un utente reale che usa il sito completo.
  Es: Playwright, Cypress.

TDD (Test-Driven Development)
  Prima scrivi il test (fallisce), poi scrivi il codice
  per farlo passare. Ciclo: Red → Green → Refactor.

Mock
  Oggetto finto che simula il comportamento di uno reale
  durante i test. Controllabile e prevedibile.

Stub
  Versione semplificata di un oggetto che restituisce
  valori fissi. Meno intelligente del mock.

Fixture
  Dati di test predefiniti per mettere il sistema
  in uno stato noto prima di un test.

Code Coverage
  Percentuale di codice eseguita durante i test.
  100% coverage non significa zero bug.

Regression Test
  Test che verifica che una modifica non abbia rotto
  qualcosa che funzionava già.

Smoke Test
  Test rapido di base: "il sistema si avvia e risponde?"
  Prima di test più approfonditi.

Load Test
  Simulare molti utenti contemporanei per misurare
  le performance sotto carico.

Stress Test
  Spingere il sistema oltre i limiti per trovare
  il punto di rottura.

Flaky Test
  Test che a volte passa e a volte fallisce senza
  cambiamenti al codice. Problema di timing o stato.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  12. DEBUG & ANALISI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Stack Trace
  Sequenza di chiamate a funzioni che ha portato a un
  errore. Mostra esattamente dove è esploso il codice.

Breakpoint
  Punto dove il debugger si ferma per ispezionare
  variabili e stato del programma.

Memory Leak
  Memoria allocata ma mai rilasciata. Nel tempo
  esaurisce le risorse e crasha il sistema.

Garbage Collection
  Processo automatico che recupera memoria non più
  usata. In PHP avviene automaticamente.

Core Dump
  Istantanea della memoria al momento del crash,
  per analisi post-mortem.

Edge Case
  Caso limite o insolito che raramente si verifica
  ma che può causare bug se non gestito.

Race Condition
  Due processi accedono alla stessa risorsa in
  contemporanea causando risultati imprevedibili.

Off-by-one Error
  Bug classico: iterare uno in più o uno in meno.
  Es: array con 5 elementi iterato 4 o 6 volte.

Null Pointer / NullPointerException
  Tentare di usare una variabile che è null.
  In PHP: "Call to member function su null".

Heisenbug
  Bug che scompare o cambia comportamento quando
  si tenta di osservarlo/debuggarlo.

Regression
  Bug introdotto da una modifica che rompe qualcosa
  che funzionava già.

Fallback
  Comportamento alternativo quando quello principale
  non funziona o non è disponibile.

Defensive Programming
  Scrivere codice che gestisce casi imprevisti e
  non si fida dell'input. Valida sempre.

Assert
  Verificare che una condizione sia vera durante
  l'esecuzione. Se falsa → errore immediato.

Logging
  Registrare eventi, errori e informazioni durante
  l'esecuzione per analisi successiva.

Observability
  Capacità di capire lo stato interno del sistema
  da log, metriche e trace.

Tracing
  Seguire il percorso di una richiesta attraverso
  tutti i componenti del sistema.

Post-mortem
  Analisi di un incidente/bug dopo che è stato risolto,
  per capire causa radice e prevenire recidive.

Root Cause Analysis
  Identificare la causa originale di un problema,
  non solo i sintomi superficiali.

Hotfix
  Correzione urgente e rapida di un bug critico
  in produzione.

Patch
  Correzione specifica per un problema noto.
  Più piccola e mirata di un aggiornamento.

Workaround
  Soluzione temporanea che aggira un problema senza
  risolverlo alla radice. "Pezza" provvisoria.

Technical Debt
  Scelte di sviluppo rapide/scorciatoie che creano
  problemi futuri. Va ripagato con refactoring.

Refactoring
  Ristrutturare il codice senza cambiarne il comportamento
  esterno. Migliora leggibilità e manutenibilità.

Dead Code
  Codice che non viene mai eseguito. Va rimosso per
  evitare confusione.

Code Smell
  Indicatore che qualcosa nel codice potrebbe essere
  migliorato. Non è un bug ma un segnale di problema.

Spaghetti Code
  Codice disorganizzato, difficile da leggere e
  mantenere, con flusso intrecciato e confuso.

Magic Number / Magic String
  Valori hardcoded nel codice senza spiegazione.
  Es: if (status === 3) → 3 non dice nulla.

Hardcoded
  Valore scritto direttamente nel codice invece di
  leggerlo da configurazione o database.

DRY (Don't Repeat Yourself)
  Non duplicare la stessa logica in più posti.
  Una modifica non deve richiedere cambiamenti in N file.

KISS (Keep It Simple, Stupid)
  La soluzione più semplice che funziona è la migliore.
  Evitare complessità inutile.

YAGNI (You Aren't Gonna Need It)
  Non implementare funzionalità "per il futuro" se
  non servono ora. Non ottimizzare prematuramente.

SOLID
  Cinque principi di design OOP: Single responsibility,
  Open/closed, Liskov substitution, Interface segregation,
  Dependency inversion.