Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

COP30: aspettative tradite e incertezza nella governance climatica globale
@lavoro
puntosicuro.it/ambiente-C-94/c…
A dieci anni dall'Accordo di Parigi, la Conferenza di Belém mostra progressi limitati sulla finanza climatica e segnali di rallentamento nella transizione dai combustibili fossili, tra compromessi politici e nuove incertezze internazionali.

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

La fotosintesi oltre il visibile

pikaia.eu/fotosintesi-oltre-vi…

@scienza

Uno studio pubblicato su New Phytologist mostra che la microalga marina Nannochloropsis gaditana può crescere affidandosi alla sola luce far-red. Ne abbiamo parlato con Nicoletta La Rocca, docente del Dipartimento di Biologia dell’Università di Padova e fra le autrici del lavoro, per capire che cosa questo risultato ci dica sull’evoluzione della fotosintesi e sulle

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

RRF Caserta Almanacco dell 11 maggio


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

RRF Caserta Almanacco dell 11 maggio radioritornofuturo.podbean.com…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Lavoratori senza tempo: infortuni sul lavoro e tutela assicurativa
@lavoro
puntosicuro.it/smart-working-t…
Infortuni sul lavoro dei lavoratori senza tempo e luogo predeterminati. Un saggio si sofferma sull'evoluzione della nozione di occasione di lavoro e sui limiti della tutela assicurativa.

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Il piano di circolazione, ovvero come rendere la vita (apparentemente) più complicata agli automobilisti,


la migliora per tutti

youtube.com/watch?v=bgKokpZMFn…

Nel 1977 la città di #Groningen fece una cosa inaudita, per l'epoca: divise il centro in 4 settori, impedendo al #traffico motorizzato privato di passare da un settore all'altro, rendendo così impossibile attraversare il centro in auto.

Fu una scelta controversa: come succede tuttora, molti, soprattutto i commercianti, protestarono con vigore; e, come è successo tutte le volte, alla fine fu evidente che, con poche auto in giro, le strade si riempirono di vita, di persone ed attività.

La scelta fu lungimirante: le strade non come "arterie" per le auto, ma come spazi condivisi, da vivere. All'epoca non era facile capirlo, nel pieno dell'espansione dell'auto privata.

Di recente Ghent ha adottato un piano simile, e i risultati sono stati straordinari:

headingtonliveablestreets.org.…

Eppure in Italia un'idea del genere è ancora tabù, anche se molte città hanno zone pedonali centrali che, di fatto, ottengono risultati simili.

@energia #mobilitàSostenibile

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Lavoratori più sicuri e maggiore conformità alla SSL attraverso la digitalizzazione
@lavoro
puntosicuro.it/digitalizzazion…
Garantire la conformità alle norme su salute e sicurezza sul lavoro è cruciale per proteggere i lavoratori. La digitalizzazione porta nuove sfide e opportunità, migliorando monitoraggio, raccolta dati e collaborazione tra imprese e ispettorati.

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision 2026: come televotare nella prima semifinale · Costi e operatori abilitati


Eurovision 2026: come televotare nella prima semifinale · Costi e operatori abilitati

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

L'istanza mastodon.galileivr.org è la prima e l'unica istanza Mastodon scolastica italiana. Perché non ce ne sono altre?


Il social etico del Liceo statale Galileo Galilei di Verona, gestito da @carlo@mastodon.galileivr.org e da Fabio @rigoni, nasce da un progetto scolastico (“Benessere in Rete 2.0 - Mastodon ed al tre diavolerie”) e costituisce il primo progetto di questo genere in Italia.

Sarebbe bello se anche altri istituti potessero seguire l'esempio del Galilei, ma a quanto pare molte scuole sono più interessate ad aprire un account Instagram che ad intraprendere una strada complessa ma ricca di opportunità gli studenti e per tutta la comunità.

Speriamo che l'esempio del Liceo Galilei possa essere seguito da altre scuole, ma sarà importante che tutta la comunità del #Fediverso contribuisca a diffondere i valori di questo progetto a tutte le scuole che conoscono.

@fediverso

mastodon.galileivr.org/

#Mastodon #Galiverso

in reply to Piero Bosio

@pierobosio@soc.bosio.info grazie al software libero, le potenzialità messe oggi a disposizione della scuola sono praticamente infinite. Purtroppo una parte della società civile si impegna attivamente per ignorarle e farle ignorare.
La scuola forse è l'unica istituzione che potrebbe riuscire a dare il via a una rivoluzione gentile per far diventare il software libero lo strumento per consolidare il diritto alla conoscenza
in reply to macfranc

@macfranc
Sì. Sono passati 12 anni ed è cambiato poco o niente in Italia. Tuttavia merita riascoltarlo.

youtu.be/gdsd2L_pqs4

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

JDownloader hackerato: malware RAT nei download Linux e Windows

@GNU/Linux Italia

linuxeasy.org/jdownloader-hack…

Sito JDownloader violato: installer Linux con malware RAT per root access. Una supply chain attack da non sottovalutare per utenti Linux.
L'articolo JDownloader hackerato: malware RAT nei download Linux e Windows proviene da Linux Easy.
E' vietato

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

Mercoledì alle 19.15 ci vediamo con @macfranc e @skariko sul canale YouTube di @BoostMediaAPS per una chiacchierata davvero interessante a tema #Fediverso , #Servizi , #News , #Divulgazione , #Alternative , #OpenSource e #Linux

Non potete mancare!

Canale BoostMedia APS 😉

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Dalla Commissione UE 50 milioni per il sostegno al ritorno dei bambini ucraini rapiti da Mosca
@news
eunews.it/2026/05/11/dalla-com…
UE, Canada e Ucraina si sono riuniti a Bruxelles per coordinare delle misure volte ad aiutare il governo di Kiev a rintracciare, rimpatriare e reintegrare i minori deportati e garantire che la Russia risponda delle proprie azioni
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

SparkyLinux 8.3 Rilasciato, arriva il supporto per Linux 7.0

