Engineering

Una raccolta di conoscenze tecniche e progetti da esperienza professionale, studio e lavoro pratico.

In esplorazione: Architettura AWS

Esplora per area

Ogni area collega le competenze che uso alle note, agli esperimenti e ai progetti che le supportano.

Backend

Node.js in produzione in Artshell dal 2019; ruoli di full-stack engineering dal 2016.

Uso: Node.js · TypeScript

2 note · 1 esperimento · nessun progetto

Cloud & Infrastructure

Uso: AWS · AWS CDK · Docker

2 note · nessun esperimento · nessun progetto

Data

Uso: MongoDB

In studio: PostgreSQL

3 note · nessun esperimento · 1 progetto

Note

Scrittura tecnica focalizzata su un concetto, un problema o un'intuizione specifica.

Capire la cache dei layer di Docker

In evidenzaCloud & Infrastructure

Come BuildKit decide che uno step è un cache hit, perché una riga cambiata ricostruisce tutto ciò che sta sotto, cosa mostra --progress=plain, e dove leggere la cache a occhio smette di bastare.

  • docker
  • buildkit
  • build-cache
  • layer-invalidation
  • dockerfile
  • image-size

Capire il budget di istanziazione dei tipi in TypeScript

In evidenzaBackend

Su cosa spende tempo il checker: istanziazioni, confronti strutturali, la relation cache; cosa mostrano --extendedDiagnostics e --generateTrace; e dove leggere una trace smette di dirti cosa fare.

  • typescript
  • compiler-performance
  • type-instantiations
  • trace-analysis
  • type-inference
  • conditional-types
  • generics

Capire i query plan di MongoDB

In evidenzaData

Il ragionamento dietro mongoose-lens: come MongoDB costruisce un query plan, cosa mostra davvero explain() e dove un'euristica basata sulla lettura del piano smette di bastare.

  • mongodb
  • mongoose
  • query-planner
  • indexes
  • explain
  • query-optimization
  • esr-indexing-rule

Capire la dimensione delle immagini Docker

Cloud & Infrastructure

Perché un RUN successivo che cancella file non riduce l'immagine, perché il multi-stage è la leva vera, e come leggere docker history per trovare il peso.

  • docker
  • image-size
  • multi-stage-builds
  • dockerfile
  • buildkit

Capire la distribuzione dei tipi condizionali e infer

Backend

Quando un tipo condizionale distribuisce su una union e quando no, come [T] extends [U] lo disattiva, quale posizione di infer vince, e perché la forma distributiva amplifica il costo.

  • typescript
  • conditional-types
  • distributive-conditional-types
  • infer
  • type-inference
  • generics
  • compiler-performance

Capire gli index bounds di MongoDB

Data

Cosa contiene indexBounds per predicati di uguaglianza, range, $in, $or e multikey, perché keysExamined è il vero costo di un filtro, e l'unico caso in cui un COLLSCAN è inevitabile.

  • mongodb
  • indexes
  • query-planner
  • explain
  • index-bounds
  • multikey
  • query-optimization

Capire la selezione degli indici in MongoDB

Data

Come il query planner di MongoDB sceglie un indice, cosa leggere nell'output di explain e perché un indice 'corretto' viene comunque ignorato.

  • mongodb
  • indexes
  • query-planner
  • explain
  • esr-indexing-rule

Esperimenti

Indagini pratiche, benchmark o esperimenti tecnici.

Esperimento sul costo del type-check in TypeScript

Backend

Un protocollo basato su fixture deterministiche per misurare come il conteggio delle istanziazioni e il check time di tsc reagiscono alla dimensione delle union, alla lunghezza delle builder chain, alla posizione della ricorsione e alla larghezza delle intersezioni, con --extendedDiagnostics e --generateTrace.

  • typescript
  • compiler-performance
  • type-instantiations
  • trace-analysis
  • conditional-types
  • distributive-conditional-types
  • infer

Progetti

Implementazioni pratiche che dimostrano una o più aree tecniche.

mongoose-lens

Sviluppato e mantenuto da me

Interceptor per query lente e advisor di indici per Mongoose 8+. Esegue automaticamente explain() sulle query lente, rileva gli stage COLLSCAN/SORT e suggerisce indici ottimali secondo la regola ESR.

Engineering | Mauro Cunsolo