Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Lotus Wiper: New Destructive Malware Targets Venezuelan Energy Sector in Geopolitically Motivated Attack
#CyberSecurity
securebulletin.com/lotus-wiper…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Apple Patches iOS Notification Flaw (CVE-2026-28950) That Let the FBI Read Deleted Signal Messages
#CyberSecurity
securebulletin.com/apple-patch…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Addio byte[]: allocazioni a costo zero in .NET Framework con ReadOnlySpan
#tech
spcnet.it/addio-byte-allocazio…
@informatica


Addio byte[]: allocazioni a costo zero in .NET Framework con ReadOnlySpan


Uno dei pattern di ottimizzazione più semplici e meno conosciuti nel mondo .NET è la sostituzione dei campi static readonly byte[] con proprietà static ReadOnlySpan<byte>. Andrew Lock, noto per le sue analisi approfondite su ASP.NET Core e il runtime, ha pubblicato un articolo che conferma un dettaglio fondamentale: questa tecnica funziona anche su .NET Framework, basta il pacchetto NuGet System.Memory. Zero allocazioni, zero costo di startup, nessuna pressione sul garbage collector.

Il problema: allocazioni “gratuite” che non lo sono


Consideriamo un pattern che troviamo in quasi tutte le librerie che manipolano dati binari: signature di file, magic number, header fissi, tabelle di lookup. Tipicamente si scrive:

public static class MyStaticData
{
    private static readonly byte[] ByteField = new byte[] { 1, 2, 3, 4 };
}

Sembra innocuo: un singolo array, allocato una volta sola al caricamento del tipo. Ma in un processo con migliaia di tipi simili — pensiamo a un parser di formati immagine, a una libreria di crittografia, a un framework web — queste allocazioni si sommano. Ogni array è un oggetto gestito: richiede header, richiede tracciamento GC, occupa spazio sulla Gen 2 (perché sopravvive per sempre) e aumenta i tempi di startup.

La soluzione: ReadOnlySpan<byte> come proprietà


La trasformazione è quasi meccanica:

public static class MyStaticData
{
    private static ReadOnlySpan<byte> ReadOnlySpanProp => new byte[] { 1, 2, 3, 4 };
}

Sintatticamente sembra che stiamo allocando un array ogni volta che accediamo alla proprietà. In realtà è esattamente il contrario: il compilatore C# riconosce questo pattern e incorpora i byte direttamente nei metadati dell’assembly, costruendo lo span con un puntatore a quei dati. Non viene mai eseguito newarr.

L’IL generato mostra chiaramente la magia:

IL_0000: ldsflda      int32 '<PrivateImplementationDetails>'::'...'
IL_0005: ldc.i4.4
IL_0006: newobj       instance void valuetype [System.Memory]System.ReadOnlySpan`1<unsigned int8>::.ctor(void*, int32)
IL_000b: ret

I dati vivono in una sezione di sola lettura dell’assembly; lo span viene costruito on-the-fly con pointer + length. È essenzialmente gratuito.

Letterali UTF-8: lo stesso trucco, più ergonomico


A partire da C# 11 (.NET 7), la stessa ottimizzazione si ottiene con i letterali UTF-8:

private static ReadOnlySpan<byte> Utf8Hello => "Hello world"u8;

Il suffisso u8 istruisce il compilatore a codificare la stringa direttamente in UTF-8 nell’assembly. Molto utile per header HTTP, prefissi di protocollo, marker di formato binari — tutti casi in cui storicamente si manteneva una byte[] statica generata da Encoding.UTF8.GetBytes.

I vincoli da rispettare


L’ottimizzazione non si applica in modo uniforme. Vale solo per i tipi a byte singolo:

  • byte[]
  • sbyte[]
  • bool[]

Per gli altri tipi primitivi (int, long, double…) entra in gioco l’endianness: su .NET 7 e successivi c’è RuntimeHelpers.CreateSpan<T>() che la gestisce in modo trasparente, ma su .NET Framework il compilatore emette codice che cache l’array in un campo statico alla prima chiamata. Ancora efficiente, ma non zero-alloc.

Il secondo vincolo è che tutti i valori devono essere costanti a compile-time:

// Anti-pattern: alloca a ogni accesso
private static readonly byte One = 1;
private static ReadOnlySpan<byte> Bad => new byte[] { One, 2, 3, 4 };

Qui One è un campo, non una costante, quindi il compilatore deve costruire l’array a runtime. La differenza tra const byte e static readonly byte diventa improvvisamente importante.

Il terzo vincolo è usare ReadOnlySpan<T>, mai Span<T>:

// Sbagliato: alloca un array mutabile a ogni accesso
private static Span<byte> MutSpan => new byte[] { 1, 2, 3, 4 };

Uno Span<byte> potrebbe essere scritto, e modificare dati immutabili condivisi sarebbe catastrofico. Il compilatore quindi non applica l’ottimizzazione.

Il supporto su .NET Framework


Questa è la parte più interessante: il trucco funziona su .NET Framework 4.6.2+ semplicemente referenziando il pacchetto System.Memory:

<ItemGroup>
  <PackageReference Include="System.Memory" Version="4.6.3" />
</ItemGroup>

La ragione è che l’ottimizzazione è una feature del compilatore, non del runtime: serve solo che ReadOnlySpan<T> esista come tipo, e il pacchetto System.Memory lo fornisce. Chi mantiene librerie multi-target può quindi applicare questa ottimizzazione senza creare codice condizionale #if NET6_0_OR_GREATER.

Collection expressions: la rete di sicurezza


Su C# 12 e successivi le collection expressions offrono protezione a compile-time:

// Compila e non alloca
private static ReadOnlySpan<byte> Safe => [1, 2, 3, 4];

// Errore CS9203 — il compilatore rifiuta
private static Span<byte> Dangerous => [1, 2, 3, 4];

L’errore CS9203 è un salvavita: impedisce di assegnare una collection expression a un tipo Span<T> in contesti static, perché il risultato sarebbe condivisibile e mutabile. Su .NET Framework o su versioni di C# precedenti questa protezione non esiste, quindi serve attenzione in fase di code review.

Quando applicarla nel codice reale


Le candidate ideali sono costanti binarie che vivono in campi static readonly byte[]: magic number (PNG, ZIP, PDF), prefissi protocollari, tabelle di sostituzione, chiavi di test fisse, certificati embedded. Il refactoring è meccanico e non cambia l’API pubblica della classe se la visibility è private.

Attenzione invece ai metodi che accettano byte[]: non possiamo passare uno ReadOnlySpan<byte> a un’API che richiede un array. In questi casi la scelta è tra riscrivere il consumer per accettare ReadOnlySpan<byte> (preferibile) o mantenere l’array tradizionale. Molte API del BCL sono già state aggiornate negli ultimi anni: Stream.Write, HashAlgorithm.ComputeHash, Encoding.GetString accettano tutti ReadOnlySpan<byte> in overload moderni.

Conclusione


Cambiare static readonly byte[] in static ReadOnlySpan<byte> => è uno di quei refactoring che riducono allocazioni e startup con una modifica locale a costo zero. Funziona anche su .NET Framework, quindi vale la pena considerarla durante la manutenzione di codice legacy — un punto che spesso sfugge perché l’ecosistema associa Span<T> esclusivamente a .NET moderno.

Fonte: Removing byte[] allocations in .NET Framework using ReadOnlySpan<T> di Andrew Lock.


Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Checkmarx KICS Docker Hub Repo Hijacked: Trojanized Images and VS Code Extensions Harvest Developer Secrets
#CyberSecurity
securebulletin.com/checkmarx-k…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Il nuovo post di universita-it: Università Link, studenti internazionali al centro: evento a Roma e nuovi percorsi

Qui il post completo: universita.it/universita-link-…

@universitaly

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Quel mattacchione di coPilot...


Ho una versione molto vecchia di Mediawiki a cui tengo molto perché contiene informazioni molto importanti. Per metterla in sicurezza vorrei aggiornarla all'ultima disponibile.

Come prima cosa, tanto per capire a cosa andrei incontro, chiedo a coPilot:

Sai indicarmi una procedura per aggiornare un'installazione di Mediawiki dalla 1.27.1 alla 1.43.8?

Mi risponde:

Sì, certo! Bla bla bla bla bla bla

Il percorso consigliato è:

1.27.1 → 1.35.x (LTS) → 1.39.x (LTS) → 1.43.8 (LTS)

Bla bla bla bla bla bla


A questo punto, conoscendo il mio pollo, non approfondisco neanche la lettura della risposta che mi ha dato e gli chiedo subito:

Sei sicuro di quello che hai scritto?

La risposta:

Domanda più che legittima 👍
Risposta breve: in gran parte sì, ma serve una correzione importante e vale la pena chiarire perché.

E bla bla bla bla bla bla

In soldoni, il percorso che mi aveva suggerito

1.27 → 1.35 → 1.39 → 1.43

non era corretto (dice), quello corretto (dice) sarebbe:

1.27 → 1.31 → 1.35 → 1.39 → 1.43

Siccome conosco il mio pollo, chiedo di nuovo:

Adesso sei proprio sicuro che la risposta sia giusta?

La sua risposta:

Sì — adesso sono sicuro, e ti dico chiaramente perché la risposta precedente non era corretta e qual è quella giusta.

SÌ: puoi aggiornare da MediaWiki 1.27.1 direttamente a 1.35.x (LTS)
👉 NO: non è necessario passare da 1.31
👉 SÌ: l’upgrade complessivo corretto è:
1.27.1 → 1.35.x (LTS) → 1.39.x (LTS) → 1.43.8 (LTS)

E bla bla bla bla bla bla


Vabbé... grazie coPilot... casomai ti faccio sapere. Chiamo io eh!

EDIT: non ho resistito... gli ho chiesto:

Ma secondo te posso fidarmi di uno che cambia continuamente la risposta?

E lui:

Capisco perfettamente la tua obiezione.
Risposta onesta, senza girarci intorno: hai ragione a essere diffidente.
Quindi: puoi fidarti?
Non “per fiducia”, ma solo se quello che dico è verificabile in modo indipendente.
Ed è qui il punto importante.

E bla bla bla bla bla

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Checkmarx nel mirino di TeamPCP: l’immagine Docker ufficiale di KICS trojanizzata per esfiltrare i segreti dell’infrastruttura
#CyberSecurity
insicurezzadigitale.com/checkm…


Checkmarx nel mirino di TeamPCP: l’immagine Docker ufficiale di KICS trojanizzata per esfiltrare i segreti dell’infrastruttura


Si parla di:
Toggle

Il 22 aprile 2026 Docker, Inc. ha rilevato attività sospette sul repository ufficiale checkmarx/kics e ha allertato i ricercatori di Socket. L’analisi ha confermato il peggiore degli scenari per un vendor di security scanner: le immagini Docker ufficiali dello strumento open source KICS (Keeping Infrastructure as Code Secure) erano state sostituite con versioni trojanizzate, progettate per generare, cifrare ed esfiltrare i report di scansione completi insieme a token cloud, credenziali GitHub e chiavi SSH di ogni pipeline CI/CD che le eseguiva. Poche ore dopo, l’account @pcpcats rivendicava l’operazione: «Thank you OSS distribution for another very successful day at PCP inc.»

Non è la prima volta che Checkmarx finisce nel mirino di TeamPCP. A marzo 2026 lo stesso gruppo aveva compromesso due workflow GitHub Actions di Checkmarx e plugin distribuiti tramite OpenVSX, colpendo nella stessa ondata anche Trivy e LiteLLM. L’attacco di aprile rappresenta però un salto qualitativo: non si limita più al codice sorgente o agli action, ma colpisce direttamente i binary artifact distribuiti ufficialmente dal vendor, trasformando uno strumento che gli ingegneri installano proprio per cercare vulnerabilità in un vettore di furto di segreti su scala globale.

Che cos’è KICS e perché è un bersaglio ideale


KICS è uno scanner open source per Infrastructure-as-Code mantenuto da Checkmarx, ampiamente integrato nelle pipeline CI/CD per rilevare misconfiguration in Terraform, CloudFormation, Ansible, Kubernetes manifests e Dockerfile. Per sua stessa natura, viene eseguito con accesso di lettura all’intero repository, ai file di configurazione, ai secret dell’ambiente di build e spesso alle credenziali cloud a breve durata emesse dal provider di CI. Compromettere KICS significa ottenere, per ogni installazione infetta, una vista privilegiata sui crown jewels della pipeline.

Il vettore Docker Hub: tag sovrascritti e un v2.1.21 fantasma


Gli attaccanti hanno sovrascritto tag esistenti del repository checkmarx/kics — tra cui alpine, latest, debian, v2.1.20 e v2.1.20-debian — e hanno introdotto un tag v2.1.21 che non corrisponde ad alcun rilascio ufficiale del progetto. Questa tecnica è particolarmente insidiosa: ogni sistema che effettua docker pull checkmarx/kics:latest o che aggiorna l’immagine di base nei workflow di CI scarica silenziosamente la versione compromessa, senza allarmi da parte dei tool di dipendency scanning che si fidano del nome del repository ufficiale.

Il binario ELF di KICS all’interno dell’immagine è stato modificato per mantenere la funzionalità legittima (la scansione si completa senza errori, non ci sono segnali visibili di compromissione nei log) e aggiungere in parallelo una routine di raccolta dati che genera un report di scansione non censurato, lo cifra e lo invia a un endpoint esterno. In pratica, i file di configurazione che contengono password, token e connection string — normalmente redatti dai report pubblici di KICS — vengono esportati in chiaro verso l’infrastruttura dell’attaccante.

L’estensione VS Code e il payload mcpAddon.js


La campagna non si ferma alle immagini Docker. Socket ha identificato malware anche nelle estensioni Checkmarx per Visual Studio Code pubblicate sul marketplace Microsoft e su OpenVSX. Le versioni compromesse sono checkmarx.cx-dev-assist@1.17.0 e @1.19.0, oltre a checkmarx.ast-results@2.63.0 e @2.66.0 (la 1.18.0 risulta pulita, con il malware temporaneamente rimosso nel ciclo di release).

Il meccanismo è chirurgico: gli attaccanti hanno iniettato un commit retrodatato (68ed490b) nel repository Checkmarx/ast-vscode-extension contenente un file di circa 10 MB in modules/mcpAddon.js. Il modulo viene stageed per l’esecuzione runtime tramite l’interprete Bun, una scelta che riduce la probabilità di rilevazione rispetto all’esecuzione tradizionale in Node.js e permette di eseguire codice JavaScript con minore scrutinio da parte degli EDR endpoint.

Cosa ruba realmente mcpAddon.js


Il payload è un infostealer di caratura operativa avanzata. Esegue comandi nativi sulla macchina della vittima per raccogliere un dossier completo di credenziali:

  • Token di autenticazione GitHub tramite gh auth token
  • Credenziali AWS dai file di configurazione standard
  • Token Azure tramite az account get-access-token e azd auth token
  • Configurazioni Google Cloud tramite gcloud config config-helper
  • Token npm dai file .npmrc dell’utente
  • Chiavi SSH e file di configurazione
  • File di configurazione di Claude Code e di altri MCP client
  • Variabili d’ambiente selezionate del processo

L’inclusione esplicita dei file di configurazione MCP è un segnale che TeamPCP sta mappando non solo le supply chain tradizionali, ma anche l’ecosistema emergente degli agenti AI — che a loro volta conservano token per molteplici servizi di terze parti.

Esfiltrazione via repository GitHub pubblici: l’ingegno del «vocabolario Dune»


L’aspetto più creativo dell’operazione riguarda l’esfiltrazione. Invece di esfiltrare direttamente verso un C2 facilmente bloccabile, il malware crea repository GitHub pubblici con nomi casuali costruiti dal pattern <word>-<word>-<3 digits>, attingendo a un vocabolario ispirato all’universo di Dune — «gesserit», «melange», «fedaykin», «ornithopter», «atreides», «sandworm». Ogni repository ospita tre file: envelope con il payload cifrato, key con la chiave di decifratura (a sua volta cifrata), e token con un identificativo che lega il furto alla vittima.

I messaggi di commit incorporano token aggiuntivi secondo il pattern «LongLiveTheResistanceAgainstMachines:<encoded>», uno slogan ricorrente nel folklore di TeamPCP. Questa architettura rende la rilevazione molto più complessa: il traffico di esfiltrazione è indistinguibile dal normale uso di GitHub da parte di sviluppatori.

Il workflow format-check.yml e l’abuso di toJSON(secrets)


Nell’operazione di marzo, TeamPCP aveva già dimostrato padronanza dei GitHub Actions: il workflow maligno .github/workflows/format-check.yml sfruttava l’espressione ${{ toJSON(secrets) }} per serializzare tutti i segreti del repository e dell’organizzazione in un artefatto JSON scaricabile per 90 giorni. È una tecnica di supply chain attack elegante e sottovalutata, perché non richiede di esfiltrare alcunché verso infrastruttura esterna: GitHub stesso ospita il bottino, che diventa scaricabile con le sole credenziali dell’attaccante.

Propagazione npm via token rubati


Una volta ottenuti i token npm delle vittime, il malware cerca automaticamente pacchetti scrivibili interrogando l’endpoint /-/org/<user>/package e, in fallback, effettua ricerche con https://registry.npmjs.org/-/v1/search?text=maintainer:<user>&size=250. La logica è quella classica dei self-replicating npm worm già osservati in campagne come Shai-Hulud: ogni sviluppatore colpito diventa un potenziale vettore per nuove pubblicazioni malevoli.

Indicatori di Compromissione

== Hash ==
mcpAddon.js
  SHA256  24680027afadea90c7c713821e214b15cb6c922e67ac01109fb1edb3ee4741d9
  SHA1    2b12cc5cc91ec483048abcbd6d523cdc9ebae3f3
  MD5     d47de3772f2d61a043e7047431ef4cf4

kics (ELF binary trojanizzato)
  SHA256  2a6a35f06118ff7d61bfd36a5788557b695095e7c9a609b4a01956883f146f50
  SHA1    250f3633529457477a9f8fd3db3472e94383606a
  MD5     e1023db24a29ab0229d99764e2c8deba

== Docker tag compromessi (checkmarx/kics) ==
alpine, latest, debian, v2.1.20, v2.1.20-debian, v2.1.21 (fake)

== Index manifest digest ==
sha256:2588a44890263a8185bd5d9fadb6bc9220b60245dbcbc4da35e1b62a6f8c230d  (alpine/v2.1.20/v2.1.21)
sha256:222e6bfed0f3bb1937bf5e719a2342871ccd683ff1c0cb967c8e31ea58beaf7b  (debian variants)
sha256:a0d9366f6f0166dcbf92fcdc98e1a03d2e6210e8d7e8573f74d50849130651a0  (latest)

== Estensioni VS Code / OpenVSX ==
checkmarx.cx-dev-assist  1.17.0, 1.19.0   (malevole)
checkmarx.ast-results    2.63.0, 2.66.0   (malevole)

== C2 ==
audit.checkmarx[.]cx/v1/telemetry
94[.]154[.]172[.]43

== Pattern repository di staging ==
<word>-<word>-<3 digits> (vocabolario Dune: gesserit, melange, fedaykin,
ornithopter, atreides, sandworm, ...) con file envelope/key/token

== Pattern commit message ==
LongLiveTheResistanceAgainstMachines:<encoded>

Implicazioni e raccomandazioni


Il caso Checkmarx/KICS è un promemoria brutale: gli strumenti di security scanner sono essi stessi componenti della supply chain, spesso eseguiti con privilegi elevati dentro le pipeline più sensibili dell’organizzazione. Per chi gestisce ambienti che integrano KICS o altri scanner Checkmarx:

  • Verificare le versioni pullate di checkmarx/kics negli ultimi 30 giorni e confrontare i digest con quelli pubblicati ufficialmente dal vendor dopo la rimediation.
  • Effettuare il pin delle immagini Docker a digest SHA invece che a tag mutabili come latest o alpine.
  • Controllare i log GitHub per workflow artefacts di dimensione anomala, in particolare quelli generati da workflow che referenziano toJSON(secrets).
  • Ruotare tutti i token GitHub, npm, AWS, Azure e GCP che potrebbero essere stati esposti a sviluppatori con cx-dev-assist o ast-results nelle versioni compromesse.
  • Monitorare la creazione di repository GitHub pubblici corrispondenti al pattern Dune descritto sopra.
  • Bloccare o allertare sulle connessioni verso audit.checkmarx.cx (dominio di lookalike non legittimo di Checkmarx).

Il doppio colpo di TeamPCP a Checkmarx in meno di due mesi suggerisce che il gruppo conserva un accesso persistente o ricorrente agli ambienti di build del vendor, o quantomeno che alcune delle credenziali rubate nella prima ondata non sono state completamente invalidate. La security community attende risposte più dettagliate dal vendor su come il tag Docker ufficiale sia stato sovrascritto e su quale catena di fiducia debba essere ricostruita per i clienti che hanno integrato KICS nelle proprie pipeline negli ultimi mesi.


Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

#USAF/#US cargo #militaryFlights #C130J30Hercules/#C17GlobeMasterIII from the #Aviano military base (#Italy) to the #UK bases -from which US bombers departed to bomb #IRAN - continue.

Last Friday, I revealed 23 flights: we've now reached 30 flights

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Il #6Maggio NON perdete il film #TheSea, che #Israele non vuole farvi vedere, come racconta #GiuliaInn9cenzi

Siete a Roma? Ci sarà una serata speciale con un dibattito coordinato da #MaddalenaOliva, vicedirettrice del #FattoQuotidiano
Non lo perdete!

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

#EUShameOnYou!

"NON c’è nessuna democrazia perché nessuno vuole ascoltare la gente che in tutto il mondo si mobilita per #Gaza"

Da leggere #SalvatoreCannavo'

ilfattoquotidiano.it/in-edicol…

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Da leggere #AlessandroMantovani sulla #NuovaFlotilla:

ilfattoquotidiano.it/in-edicol…

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Avete letto scoop di @loffredojeremy su come #Israele volutamente massacra #giornalisti come #AmalKhalil
dropsitenews.com/p/lebanon-jou…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Buongiorno! Continuano i #VoliMilitariUSA cargo #C130J30Hercules e #C17GlobeMasterIII dalla base di #Aviano verso basi UK da cui sono partiti bombardieri USA per #GuerraIRAN.

Venerdì scorso vi abbiamo ricostruito 23 voli, ora siamo a 30!

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Il nuovo post di universita-it: I lavori più pagati in Italia: notai, medici e professioni tech in cima alle retribuzioni

Qui il post completo: universita.it/i-lavori-piu-pag…

@universitaly

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Apache ActiveMQ Classic CVE-2026-34197: 13-Year-Old Vulnerability Now Under Active Exploitation, CISA Issues Federal Patch Mandate
#CyberSecurity
securebulletin.com/apache-acti…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

25 maggio 2026, roma, giornata del premio pagliarani: convegno sul teatro della neoavanguardia + conferimento del premio alla carriera a giulio ferroni + premiazione dei testi èditi e inediti dei finalisti dell’xi edizione


logo premio elio pagliarani

La Presidente Cetta Petrollo e Lia Pagliarani sono liete di annunciare la

GIORNATA PAGLIARANI


che si svolgerà lunedì 25 maggio 2026, nella Sala Cinema del Palazzo Esposizioni di Roma
(Ingresso dalla scalinata di via Milano 9a)

Il Premio Nazionale Elio Pagliarani, giunto nel 2026 alla sua undicesima edizione, è lieto di comunicare il programma della giornata del 25 maggio. Il Premio alla carriera è stato attribuito, su proposta della Presidente, a Giulio Ferroni che sarà premiato con un’opera dell’artista Marzia Migliora. La giornata si aprirà con un convegno dedicato al Teatro della neoavanguardia, per proseguire nel pomeriggio con la cerimonia di premiazione.

Giulio Ferroni_ foto (C) Dino Ignani
Giulio Ferroni_ Foto (C) Dino Ignani

PROGRAMMA DELLA GIORNATA

Ore 10:30 – 13:00

Teatro e poesia. Riflessioni sul Teatro della neoavanguardia


Interventi di
Marianna Marrucci, Francesco Muzzioli, Carlo Petruzzi, Chiara Portesine,
Marta Previti, Camilla Protti, Gianluca Rizzo, Valentina Valentini
[ titoli e argomenti delle relazioni a questo link ]

Coordina i lavori
Gianluca Rizzo

Ore 17:00 – 19:30

Cerimonia di premiazione della undicesima edizione del
Premio Nazionale Elio Pagliarani


Saluti istituzionali, presentazione dei finalisti e lettura di una loro poesia.
Conferimento del premio alla carriera a Giulio Ferroni e
consegna dell’opera di Marzia Migliora.
A seguire, premiazione dell’opera di poesia
vincitrice della sez. inediti e di quella della sez. editi.
[informazioni sui finalisti a questo link]

Opere èdite finaliste:
Tiziana Colusso, Corpo conduttore – XXXIII variazioni (Edizioni Progetto Cultura)
Antonella Antonia Paolini, Il macello moderno (Nino Aragno)
Ivan Schiavone, Didascalie venatorie (La Vita Felice)

Opere inedite finaliste:
Cinzia Colazzo, Sperimentale sarai tu / soda caustica
Lidia Popolano, De vacuum natura
Roberto Ranieri, Il ratto di Schrödinger

Conduce
Arnaldo Colasanti

evento facebook:
facebook.com/events/1524769618…


enti patrocinanti Premio Pagliarani 2026

*

CARTELLA STAMPA COMPLETA disponibile all’indirizzo:
tinyurl.com/pagliarani2026


Il premio è una delle attività dell’Associazione letteraria Elio Pagliarani
dedicata allo studio della poesia contemporanea.

Il Premio Nazionale Elio Pagliarani, nato nel 2015, ha per scopo il promuovere e valorizzare, nello spirito sperimentale del poeta, la scrittura poetica e la ricerca letteraria che dimostrino qualità creative ed espressive originali nell’innovazione linguistica.

*

sito: www.premionazionaleeliopagliarani.it
uff. stampa: Gisella Blanco, Marco Giovenale, Irma Serra
uffstampapremioeliopagliarani [at] gmail.com
#25Maggio #25Maggio2026 #AntonellaAntoniaPaolini #AntonellaPaolini #Aragno #ArnaldoColasanti #AssociazioneLetterariaElioPagliarani #CamillaProtti #CarloPetruzzi #CettaPetrollo #ChiaraPortesine #CinziaColazzo #comunicatoStampaPremioPagliarani #EdizioniLaVitaFelice #EdizioniProgettoCultura #FrancescoMuzzioli #GianlucaRizzo #GisellaBlanco #GiulioFerroni #IrmaSerra #IvanSchiavone #LaVitaFelice #letturaDiPoesie #letture #lettureDiPoesie #LiaPagliarani #LidiaPopolano #MarcoGiovenale #MariannaMarrucci #MartaPreviti #MarziaMigliora #neoavanguardia #NinoAragno #NinoAragnoEditore #opereEdite #opereInedite #PalazzoDelleEsposizioni #PalazzoEsposizioni #poesia #poeti #premiDiPoesia #premiazioneDiPoesia #premioAllaCarriera #premioDiPoesia #PremioNazionaleElioPagliarani #PremioPagliarani #raccolteDiPoesia #raccolteDiPoesie #reading #readingDiPoesia #readingDiPoesie #RobertoRanieri #teatroDellaNeoavanguardia #TizianaColusso #ValentinaValentini

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Nuovi programmi dei licei: scompare la geostoria e arriva l’IA

@scuola

corriereuniv.it/nuovi-programm…

Il ministero dell’Istruzione e del Merito ha ufficialmente diffuso le “nuove indicazioni nazionale per i licei”, in sostanza i nuovi programmi su cui si aprirà adesso una fase di consultazione con il mondo della scuola. Per la

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

TypeScript 7.0 Beta: il nuovo compilatore in Go è circa 10 volte più veloce
#tech
spcnet.it/typescript-7-0-beta-…
@informatica


TypeScript 7.0 Beta: il nuovo compilatore in Go è circa 10 volte più veloce


Il team di TypeScript ha rilasciato la beta ufficiale di TypeScript 7.0, e non si tratta di un aggiornamento incrementale: il compilatore è stato riscritto in Go, con miglioramenti di performance che in molti scenari superano un fattore 10x. Dopo quasi un anno di anteprime tecniche sotto il nome TypeScript Native Preview, Microsoft porta la versione nativa del compilatore a un pubblico molto più ampio e la raccomanda per uso quotidiano, pur restando formalmente in beta.

Perché riscrivere il compilatore in Go


Il compilatore di TypeScript era storicamente scritto nello stesso linguaggio che compilava. Questa scelta, elegante dal punto di vista del bootstrapping, ha sempre comportato un costo: su codebase di grandi dimensioni il tsc può impiegare decine di secondi (o minuti) per il type-checking e il watch mode si appesantisce rapidamente all’aumentare dei file.

La riscrittura in Go non è un rewrite da zero: il team parla esplicitamente di un port metodico, mantenendo parità strutturale con la logica di type-checking di TypeScript 6.0. Questo approccio riduce il rischio di regressioni semantiche: la stessa base di casi di test, le stesse regole, ma con le velocità permesse da codice nativo e dal parallelismo reale a memoria condivisa.

Il risultato, secondo Microsoft, è che TypeScript 7.0 è circa 10 volte più veloce di TypeScript 6.0. Team come Bloomberg, Figma, Google, Slack e Vercel hanno riportato numeri comparabili durante la beta privata, con riduzioni drastiche dei tempi di build in CI.

Come provarlo oggi


L’installazione avviene come package separato per non rompere le pipeline esistenti. Basta un singolo comando:

npm install -D @typescript/native-preview@beta
npx tsgo --version
# Version 7.0.0-beta

Durante la fase beta, l’eseguibile si chiama tsgo al posto di tsc. Per Visual Studio Code è disponibile l’estensione “TypeScript Native Preview”, che affianca il language service classico permettendo di confrontare i tempi di risposta in tempo reale.

Parallelismo configurabile


Una delle novità più sottili, ma con maggiore impatto pratico, è il parallelismo integrato nel compilatore:

  • --checkers N: numero di worker dedicati al type-checking (default 4). I worker mantengono viste indipendenti per evitare ricalcoli ridondanti, ma i risultati restano deterministici.
  • --builders N: abilita la compilazione parallela di più progetti referenziati (project references). Ha un effetto moltiplicativo quando combinato con --checkers, ed è particolarmente efficace nei monorepo.
  • --singleThreaded: forza l’esecuzione sequenziale per debugging o ambienti con memoria limitata (container CI con poca RAM, ad esempio).

Alzare --checkers aumenta la velocità ma anche il consumo di memoria: su agenti CI piccoli conviene fare qualche prova empirica prima di spingerlo oltre 8.

Breaking changes: la pulizia annunciata


TypeScript 7.0 è anche l’occasione per rimuovere anni di retrocompatibilità. Chi mantiene progetti legacy dovrà prestare attenzione, perché molte opzioni di configurazione sono semplicemente scomparse:

  • target: es5 non è più supportato.
  • downlevelIteration, moduleResolution: node/node10/classic, e i moduli amd, umd, systemjs, none sono stati rimossi.
  • baseUrl è stato eliminato: usare paths relativo alla root del progetto.
  • esModuleInterop, allowSyntheticDefaultImports e alwaysStrict non possono più essere disattivati.

Cambiano anche diversi default: strict: true, module: esnext, target pari all’ultima versione ECMAScript stabile prima di esnext, noUncheckedSideEffectImports: true, e soprattutto types: []. Quest’ultimo è il cambiamento che più spesso romperà le build: prima @types/* venivano inclusi automaticamente, ora vanno dichiarati esplicitamente:

{
  "compilerOptions": {
    "types": ["node", "jest"]
  }
}

Sul fronte del supporto a JavaScript con JSDoc, la pulizia è ancora più netta: i valori non possono più sostituire i tipi (usare typeof valore), la sintassi Closure-style function(string): void è rimossa, così come @enum e l’operatore postfisso !.

Convivenza con TypeScript 6.0


Per chi non può migrare subito tutte le pipeline, è possibile installare entrambe le versioni affiancate:

npm install -D typescript@npm:@typescript/typescript6

Così typescript continua a puntare a 6.0, mentre tsgo (o tsc7 dopo il rilascio finale) resta disponibile come entry point separato. È lo scenario consigliato per confrontare gradualmente i due compilatori su progetti reali prima di fare il cutover.

Roadmap e cosa aspettarsi


La beta è datata 21 aprile 2026; il rilascio stabile è previsto entro due mesi, con una release candidate alcune settimane prima. Nel frattempo arriveranno un --watch più efficiente, la parità di declaration file emit per JavaScript, miglioramenti all’editor (ricerca dei riferimenti ai file, comandi import/export più granulari) e una API programmatica stabile, attesa per TypeScript 7.1 o successiva.

Vale la pena migrare subito?


Per team che lavorano su codebase grandi e soffrono di type-check lenti, la risposta è “quasi sicuramente sì, almeno in parallelo”. Microsoft stessa dichiara il compilatore “altamente stabile e altamente compatibile” sulla base di test su codebase da milioni di righe. La strategia più prudente è: installare @typescript/native-preview come dev dependency aggiuntiva, introdurlo come job di CI opzionale accanto al tsc esistente, misurare i tempi reali e segnalare eventuali incompatibilità sul repository microsoft/typescript-go.

Le incompatibilità che emergeranno non saranno di natura logica ma di configurazione: soprattutto il nuovo default types: [] e la rimozione di baseUrl. Chi si è tenuto aggiornato con le versioni recenti dovrebbe cavarsela con poche modifiche al tsconfig.json.

Fonte: Announcing TypeScript 7.0 Beta di Daniel Rosenwasser sul blog ufficiale TypeScript (Microsoft DevBlogs).


Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

oggi, 23 aprile, a pavia, al collegio cairoli: pignotti 100 e ancora 100


A Pavia, al Collegio Cairoli, giovedì 23 aprile
inaugurazione della mostra

Pignotti 100 e ancora 100


Pignotti_locandina della mostra al Collegio Cairoli di Pavia
cliccare per ingrandire

La mostra resterà aperta fino a sabato 23 maggio: ingresso libero da giovedì a sabato dalle ore 17 alle ore 19 (nei restanti giorni feriali solo previo appuntamento).

La rassegna vuole essere un doveroso omaggio espositivo in occasione del Centenario della nascita del grande artista e poeta fiorentino Lamberto Pignotti (Firenze, 23 aprile 1926), padre della poesia tecnologica e uno dei padri della poesia visiva italiana, fondatore del Gruppo 70 (Firenze, 24-26 Maggio 1963) che ha partecipato attivamente anche alla nascita del Gruppo 63 (Palermo, 3-8 Ottobre 1963) ed alle attività della Neoavanguardia italiana, contribuendo così al clima di rinnovamento letterario e culturale dal secondo dopoguerra ad oggi, a livello nazionale ed internazionale.

Collegio Cairoli
Piazza Cairoli 1 – Pavia
#art #arte #CollegioCairoli #GiosuèAllegrini #LambertoPignotti #materialiVerbovisivi #Pignotti #poesiaVisiva #vispo

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Ricevo e rigiro

Quando finalmente hanno potuto cercarla tra le macerie..." E' stato trovato il corpo della giornalista libanese Amal Khalil, uccisa in un attacco israeliano nella città di Tiri. Lo riferisce la protezione civile del Libano."
📸 Aljazeera via IG
☮️❤️‍🩹☮️
#DorianaGoracci

Da Jeremy Loffredo
23 aprile 2026
La giornalista libanese Amal Khalil è stata lasciata morire da Israele.
La nota giornalista libanese Amal Khalil è stata uccisa mercoledì in quello che sembra essere un attacco mirato da parte dell'esercito israeliano nella città di Tiro, nel sud del Libano. Il suo datore di lavoro, Al-Akhbar, ha confermato la morte della sua corrispondente mercoledì sera.
Khalil e Zeinab Faraj, fotoreporter freelance, si trovavano entrambe nel Libano meridionale per documentare i recenti attacchi al villaggio di Bint Jbeil. Secondo Al-Akhbar, che ha pubblicato una cronologia degli eventi, l'auto che le seguiva è stata colpita da un drone israeliano alle 14:45, uccidendo due uomini a bordo. Khalil e Faraj si sono rifugiati in una casa vicina.
Alle 14:50 Khalil ha contattato i suoi redattori e la sua famiglia, secondo quanto riportato dalla giornalista libanese Courtney Bonneau. La notizia dell'accaduto si è diffusa rapidamente, spingendo il presidente libanese Joseph Aoun a rilasciare una dichiarazione in cui chiedeva alla Croce Rossa di intervenire per salvare i due giornalisti in coordinamento con l'esercito libanese e le Nazioni Unite.
Alle 16:27, la casa in cui le due giornaliste si erano rifugiate è stata bombardata dall'esercito israeliano e si sono persi i contatti con loro, secondo quanto riportato da Al-Akhbar.
Secondo quanto riferito ad Al Jazeera da un funzionario militare libanese, Israele non ha risposto alle richieste di accesso, ostacolando qualsiasi operazione di soccorso. Il Comitato per la protezione dei giornalisti ha infine concesso alla Croce Rossa un accesso limitato al sito, che è rimasto sotto il fuoco nemico.
Sono riusciti a evacuare Faraj, che secondo quanto riferito ha riportato gravi ferite alla testa, e a recuperare i corpi di altri due civili rimasti uccisi. Tuttavia, sono stati costretti a ritirarsi prima di trovare Khalil a causa dei continui bombardamenti e del fuoco diretto contro le squadre di soccorso e i veicoli. Il veicolo della Croce Rossa che trasportava la giornalista Faraj all'ospedale governativo di Tubnin è stato colpito da colpi di arma da fuoco israeliani, e secondo l'agenzia di stampa statale National News Agency, sono visibili i segni dei proiettili sul veicolo.
La Croce Rossa è infine riuscita a tornare nella zona, dopodiché Khalil è stato dichiarato morto.
"I ripetuti attacchi nello stesso luogo, il fatto di aver preso di mira un'area in cui si trovavano dei giornalisti e l'ostruzione dell'accesso medico e umanitario costituiscono una grave violazione del diritto internazionale umanitario", ha dichiarato in un comunicato Sara Qudah, direttrice regionale del CPJ.

L'esercito israeliano non ha risposto immediatamente a una richiesta di commento.

Khalil, definita da Al-Akhbar la loro "corrispondente del sud", è cresciuta a Baysariyyeh, una città costiera nel distretto di Saida, a circa 45 minuti di auto dal confine israeliano. Ha trascorso oltre quindici anni a seguire le guerre e le occupazioni cicliche del Libano meridionale da parte dell'esercito israeliano. Fondato nel 2006, il giornale Al-Akhbar è ampiamente considerato di sostegno a Hezbollah e alla resistenza sciita, e si definisce un organo di informazione laico, indipendente e progressista.
Nel settembre del 2024, Khalil aveva ricevuto sul suo telefono esplicite minacce di morte da Gideon Gal Ben Avraham, un commentatore televisivo che gestisce un canale di analisi sul Medio Oriente su YouTube, appare sulla televisione israeliana e si descrive come un ufficiale militare in pensione che continua ad "aiutare" l'intelligence israeliana. Nei messaggi le veniva intimato di lasciare il Paese "se avesse voluto conservare la testa sulle spalle" e le veniva chiesto se la sua casa fosse "ancora in piedi".

Contattato da Drop Site mercoledì, prima che emergesse la notizia della morte di Khalil, Ben Avraham ha confermato di aver inviato le minacce nel 2024. "Invio saluti a tutti i giornalisti affiliati a Hezbollah, perché chiunque lavori per l'organizzazione deve sapere che è destinato alla morte", ha scritto, chiarendo in seguito di considerare Al-Akhbar "affiliato a Hezbollah" e che "solo chi è legato a Hezbollah dovrebbe temere", mentre i maroniti e i sunniti non dovrebbero affrontare tali minacce.
Non è chiaro quale sia, se esiste, relazione formale con l'esercito israeliano. Quando gli è stato chiesto della difficile situazione di Khalil, intrappolato sotto le macerie di una casa presa di mira dall'esercito israeliano, ha risposto: "Non condividiamo le nostre informazioni con i giornalisti". Quando gli è stato chiesto direttamente se fosse un soldato quando inviò le minacce originali a Khalil nel 2024, Ben Avraham ha risposto: "Nessun commento".
Il mese scorso, l'esercito israeliano ha ammesso apertamente di aver assassinato il noto giornalista libanese Ali Shoeib, corrispondente di Al-Manar TV, che aveva seguito le vicende del Libano meridionale per quasi trent'anni. L'esercito israeliano ha falsamente affermato che Shoeib fosse un agente dei servizi segreti di Hezbollah. Nell'attacco del 28 marzo nel distretto di Jezzine, nel Libano meridionale, sono stati uccisi anche la giornalista di Al-Mayadeen TV Fatima Ftouni e suo fratello Mohammed, un videogiornalista. La loro auto, che trasportava chiaramente attrezzature giornalistiche, è stata colpita più volte; Ftouni inizialmente è sopravvissuta e ha tentato di fuggire, prima di essere colpita e uccisa in un attacco israeliano.
Secondo il CPJ, Israele ha ucciso almeno 14 giornalisti, tra cui Khalil, in Libano dall'ottobre 2023. A Gaza, l'esercito israeliano ha ucciso oltre 260 giornalisti palestinesi dall'ottobre 2023, rendendo questa la guerra più letale per i giornalisti mai registrata.
dropsitenews.com/p/lebanon-jou…
☮️📷☮️

#AmalKhalil
#ZeinabFaraj
#Libano
#Bintjbeil
#israeleStatoTerrorista #israelecriminale #israele

@news

reshared this

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

a roma, da oggi al 26 aprile: festa della resistenza, al mattatoio (testaccio)


25 aprile_ Festa della Liberazione e della Resistenza_ 1946-2026
cliccare per ingrandire

Festa della Liberazione e della Resistenza_ 1946-2026
#25Aprile #FestaDellaLiberazione #FestaDellaResistenza #Mattatoio

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

da oggi, 23 aprile, al mart di rovereto: lamberto pignotti, 100 pop-esie visive


mart.tn.it/mostre/pignotti-100…
cliccare per ingrandire#art #arte #ingressoGratuito #LambertoPignotti #MART #materialiVerbovisivi #mostra #mostraGratis #Pignotti #poesiaVisiva #Rovereto #vispo

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

#chegiornoè #23aprile | Giornata Mondiale del Libro e del Diritto d'Autore 🎉
Un’occasione per #promuovere la #lettura e il suo #liberoaccesso

💎 MUP sceglie la forma più aperta di editoria: #diamondOA

📚 dalla filosofia alle scienze veterinarie: un ampio #catalogo #aperto

🔓 #proteggere chi scrive #senza #escludere chi legge: le #licenze Creative Commons garantiscono riconoscimento del lavoro intellettuale e la #libertà di #condivisione

Happy #BookDay da MUP! 📖

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Le scuole del Texas dovranno esporre i Dieci Comandamenti
go.squidapp.co/n/idET8Lg Da qui alla preghiera prima di iniziare le lezioni...
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Vanchiglia invasa per Zerocalcare: “Incredibile questa folla, sempre al vostro fianco” quotidianopiemontese.it/2026/0…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please log in.


Come e perché boicottare TEVA: una guida per medici e farmacisti
WEBINAR DI 60 MINUTI condotto da professionisti del settore sanitario

BDS Italia, Sanitari per Gaza e #DigiunoGaza invitano medici, farmacisti e personale sanitario interessato a partecipare al webinar sul boicottaggio dell'azienda TEVA (e consociate), grossa multinazionale farmaceutica israeliana, specializzata nella produzione di farmaci generici.

Iscrizioni su: bdsitalia.org/index.php/teva-n…

#APARTHEID #genocidiogaza #PALESTINA


Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Ciao! Ho creato l'account @destinazione_stelle per i miei post di spazio.

Continuerò a usare questo account per i miei post personali.

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Cdm approva la riforma del Consiglio universitario nazionale

@scuola

corriereuniv.it/cdm-approva-la…

Il Consiglio dei Ministri, su proposta del ministro dell’Università e della Ricerca, Anna Maria Bernini, ha approvato il disegno di legge di riforma del Consiglio Universitario Nazionale (Cun). Il provvedimento ridisegna la

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Il nuovo post di universita-it: Quasar Institute protagonista all’Earth Day Italia 2026 a Roma

Qui il post completo: universita.it/quasar-institute…

@universitaly

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

Mattarella: “La ricerca ignora le frontiere, è veicolo di pace”

@scuola

corriereuniv.it/mattarella-la-…

“Sono lieto che il ministro abbia manifestato ancora una volta come abbia a cuore la ricerca. Perché è davvero questa la prospettiva non soltanto di sviluppo del Paese ma è anche quella di una dimensione che ignora le frontiere,

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

12 tecniche per ottimizzare le query PostgreSQL su dataset di grandi dimensioni
#tech
spcnet.it/12-tecniche-per-otti…
@informatica


12 tecniche per ottimizzare le query PostgreSQL su dataset di grandi dimensioni


Quando una tabella PostgreSQL cresce oltre il milione di righe, query che prima restituivano risultati in millisecondi iniziano ad impiegare secondi — o peggio. La buona notizia è che PostgreSQL offre strumenti potenti per affrontare questo problema. La cattiva notizia è che molti sviluppatori conoscono solo una parte di questi strumenti.

In questo articolo passiamo in rassegna le 12 tecniche più efficaci per ottimizzare le query su grandi dataset, con esempi SQL concreti per ciascuna.

1. Creare indici sulle colonne frequentemente filtrate


Il consiglio più noto, ma non per questo meno importante. Un indice trasforma una scansione sequenziale (O(n)) in una ricerca B-tree (O(log n)). La differenza su una tabella da un milione di righe può essere di due ordini di grandezza.

-- Prima: full sequential scan su ordini
SELECT * FROM orders WHERE customer_id = 42;

-- Creazione dell'indice
CREATE INDEX idx_orders_customer_id ON orders(customer_id);

-- Dopo: index scan, da 240ms a pochi ms

Usate EXPLAIN ANALYZE per verificare che l’indice venga effettivamente utilizzato.

2. Normalizzare il database in modo strategico


La normalizzazione riduce la ridondanza e migliora la coerenza dei dati, ma va applicata con giudizio. Una normalizzazione eccessiva crea decine di JOIN che possono diventare colli di bottiglia. La regola pratica: normalizzate i dati che cambiano spesso o che hanno alta cardinalità (liste di prodotti, clienti, categorie), denormalizzate i dati storici o di report dove la velocità di lettura è critica.

3. Evitare SELECT *


Selezionare tutte le colonne ha due costi nascosti: aumenta il volume di I/O e impedisce a PostgreSQL di soddisfare la query direttamente dall’indice (index-only scan). Specificate sempre le colonne necessarie:

-- Evitare
SELECT * FROM orders WHERE customer_id = 42;

-- Preferire
SELECT id, created_at, total_amount FROM orders WHERE customer_id = 42;

Quando le colonne selezionate fanno parte di un indice composito, PostgreSQL può restituire i dati senza accedere all’heap, eliminando un intero livello di I/O.

4. Ordinare i JOIN in modo efficiente


Il query planner moderno di PostgreSQL determina autonomamente l’ordine ottimale dei JOIN grazie al cost-based optimizer. Tuttavia, in scenari con molte tabelle o con join_collapse_limit ridotto, conviene strutturare i JOIN in modo che le tabelle più piccole (o più filtrate) vengano processate per prime, riducendo la cardinalità delle operazioni successive.

5. Usare LIMIT durante l’esplorazione dei dati


Apparentemente ovvio, ma spesso trascurato: se l’interfaccia utente mostra al massimo 50 risultati, non ha senso recuperarne un milione dal database.

SELECT id, name, email 
FROM customers 
ORDER BY created_at DESC 
LIMIT 50 OFFSET 0;

Attenzione al pagination problem: con OFFSET elevati, PostgreSQL scansiona comunque tutte le righe precedenti. Per paginazione su grandi dataset, preferite il keyset pagination (cursor-based).

6. Indici parziali per subset frequenti


Un indice parziale indicizza solo le righe che soddisfano una condizione, riducendo dimensioni e costo di manutenzione:

-- Indice solo sugli ordini completati (subset più frequentemente interrogato)
CREATE INDEX idx_completed_orders
ON orders(customer_id)
WHERE status = 'Completed';

-- La query deve includere la stessa condizione per usare l'indice
SELECT id, total_amount 
FROM orders 
WHERE customer_id = 42 AND status = 'Completed';

In un test pratico, questo indice ha dimezzato i tempi rispetto a un indice standard su tutte le righe.

7. Usare i tipi di dato più piccoli necessari


Ogni byte conta quando moltiplicato per milioni di righe. Preferite sempre il tipo più compatto che soddisfa il requisito:

  • integer (4 byte) invece di bigint (8 byte) per chiavi primarie < 2 miliardi
  • smallint (2 byte) per enumerazioni con pochi valori
  • timestamp invece di timestamptz se il fuso orario è fisso
  • varchar(n) con limite appropriato invece di text illimitato dove possibile

Tipi più piccoli significano pagine di dati più dense, quindi meno I/O per ogni query.

8. Non applicare funzioni sulle colonne indicizzate


Applicare una funzione a una colonna indicizzata invalida l’utilizzo dell’indice:

-- L'indice su name NON viene usato
SELECT * FROM customers WHERE LOWER(name) = 'mario rossi';

-- Soluzione: creare un indice funzionale
CREATE INDEX idx_customers_lower_name ON customers(LOWER(name));

-- Ora l'indice viene usato
SELECT * FROM customers WHERE LOWER(name) = 'mario rossi';

Lo stesso vale per funzioni su date come DATE(created_at): usate range di timestamp o create l’indice sulla funzione.

9. Partizionare le tabelle molto grandi


Il partizionamento divide una tabella logica in sotto-tabelle fisiche, permettendo a PostgreSQL di escludere partizioni irrilevanti (partition pruning) durante le query:

-- Tabella partizionata per anno
CREATE TABLE orders_partitioned (
    id         serial NOT NULL,
    customer_id integer,
    created_at  timestamp NOT NULL,
    CONSTRAINT pk_orders PRIMARY KEY (id, created_at)
) PARTITION BY RANGE (created_at);

-- Creazione delle partizioni annuali
CREATE TABLE orders_2024 PARTITION OF orders_partitioned
    FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');

CREATE TABLE orders_2025 PARTITION OF orders_partitioned
    FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');

Una query che filtra per anno legge solo la partizione corrispondente, ignorando completamente le altre.

10. Usare le transazioni per operazioni bulk


PostgreSQL esegue un commit (e quindi una scrittura sincrona su WAL) dopo ogni statement. Raggruppare più operazioni in un’unica transazione riduce drasticamente i costi di I/O:

-- Lento: un commit per ogni INSERT
INSERT INTO log_events VALUES (...);
INSERT INTO log_events VALUES (...);
-- ... x 10.000

-- Veloce: un solo commit per tutto il batch
BEGIN;
INSERT INTO log_events VALUES (...);
INSERT INTO log_events VALUES (...);
-- ... x 10.000
COMMIT;

In test pratici, l’approccio con transazione singola completa lo stesso lavoro in meno della metà del tempo rispetto agli inserimenti individuali.

11. Evitare transazioni long-running


Il modello MVCC (Multi-Version Concurrency Control) di PostgreSQL mantiene versioni multiple delle righe per garantire la consistenza delle letture. Le transazioni long-running bloccano il processo di VACUUM dal rimuovere le versioni obsolete, causando table bloat: tabelle che crescono fisicamente anche quando i dati logici non aumentano.

Spezzettate le operazioni pesanti in batch più piccoli e monitorate le transazioni attive con:

SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state
FROM pg_stat_activity
WHERE state != 'idle' AND query_start IS NOT NULL
ORDER BY duration DESC;

12. Gestire il bloat con VACUUM


Ogni UPDATE e DELETE lascia righe “morte” sul disco. VACUUM le recupera:

-- VACUUM standard: recupera spazio senza bloccare le letture
VACUUM orders;

-- VACUUM FULL: recupera tutto lo spazio ma blocca l'accesso alla tabella
-- Usare solo in finestre di manutenzione programmate
VACUUM FULL orders;

-- Verificare lo stato del bloat
SELECT relname, n_dead_tup, n_live_tup,
       round(n_dead_tup::numeric / NULLIF(n_live_tup + n_dead_tup, 0) * 100, 2) AS dead_pct
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;

Per la maggior parte dei workload, autovacuum è sufficiente. Assicuratevi che sia abilitato e calibrate i threshold in base al volume di modifiche della vostra applicazione:
-- Verificare la configurazione autovacuum per una tabella specifica
SELECT reloptions FROM pg_class WHERE relname = 'orders';

Riepilogo operativo


Non tutte le tecniche si applicano a ogni scenario. Un approccio efficace inizia sempre dall’analisi con EXPLAIN (ANALYZE, BUFFERS) per identificare i reali colli di bottiglia, poi applica le ottimizzazioni in modo mirato. L’indice sbagliato o il partizionamento mal configurato possono peggiorare le prestazioni invece di migliorarle.

Il punto di partenza universale resta lo stesso: misurare prima, ottimizzare dopo.


Fonte: 12 practices for optimizing PostgreSQL queries for large datasets — elmah.io Blog


Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

OPERAI INDIANI ADDESTRANO I LORO SOSTITUTI DOTATI DI INTELLIGENZA ARTIFICIALE

@news
La rete è ormai zeppa di contenuti fasulli, realizzati con le miracolistiche prestazioni di tanti programmi capaci di creare video verosimili.
L'articolo OPERAI INDIANI ADDESTRANO I LORO SOSTITUTI DOTATI DI INTELLIGENZA ARTIFICIALE proviene da GIANO NEWS.

#EDITORIALI

reshared this

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Booking.com Notifies Customers of Data Breach Exposing Reservation Details and Personal Information
#CyberSecurity
securebulletin.com/booking-com…
Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

If you haven’t signed this petition by #CourageFoundation
for a great truthteller,who has exposed #Israel's genocide, #FrancescaAlbanese, please do it.
Remember: we can only count on ourselves,as #EU institutions (especially #Italy and #Germany) protect #Israel

petition.qomon.org/0b54a0b8-de…

Poliversity - Università ricerca e giornalismo ha ricondiviso questo.

#LaRevueDesMedias asked me how,16 years after #WikiLeaks published US diplomatic cables,the #WikiLeaks work STILL allows me to unearth hidden truths,like my scoop on #ICE at the #WinterOlympics in #Milan

A beautiful article by #FlorineAmenta

[French]larevuedesmedias.ina.fr/wikile…