@GNU/Linux Italia

linuxeasy.org/sparkylinux-8-3-…

SparkyLinux 8.3 aggiorna kernel, desktop e software principali con base Debian 13 Trixie e nuove ISO disponibili.
L'articolo SparkyLinux 8.3 Rilasciato, arriva il supporto per Linux 7.0 proviene da Linux Easy.
E'

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision 2026, la prova ufficiale della prima semifinale: il liveblogging


Eurovision 2026, la prova ufficiale della prima semifinale: il liveblogging

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

Copilot Studio accelera con .NET 10 su WebAssembly: fingerprinting automatico e AOT ottimizzato
#tech
spcnet.it/copilot-studio-accel…
@informatica


Copilot Studio accelera con .NET 10 su WebAssembly: fingerprinting automatico e AOT ottimizzato


Microsoft Copilot Studio è uno strumento di low-code per la creazione di agenti AI, e uno dei suoi punti di forza è l’esecuzione di logica C# direttamente nel browser tramite .NET WebAssembly (WASM). Di recente, il team di Copilot Studio ha completato la migrazione del motore WASM da .NET 8 a .NET 10 — e i risultati sono più che soddisfacenti. In questo articolo analizziamo in dettaglio cosa è cambiato, perché vale la pena migrare anche per le vostre applicazioni Blazor e WebAssembly, e quali ottimizzazioni concrete offre .NET 10 in questo ambito.

Il contesto: C# nel browser con .NET WebAssembly


Qualche mese fa il team di Copilot Studio aveva già pubblicato un post tecnico su come utilizzano .NET e WebAssembly per eseguire codice C# nel browser, mostrando i guadagni ottenuti passando da .NET 6 a .NET 8. Ora il ciclo si ripete con il salto a .NET 10, e la migrazione è stata descritta come sorprendentemente semplice.

Aggiornare un’applicazione WASM da .NET 8 a .NET 10 è sostanzialmente una questione di modificare il TargetFramework nei file .csproj e verificare la compatibilità delle dipendenze. Per Copilot Studio, il percorso è stato esattamente questo, e il build .NET 10 è già in produzione.

Fingerprinting automatico degli asset: addio script PowerShell personalizzati


Una delle novità più apprezzate di .NET 10 per le applicazioni WebAssembly è il fingerprinting automatico degli asset WASM. Quando si pubblica un’applicazione WebAssembly, ogni risorsa include ora un identificatore univoco nel nome del file, garantendo sia il cache-busting che l’integrità senza alcun intervento manuale.

Prima di .NET 10, Copilot Studio — come molte app WASM — doveva:

  • Leggere il manifest blazor.boot.json pubblicato per enumerare tutti gli asset.
  • Eseguire uno script PowerShell personalizzato per rinominare ogni file aggiungendo un hash SHA256.
  • Passare un argomento integrity esplicito lato JavaScript al momento del caricamento di ogni risorsa.

Con .NET 10, tutto questo è storia. Le risorse vengono importate direttamente da dotnet.js, i fingerprint fanno parte dei nomi di file pubblicati, e l’integrità è validata automaticamente. Il team ha potuto eliminare lo script di rinomina personalizzato e rimuovere l’argomento integrity dal loader JavaScript lato client.

Tip: Se caricate il runtime .NET WASM all’interno di un WebWorker, impostate dotnetSidecar = true durante l’inizializzazione per garantire il corretto avvio nel contesto worker.


Output AOT più piccolo con WasmStripILAfterAOT


L’altra novità di spicco per .NET WASM in .NET 10 è che WasmStripILAfterAOT è ora abilitato per default per le build AOT. Dopo la compilazione ahead-of-time dei metodi .NET in WebAssembly, il codice IL (Intermediate Language) originale non è più necessario a runtime: .NET 10 lo elimina dall’output pubblicato per default. In .NET 8 questa impostazione esisteva ma era disattivata.

Copilot Studio adotta una strategia di packaging più sofisticata. Per ottenere il meglio sia in termini di avvio rapido che di performance a regime, spedisce un singolo pacchetto NPM che contiene sia un motore JIT (per l’avvio veloce) che un motore AOT (per la massima velocità di esecuzione). A runtime, Copilot Studio carica JIT e AOT in parallelo: il motore JIT gestisce le interazioni iniziali, poi cede il controllo all’AOT non appena è pronto. I file identici tra i due modi vengono deduplicati per mantenere il pacchetto compatto.

Poiché WasmStripILAfterAOT produce assembly AOT che non corrispondono più alle controparti JIT, meno file possono essere condivisi tra i due motori:

  • Su .NET 8: 59 file condivisi tra JIT e AOT.
  • Su .NET 10: solo 22 file condivisi.

L’effetto netto sul pacchetto Copilot Studio è un aumento di dimensione di circa il 15%. In pratica l’impatto per gli utenti finali è contenuto, poiché il motore JIT resta quello scaricato ed eseguito per primo: l’interattività iniziale non è compromessa. Il download AOT è circa 6% (~200 ms) più lento su una LAN veloce e circa 17% (~5 secondi) più lento su una connessione 4G — tutto in background, dopo che l’app è già operativa.

I risultati di performance


I benefici a runtime superano ampiamente il costo in termini di packaging per i workload di Copilot Studio:

  • ~20% più veloce nell’esecuzione alla prima chiamata (cold path).
  • ~5% più veloce nelle chiamate successive (warm path).

I guadagni sono più visibili negli agenti grandi e complessi (“big bots”), dove il codice AOT compilato fa il grosso del lavoro. Per workload più semplici i miglioramenti sono comunque presenti ma più contenuti.

Come migrare la vostra app a .NET 10


Se avete un’applicazione Blazor o .NET WebAssembly su .NET 8, vale la pena provare .NET 10. Ecco i passi essenziali:

  1. Aggiornate <TargetFramework> a net10.0 e aggiornate i riferimenti a pacchetti Microsoft.AspNetCore.*, Microsoft.Extensions.* e System.*.
  2. Rimuovete eventuale logica personalizzata di rinomina degli asset o plumbing per l’integrity — il fingerprinting è ora integrato.
  3. Se compilate in AOT, beneficerete automaticamente del nuovo default WasmStripILAfterAOT.

Se avete bisogno di supporto per l’aggiornamento, GitHub Copilot app modernization for .NET può analizzare la soluzione, pianificare l’aggiornamento e applicare le modifiche necessarie.

Conclusione


La migrazione di Copilot Studio a .NET 10 è l’ennesima conferma che ogni release di .NET porta WebAssembly a essere più veloce, più leggero e più semplice da distribuire. La rimozione dello script di fingerprinting personalizzato è un piccolo ma significativo esempio di come il framework stia maturando: quello che prima richiedeva custom tooling è ora built-in. Se state ancora su .NET 8, questo è il momento giusto per valutare il salto.

Fonte: Copilot Studio gets faster with .NET 10 on WebAssembly — Daniel Roth, .NET Blog


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Ucraina, l’UE pensa al suo rappresentante per le trattivative (lontane) con Mosca. Kallas si candida
@news
eunews.it/2026/05/11/ucraina-l…
Per i colloqui di pace la Russia fa il nome dell'ex cancelliere tedesco Gerhard Schröder, ma i ministri degli Esteri frenano. Tajani: "Non può essere Mosca a scegliere". L'Alta rappresentante UE: "È un lobbista del Cremlino"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

Durable Workflows nel Microsoft Agent Framework: da console app ad Azure Functions
#tech
spcnet.it/durable-workflows-ne…
@informatica


Durable Workflows nel Microsoft Agent Framework: da console app ad Azure Functions


Il Microsoft Agent Framework (MAF) è un framework open source multi-linguaggio pensato per costruire, orchestrare e distribuire agenti AI. Con le ultime versioni, il framework ha introdotto un modello di programmazione a workflow che permette di comporre più agenti e unità di lavoro in pipeline multi-step. In questo articolo vedremo come funziona questo modello, come aggiungere durabilità ai workflow e come fare il deploy su Azure Functions.

Il modello di programmazione a Workflow


Il sistema si basa su due concetti fondamentali: Executor e WorkflowBuilder.

Executor: l’unità di lavoro


Un Executor è la granularità minima del workflow. Riceve un input tipizzato, lo elabora e produce un output. Si crea estendendo Executor<TInput, TOutput>:

internal sealed class OrderLookup() : Executor<OrderCancelRequest, Order>("OrderLookup")
{
    public override async ValueTask<Order> HandleAsync(
        OrderCancelRequest message,
        IWorkflowContext context,
        CancellationToken cancellationToken = default)
    {
        await Task.Delay(TimeSpan.FromMilliseconds(100), cancellationToken);
        return new Order(
            Id: message.OrderId,
            OrderDate: DateTime.UtcNow.AddDays(-1),
            IsCancelled: false,
            CancelReason: message.Reason,
            Customer: new Customer(Name: "Mario", Email: "mario@example.com"));
    }
}

internal sealed class OrderCancel() : Executor<Order, Order>("OrderCancel")
{
    public override async ValueTask<Order> HandleAsync(
        Order message, IWorkflowContext context,
        CancellationToken cancellationToken = default)
    {
        await Task.Delay(TimeSpan.FromMilliseconds(200), cancellationToken);
        return message with { IsCancelled = true };
    }
}

internal sealed class SendEmail() : Executor<Order, string>("SendEmail")
{
    public override ValueTask<string> HandleAsync(
        Order message, IWorkflowContext context,
        CancellationToken cancellationToken = default)
    {
        return ValueTask.FromResult(
            $"Email di cancellazione inviata per l'ordine {message.Id} a {message.Customer.Email}.");
    }
}

I parametri di tipo definiscono il contratto: TInput è ciò che riceve dal passo precedente, TOutput è ciò che passa al passo successivo. Il framework verifica la compatibilità dei tipi a compile time.

WorkflowBuilder: il grafo di esecuzione


Il WorkflowBuilder collega gli executor in un grafo diretto. Si definiscono gli archi tra executor e si ottiene un oggetto Workflow immutabile:

OrderLookup orderLookup = new();
OrderCancel orderCancel = new();
SendEmail sendEmail = new();

Workflow cancelOrder = new WorkflowBuilder(orderLookup)
    .WithName("CancelOrder")
    .WithDescription("Cancella un ordine e notifica il cliente")
    .AddEdge(orderLookup, orderCancel)
    .AddEdge(orderCancel, sendEmail)
    .Build();

Esecuzione in-process


Per eseguire il workflow senza dipendenze esterne si usa InProcessExecution.RunStreamingAsync. Restituisce uno StreamingRun che emette eventi man mano che ogni step completa:

var cancelRequest = new OrderCancelRequest(OrderId: "123", Reason: "Colore errato");

await using StreamingRun run = await InProcessExecution.RunStreamingAsync(
    cancelOrder, input: cancelRequest);

await foreach (WorkflowEvent evt in run.WatchStreamAsync())
{
    if (evt is ExecutorCompletedEvent completed)
        Console.WriteLine($"{completed.ExecutorId}: {completed.Data}");
}

Bastano i pacchetti NuGet Microsoft.Agents.AI e Microsoft.Agents.AI.Workflows. Nessuna infrastruttura, nessun Docker, solo una console app .NET.

Aggiungere la durabilità con DurableTask


L’esecuzione in-process perde lo stato se il processo termina. Per workflow di produzione — che devono sopravvivere ai riavvii, girare per ore e rimanere osservabili — si aggiunge il pacchetto Microsoft.Agents.AI.DurableTask:

dotnet add package Microsoft.Agents.AI.DurableTask --prerelease
dotnet add package Microsoft.DurableTask.Client.AzureManaged
dotnet add package Microsoft.DurableTask.Worker.AzureManaged
dotnet add package Microsoft.Extensions.Hosting

Il runtime durable fornisce:
  • Esecuzione stateful e durabile: il workflow sopravvive ai riavvii del processo
  • Checkpointing automatico: il progresso viene salvato dopo ogni step
  • Esecuzione distribuita: gli executor possono girare su macchine diverse
  • Orchestrazioni long-running: i workflow possono durare minuti, ore o giorni
  • Osservabilità: dashboard integrata per monitorare e gestire le esecuzioni

Il punto chiave è che la definizione del workflow non cambia. Si usa lo stesso WorkflowBuilder, cambia solo l’hosting:

string dtsConnectionString = "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None";

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.ConfigureDurableWorkflows(
            workflowOptions => workflowOptions.AddWorkflow(cancelOrder),
            workerBuilder: builder => builder.UseDurableTaskScheduler(dtsConnectionString),
            clientBuilder: builder => builder.UseDurableTaskScheduler(dtsConnectionString));
    })
    .Build();

await host.StartAsync();

IWorkflowClient workflowClient = host.Services.GetRequiredService<IWorkflowClient>();
IAwaitableWorkflowRun run = (IAwaitableWorkflowRun)await workflowClient
    .RunAsync(cancelOrder, new OrderCancelRequest("12345", "Colore errato"));

string? result = await run.WaitForCompletionAsync<string>();
Console.WriteLine($"Workflow completato: {result}");

Per lo sviluppo locale si avvia il DTS Emulator in Docker:
docker run -d --name dts-emulator   -p 8080:8080 -p 8082:8082   mcr.microsoft.com/dts/dts-emulator:latest

La dashboard è disponibile su http://localhost:8082 e mostra la timeline di ogni executor, gli input/output per ciascun step e lo stato delle esecuzioni.

Fan-Out / Fan-In con agenti AI


Uno dei pattern più potenti è il fan-out/fan-in: più agenti AI elaborano lo stesso input in parallelo, poi un executor aggrega i risultati. MAF supporta l’uso diretto di agenti AI come executor tramite il metodo estensione AsAIAgent:

AIAgent physicist = chatClient.AsAIAgent(
    "Sei un esperto di fisica. Rispondi in 2-3 frasi concise.", "Physicist");

AIAgent chemist = chatClient.AsAIAgent(
    "Sei un esperto di chimica. Rispondi in 2-3 frasi concise.", "Chemist");

Workflow workflow = new WorkflowBuilder(parseQuestion)
    .WithName("ExpertReview")
    .AddFanOutEdge(parseQuestion, [physicist, chemist])
    .AddFanInBarrierEdge([physicist, chemist], aggregator)
    .Build();

Con il runtime durable, il fisico potrebbe eseguire su una VM e il chimico su un’altra. Se il processo si riavvia a metà esecuzione, gli agenti già completati non vengono rieseguiti grazie al checkpointing.

Deploy su Azure Functions


Per il deploy serverless si aggiunge il pacchetto Microsoft.Agents.AI.Hosting.AzureFunctions. I vantaggi:

  • Scaling serverless: Azure Functions scala automaticamente in base al carico
  • HTTP endpoint automatici: ogni workflow registrato ottiene un HTTP trigger, senza scrivere controller o routing
  • Supporto MCP: i workflow possono essere esposti come MCP tool con un singolo flag, rendendoli scopribili da altri agenti AI
  • Zero boilerplate: il pacchetto genera orchestratori e activity function automaticamente


Conclusioni


Il Microsoft Agent Framework propone un’astrazione pulita per costruire workflow di agenti AI: si definisce il grafo una volta sola, e si sceglie il runtime — in-process per lo sviluppo, durable per la produzione, Azure Functions per il serverless. La separazione netta tra definizione del workflow e modalità di hosting è il punto di forza dell’approccio: consente di passare da un prototipo locale a un’orchestrazione distribuita con modifiche minime al codice.

Il framework è open source e in evoluzione rapida. Il codice di esempio completo è disponibile nella repository GitHub del Microsoft Agent Framework.

Fonte originale: Durable Workflows in the Microsoft Agent Framework — .NET Blog, Shyju Krishnankutty


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

ECDC: “Possibili ulteriori casi di Hantavirus nelle prossime settimane”
@news
eunews.it/2026/05/11/ecdc-poss…
La Commissione UE: "In base all'ultima valutazione dell'Organizzazione mondiale della sanità, il rischio per la popolazione europea in generale legato all'Hantavirus è attualmente considerato basso"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Trump fa di tutto per distogliere l'attenzione dal caso epstein, ma gli americani non dimenticano - a New York nasce la "Donald j. Trump and Jeffrey epstein memorial reading room"

È una sala di lettura che espone le oltre 3,5 milioni di pagine degli epstein files - l'installazione include anche delle candele commemorative per le oltre 1.200 vittime del finanziere pedofilo e una cronologria dei rapporti tra epstein e il tycoon

dagospia.com/cronache/new-york…

@politica

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Il documentario "Generazione Fumetto" è nelle sale come evento speciale da oggi 11 maggio fino al 13 maggio 2026. Analizza l’evoluzione del fumetto in Italia attraverso interviste e testimonianze tra cui Simone Albrigi (@sio) #MirkaAndolfo, #GiacomoKeisonBevilacqua (#apandapice), Rita Petruccioli (@ritapetruccioli), Sara Pichelli, Michele Rech (#Zerocalcare), Michael Rocchetti (@maicolemirco).

CC @fumetti@feddit.it & @fumetti@mastodon.uno

#illustrazione #comics #fumetti #graphicnovels #manga

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

La Space Economy si riunisce a Venezia e cerca capitali europei

@scienza

Al via la tre giorni di Space Meetings Veneto, giro d'affari da 600 miliardi

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

La Commissione UE propone nuovi parametri per il sistema ETS: all’industria 4 miliardi
@news
eunews.it/2026/05/11/la-commis…
Secondo quanto previsto dalla proposta, le industrie continueranno a ricevere in media un'allocazione gratuita pari a circa il 75 per cento delle emissioni di CO2
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Debian blocca i pacchetti non riproducibili nella repository Testing

@GNU/Linux Italia

linuxeasy.org/debian-blocca-i-…

Debian blocca i pacchetti non riproducibili in Testing e rafforza il controllo sulla sicurezza della supply chain.
L'articolo Debian blocca i pacchetti non riproducibili nella repository

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Nato e Giappone studiano l’uso condiviso delle basi spaziali

@Notizie dall'Italia e dal mondo

La Nato ha proposto a Giappone, Corea del Sud, Australia e Nuova Zelanda, secondo quanto rivelato dal quotidiano giapponese Nikkei, di partecipare a StarLift, un progetto di cooperazione spaziale pensato per lanciare satelliti sostitutivi e ripristinare rapidamente le reti orbitali in caso di

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

ShinyHunters viola Canvas: 275 milioni di studenti nel mirino nel più grande data breach educativo della storia


@Informatica (Italy e non Italy)
ShinyHunters ha violato Instructure (Canvas) sottraendo 3,65 TB di dati di 275 milioni di studenti e insegnanti in 8.809 istituzioni di 8 Paesi, con deadline di riscatto al 12 maggio 2026. Il


ShinyHunters viola Canvas: 275 milioni di studenti nel mirino nel più grande data breach educativo della storia


Il gruppo di estorsione digitale ShinyHunters ha violato Instructure, la società madre della piattaforma di e-learning Canvas, sottraendo 3,65 terabyte di dati relativi a circa 275 milioni di studenti e insegnanti distribuiti in 8.809 istituzioni scolastiche in tutto il mondo. L’attacco, rivendicato il 3 maggio 2026 e tuttora in evoluzione con un ultimatum di riscatto fissato al 12 maggio, è già classificato come il più grande data breach della storia nel settore dell’istruzione — con implicazioni che vanno ben oltre la semplice esfiltrazione di dati anagrafici.

La timeline dell’attacco


La prima anomalia rilevata è datata 29 aprile 2026, quando alcuni strumenti di Canvas iniziarono a mostrare malfunzionamenti. Il giorno successivo, Instructure confermò internamente una violazione criminale in corso e ingaggiò esperti forensi esterni. Il 3 maggio, ShinyHunters rivendicò pubblicamente l’attacco su forum underground, pubblicando campioni dei dati come prova. Il 7 maggio — in un’escalation particolarmente aggressiva — il gruppo defacciò le pagine di login di numerose istituzioni scolastiche clienti di Canvas, sostituendole con un messaggio di estorsione visibile a milioni di studenti nel pieno del periodo degli esami di fine anno accademico.

La scelta del momento non è casuale: colpire a maggio, durante le sessioni d’esame universitarie negli USA, nel Regno Unito e in Australia, massimizza la pressione mediatica e istituzionale, aumentando la probabilità che la vittima ceda alle richieste di riscatto.

Il vettore d’attacco: account Free-For-Teacher e abuso OAuth


Secondo le prime ricostruzioni rese note da Instructure, il punto d’ingresso iniziale è stato un’vulnerabilità legata agli account Free-For-Teacher, un tipo di account gratuito offerto da Canvas agli insegnanti per uso personale o sperimentale, con autorizzazioni API più ampie rispetto agli account studente standard. ShinyHunters, noto per la sua expertise nell’abuso di piattaforme cloud enterprise attraverso tecniche di vishing, furto di credenziali e abuso OAuth, ha sfruttato questo vettore per ottenere token di accesso con privilegi elevati all’infrastruttura di Instructure.

Il modus operandi del gruppo in operazioni precedenti — tra cui le violazioni di Snowflake (2024) e Salesforce — segue uno schema consolidato: compromissione di account cloud di terze parti con accesso API, escalation dei privilegi tramite token OAuth mal configurati o rubati, esfiltrazione massiva di dati in formato strutturato (database dump, CSV), e infine doppia estorsione con pubblicazione progressiva di campioni come leva negoziale.

La scala senza precedenti: chi è stato colpito


Con 8.809 istituzioni coinvolte in almeno otto Paesi — Stati Uniti, Canada, Regno Unito, Nuova Zelanda, Australia, Svezia, Paesi Bassi e Singapore — il breach Canvas supera qualsiasi precedente nella storia delle violazioni del settore education. Tra le istituzioni nominalmente esposte figurano MIT, Oxford, Duke University, University of Pennsylvania e centinaia di altre università di primo piano a livello globale.

I dati sottratti confermati includono: nomi e cognomi, indirizzi email istituzionali, numeri di matricola, iscrizioni ai corsi e — particolarmente sensibile — messaggi privati scambiati tra studenti e docenti. Instructure ha dichiarato che non risultano compromesse password, date di nascita, documenti d’identità governativi o informazioni finanziarie, ma l’entità dell’esfiltrazione — 3,65 TB — suggerisce che il quadro completo dei dati sottratti non sia ancora del tutto chiaro.

ShinyHunters: il profilo del gruppo


ShinyHunters è un gruppo di estorsione digitale attivo almeno dal 2020, noto per operazioni ad alto impatto contro piattaforme cloud. Nel curriculum del gruppo figurano violazioni di Tokopedia (91 milioni di record), Wattpad, Mathway, Pluto TV, e la già citata campagna Snowflake del 2024 che colpì centinaia di aziende Fortune 500 tramite furto di credenziali di clienti cloud. Il gruppo non dispone di una struttura ransomware con cifratura dei file: la loro arma primaria è la minaccia di pubblicazione dei dati, amplificata da azioni di defacement visibili (come le pagine login di Canvas sostituite) che generano massima pressione mediatica.

La deadline del 12 maggio 2026 per il pagamento del riscatto è in scadenza nei prossimi giorni. Non è noto l’importo richiesto. Instructure non ha confermato né smentito trattative in corso.

Cosa devono fare istituzioni e utenti


Le istituzioni che utilizzano Canvas devono agire immediatamente su più fronti: rotazione di tutte le API key Canvas, revoca e re-emissione di tutti i token OAuth attivi, verifica delle integrazioni SSO con provider di identità istituzionali, e audit degli account Free-For-Teacher attivi nella propria istanza. Per gli utenti finali, il rischio principale nelle settimane successive sarà quello di campagne di phishing personalizzate, che sfrutteranno i dati esfiltrati (email istituzionali, nomi dei corsi, messaggi privati) per costruire lure altamente credibili. La ricezione di email apparentemente provenienti da docenti, segreterie o piattaforme universitarie deve essere trattata con massima cautela per almeno i prossimi 90 giorni.

## Indicatori e dati chiave del breach Canvas/ShinyHunters
Data prima anomalia: 29 aprile 2026
Data rivendicazione: 3 maggio 2026
Data defacement login pages: 7 maggio 2026
Deadline riscatto: 12 maggio 2026
Volume dati sottratti: ~3,65 TB
Record compromessi (claim ShinyHunters): ~275 milioni
Istituzioni coinvolte: 8.809 (in 8+ Paesi)
Vettore iniziale: account Free-For-Teacher + abuso OAuth API
Dati confermati compromessi: nome, email, student ID, messaggi privati
Dati NON compromessi (Instructure): password, date nascita, ID gov., dati finanziari

## Azioni immediate per amministratori Canvas
1. Ruotare tutte le Canvas API key
2. Revocare e re-emettere i token OAuth attivi
3. Verificare integrazioni SSO e provider identità
4. Auditare account Free-For-Teacher attivi
5. Abilitare MFA per tutti gli account amministrativi

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Non solo Iran. Il futuro della Nato si gioca anche nel fronte sud

@Notizie dall'Italia e dal mondo

Le sfide dell’oggi, come il rapporto con gli Usa e le guerre. Quelle di domani, come il dibattito al prossimo vertice di Ankara nella consapevolezza che, come osservato da Giorgia Meloni, è il fronte sud a rappresentare una opportunità e una prospettiva. La Delegazione italiana presso

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Darkthrone Pre-historic metal

Darkthrone Pre-historic Metal: il ritorno della vecchia scuola
Scopri "Darkthrone Pre-historic metal", un disco che celebra il metal vecchia scuola in tutte le sue forme: black, doom e speed metal. Imperdibile per gli amanti del genere. #Darkthrone #PreHistoricMetal #MetalVecchiaScuola #BlackMetal #DoomMetal #SpeedMetal #MetalEstremo

iyezine.com/darkthrone-pre-his…

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Tajani esorta Berlino a non ostacolare UniCredit nell’acquisto di Commerzbank
@news
eunews.it/2026/05/11/tajani-es…
Il ministro degli Esteri lancia una frecciata alla Germania: "Sono sempre stato sostenitore del libero mercato e per l'unione bancaria". E ai partner tutti: "L'Europa cambi passo"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Con il governo Meloni i fondi per il cinema sono sempre meno
@politica
pagellapolitica.it/articoli/go…
Nel 2027 il livello minimo di finanziamento statale scenderà a 500 milioni di euro, contro i 750 milioni del 2022
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision 2026, le prove della prima semifinale: caduta in scena per l’Italia


Eurovision 2026, le prove della prima semifinale: caduta in scena per l’Italia

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

L’UE approva sanzioni contro i coloni israeliani violenti in Cisgiordania
@news
eunews.it/2026/05/11/lue-appro…
Il consiglio Affari esteri trova l'intesa per iscrivere nella lista nera UE i soggetti violenti negli insediamenti illegali, ma insieme ai rappresentanti di Hamas. Tajani: "Importante passo avanti"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Il nuovo post di universita-it: Sciopero generale 18 maggio

Qui il post completo: universita.it/sciopero-general…

@universitaly

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Linux valuta un killswitch per limitare le vulnerabilità più pericolose

@GNU/Linux Italia

linuxeasy.org/linux-valuta-un-…

Il kernel Linux valuta un killswitch per disattivare funzioni vulnerabili e ridurre il rischio tra disclosure e patch.
L'articolo Linux valuta un killswitch per limitare le

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

Kubernetes v1.36: Sharded List and Watch lato server per cluster ad alta scala
#tech
spcnet.it/kubernetes-v1-36-sha…
@informatica


Kubernetes v1.36: Sharded List and Watch lato server per cluster ad alta scala


Con la crescita dei cluster Kubernetes verso decine di migliaia di nodi, i controller che osservano risorse ad alta cardinalità come i Pod si scontrano con un limite di scalabilità ben preciso. Kubernetes v1.36 introduce in alpha una soluzione elegante: il Server-Side Sharded List and Watch (KEP-5866), che sposta il filtraggio upstream nell’API server, riducendo drasticamente il traffico verso ogni replica di un controller.

Il problema: scaling client-side


Alcuni controller, come kube-state-metrics, supportano già lo sharding orizzontale: ogni replica è assegnata a una porzione dello spazio delle chiavi e scarta gli oggetti che non le appartengono. Questo approccio funziona dal punto di vista della correttezza, ma non risolve il problema di scala:

  • N repliche × stream completo: ogni replica deserializza ed elabora ogni evento, poi scarta ciò che non le compete
  • La banda di rete scala con le repliche, non con la dimensione dello shard
  • CPU sprecata: il costo di deserializzazione è sostenuto per la frazione scartata

In sintesi, scalare orizzontalmente il controller moltiplica il costo per replica invece di ridurlo.

La soluzione: sharding lato server


Il Server-Side Sharded List and Watch risolve il problema spostando il filtraggio nell’API server. Ogni replica comunica all’API server quale intervallo di hash è di sua competenza, e l’API server invia solo gli eventi corrispondenti.

La feature aggiunge un campo shardSelector a ListOptions. I client specificano un intervallo di hash tramite la funzione shardRange():

shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')

L’API server calcola un hash FNV-1a a 64 bit deterministico del campo specificato e restituisce solo gli oggetti il cui hash ricade nell’intervallo [start, end). Questo vale sia per le risposte di list che per i flussi di eventi watch.

La funzione di hash produce lo stesso risultato su tutte le istanze dell’API server, quindi la feature è sicura anche con più repliche dell’API server.

I percorsi di campo attualmente supportati sono object.metadata.uid e object.metadata.namespace.

Utilizzo pratico nei controller


I controller tipicamente usano informer per fare list e watch sulle risorse. Per fare lo sharding del carico, ogni replica inietta il shardSelector nelle ListOptions usate dai suoi informer tramite WithTweakListOptions:

import (
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/informers"
)

shardSelector := "shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')"

factory := informers.NewSharedInformerFactoryWithOptions(
    client,
    resyncPeriod,
    informers.WithTweakListOptions(func(opts *metav1.ListOptions) {
        opts.ShardSelector = shardSelector
    }),
)

Per un deployment con 2 repliche, i selettori dividono lo spazio degli hash a metà:
// Replica 0: metà inferiore dello spazio di hash
"shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')"

// Replica 1: metà superiore dello spazio di hash
"shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')"

Una singola replica può anche coprire range non contigui usando ||:
"shardRange(object.metadata.uid, '0x0000000000000000', '0x4000000000000000') || " +
"shardRange(object.metadata.uid, '0x8000000000000000', '0xc000000000000000')"

Verificare che il server supporti il selettore


Quando l’API server onora un shard selector, la risposta list include un campo shardInfo nel metadata della risposta che riporta il selettore applicato:

{
  "kind": "PodList",
  "apiVersion": "v1",
  "metadata": {
    "resourceVersion": "10245",
    "shardInfo": {
      "selector": "shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')"
    }
  },
  "items": [ ... ]
}

Se shardInfo è assente, il server non ha applicato il shard selector e il client ha ricevuto la collezione completa non filtrata. In questo caso, il client deve essere pronto a gestire il risultato completo — ad esempio applicando un filtraggio client-side per scartare gli oggetti fuori dal proprio shard.

Come abilitarla e stato della feature


Questa feature è in alpha in Kubernetes v1.36 e richiede di abilitare il feature gate ShardedListAndWatch sull’API server:

--feature-gates=ShardedListAndWatch=true

Non è ancora consigliata per ambienti di produzione, ma rappresenta un’opportunità preziosa per i team che gestiscono cluster di grandi dimensioni di iniziare i test e fornire feedback al SIG API Machinery.

Implicazioni architetturali


L’impatto di questa feature va oltre la semplice riduzione del traffico di rete. Cambia il modello mentale con cui si progettano controller scalabili:

  • Efficienza reale: il costo per replica diminuisce proporzionalmente al numero di shard, invece di aumentare
  • Scalabilità lineare: aggiungere repliche riduce effettivamente il carico su ciascuna
  • Semplicità implementativa: lo sharding è dichiarativo — si specifica l’intervallo, l’API server fa il resto
  • Compatibilità hash deterministica: FNV-1a garantisce distribuzione uniforme e risultati coerenti su più API server


Conclusioni


Il Server-Side Sharded List and Watch è una di quelle feature che risolvono un problema reale per chi opera cluster Kubernetes di grandi dimensioni. Spostare il filtraggio nell’API server è la scelta architetturalmente corretta: elimina il lavoro inutile alla radice invece di cercare di ottimizzarlo lato client.

Per i controller author e gli operatori di cluster grandi, vale la pena iniziare a sperimentare con questa feature sin da ora, contribuendo feedback al team di SIG API Machinery tramite il canale #sig-api-machinery su Kubernetes Slack.

Fonte originale: Kubernetes v1.36: Server-Side Sharded List and Watch — Kubernetes Blog, Jeffrey Ying


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Il ministro degli Esteri siriano: Nel Paese non esistono minoranze, ma un unico popolo
@news
eunews.it/2026/05/11/il-minist…
Le organizzazioni internazionali, però, denunciano continue violazioni dei diritti umani, con discriminazioni che possono essere subite da curdi, drusi, alawiti, cristiani e palestinesi. Mentre a sud, le operazioni delle forze israeliane mettono a rischio vite umane
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

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

Costruire un MCP Server in C#: agenti AI con contesto reale usando il Model Context Protocol
#tech
spcnet.it/costruire-un-mcp-ser…
@informatica


Costruire un MCP Server in C#: agenti AI con contesto reale usando il Model Context Protocol


Uno degli ostacoli più concreti nel lavorare con agenti AI è la mancanza di contesto reale: i modelli linguistici hanno una conoscenza “congelata” nel tempo e non hanno accesso ai vostri dati aziendali, alle vostre API interne o agli strumenti specifici del dominio. Il Model Context Protocol (MCP) nasce per risolvere esattamente questo problema, standardizzando il modo in cui applicazioni e agenti AI si scambiano contesto e strumenti. In questo articolo vediamo come i developer .NET possono costruire un MCP Server in C# e integrarlo con agenti AI come GitHub Copilot.

Cos’è il Model Context Protocol


MCP è un protocollo aperto — originariamente sviluppato da Anthropic e ora supportato da numerose aziende tech — che definisce un linguaggio comune tra agenti AI e endpoint specializzati. L’idea è semplice: un MCP Server espone tool (funzioni invocabili), resource (dati strutturati) e prompt (template riutilizzabili) che un agente AI può scoprire e usare dinamicamente. Il risultato è un’integrazione grounded e sicura, in cui l’agente sa cosa può fare e con quali dati lavorare.

Per i developer .NET c’è una buona notizia: esiste un SDK C# ufficiale per MCP che rende la costruzione di server e client MCP relativamente semplice, integrabile con il familiare ecosistema di Microsoft.Extensions.

Struttura base di un MCP Server in C#


Il punto di partenza è un’applicazione console .NET. Le dipendenze NuGet necessarie nel file .csproj sono:

<ItemGroup>
  <PackageReference Include="ModelContextProtocol" Version="*" />
  <PackageReference Include="Microsoft.Extensions.Hosting" Version="*" />
</ItemGroup>

Il pacchetto ModelContextProtocol fornisce le API per creare server e client MCP, mentre l’integrazione con Microsoft.Extensions.AI consente di collegare i tool a modelli AI tramite le astrazioni standard di .NET.

Definire i Tool con gli attributi MCP


La magia di MCP in C# passa attraverso due attributi principali: [McpServerToolType] applicato alla classe e [McpServerTool] applicato ai metodi. Ecco un esempio minimale con un tool Echo:

using ModelContextProtocol.Server;
using System.ComponentModel;

[McpServerToolType]
public static class EchoTool
{
    [McpServerTool, Description("Restituisce il messaggio ricevuto al mittente.")]
    public static string Echo(string message) => $"Hai detto: {message}";
}

L’attributo [Description] è fondamentale: il testo viene esposto all’agente AI come documentazione del tool, influenzando direttamente se e quando l’agente decide di invocarlo. Scrivete descrizioni chiare e precise.

Vediamo ora un tool più realistico che chiama un’API HTTP e restituisce dati JSON:

using System.ComponentModel;
using System.Net.Http.Json;
using System.Text.Json;
using ModelContextProtocol.Server;

[McpServerToolType]
public static class PostDataTool
{
    [McpServerTool, Description("Recupera un elenco di post di esempio dall'API.")]
    public static async Task<string> GetSamplePosts()
    {
        using var client = new HttpClient
        {
            BaseAddress = new Uri("https://jsonplaceholder.typicode.com")
        };
        var posts = await client.GetFromJsonAsync<List<Post>>("/posts");
        return JsonSerializer.Serialize(posts ?? new List<Post>());
    }
}

public class Post
{
    public int Id { get; set; }
    public string? Title { get; set; }
    public string? Body { get; set; }
}

Configurare il server in Program.cs


La configurazione del server MCP avviene in Program.cs, sfruttando il generic host di .NET:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var builder = Host.CreateApplicationBuilder(args);

builder.Services
    .AddMcpServer()
    .WithStdioServerTransport()   // trasporto stdio per uso locale / VS Code
    .WithToolsFromAssembly();     // scoperta automatica di tutti i [McpServerToolType]

await builder.Build().RunAsync();

Il trasporto stdio è il più comune per server locali e per l’integrazione con VS Code. Per scenari più avanzati (server HTTP remoti, autenticazione OAuth) l’SDK supporta trasporti SSE e altri meccanismi.

Registrare il server in VS Code


Per rendere il server MCP disponibile a VS Code e a GitHub Copilot, create un file .vscode/mcp.json nella root del progetto:

{
  "servers": {
    "MyMcpServer": {
      "type": "stdio",
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/percorso/completo/MyMcpServer.csproj"
      ]
    }
  }
}

VS Code legge questo file e avvia automaticamente il server MCP quando necessario. I tool vengono esposti nella chat di GitHub Copilot con il prefisso #NomeServer.

Testare con l’MCP Inspector


Prima di integrare il server con un agente AI reale, è utile verificarne il funzionamento con l’MCP Inspector, uno strumento interattivo basato su Node.js con frontend React. Non richiede installazione: basta eseguire:

npx @modelcontextprotocol/inspector

Dall’Inspector potete connettervi al vostro server .NET, esplorare i tool esposti, invocarli con parametri di test e verificare le risposte JSON — tutto senza dover aprire VS Code.

Integrazione con GitHub Copilot in modalità agente


Con il server registrato in mcp.json, GitHub Copilot in modalità Agent può scoprire e invocare i vostri tool. Nella chat è sufficiente fare riferimento a un tool con #NomeServer_NomeTool, oppure chiedere all’agente di completare un compito e lasciare che sia lui a decidere quali tool usare.

L’agente chiederà conferma prima di eseguire qualsiasi tool (a meno che non abbiate abilitato l’approvazione automatica per la sessione), e il risultato viene usato come contesto per la risposta successiva. Questo pattern è particolarmente potente quando il tool restituisce dati specifici del dominio — configurazioni di sistema, query a database interni, stati di pipeline CI/CD — che il modello non potrebbe altrimenti conoscere.

Scenari pratici per developer .NET


Alcuni use case concreti per un MCP Server in C#:

  • Query al database aziendale: esporre viste o stored procedure come tool MCP per permettere all’agente di rispondere a domande sui dati reali.
  • Integrazione con sistemi interni: wrappare API REST o servizi WCF legacy come tool MCP senza riscrivere nulla.
  • Automazione DevOps: tool per interrogare lo stato di pipeline, deployment o metriche di monitoring direttamente dalla chat dell’agente.
  • Contesto di progetto: esporre convenzioni architetturali, ADR (Architecture Decision Records) o specifiche di dominio come risorse MCP per guidare la generazione di codice.


Conclusione


Il Model Context Protocol è ancora in evoluzione, ma le fondamenta sono solide e l’adozione sta crescendo rapidamente. Per i developer .NET, l’SDK C# rende la costruzione di MCP Server accessibile e naturale, senza allontanarsi dalle convenzioni del framework. Investire oggi nel capire MCP significa essere pronti quando gli agenti AI diventeranno parte integrante del workflow di sviluppo quotidiano — e quel momento è già più vicino di quanto sembri.

Fonti: MCP Magic: Building Tool-Enabled AI Agents with C# — Visual Studio Magazine; Build & Leverage MCP Servers in C# for AI-Driven Development — Uno Platform


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Bitonci, Veneto pronto a giocare da protagonista sulla Space Economy

@scienza

'Declinare sui territori la legge quadro nazionale'

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Weather Replay: la nuova app europea è come una “macchina del tempo” digitale per esplorare il clima del passato
@news
eunews.it/2026/05/11/weather-r…
Dal 1940 a oggi: la nuova piattaforma di Copernicus rende accessibili ottant'anni di storia climatica globale in un'unica app