<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dev-Iadicola</title>
    <description>The latest articles on DEV Community by Dev-Iadicola (@dev_iadicola).</description>
    <link>https://dev.to/dev_iadicola</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2138925%2F6dd30c44-71a1-4568-a668-759ac9486600.png</url>
      <title>DEV Community: Dev-Iadicola</title>
      <link>https://dev.to/dev_iadicola</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_iadicola"/>
    <language>en</language>
    <item>
      <title>PHP Attributes in Laravel 13: addio alle property sparse nei modelli</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:10:06 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/php-attributes-in-laravel-13-addio-alle-property-sparse-nei-modelli-17ff</link>
      <guid>https://dev.to/dev_iadicola/php-attributes-in-laravel-13-addio-alle-property-sparse-nei-modelli-17ff</guid>
      <description>&lt;h2&gt;
  
  
  Il problema delle property sparse nei modelli Eloquent
&lt;/h2&gt;

&lt;p&gt;Fino a Laravel 12, configurare un modello Eloquent significava definire proprietà come &lt;code&gt;$table&lt;/code&gt;, &lt;code&gt;$fillable&lt;/code&gt;, &lt;code&gt;$hidden&lt;/code&gt;, &lt;code&gt;$casts&lt;/code&gt; e &lt;code&gt;$primaryKey&lt;/code&gt; sparse nel corpo della classe. Con modelli complessi — quelli con decine di campi, relazioni multiple e accessor personalizzati — queste dichiarazioni si mescolano a relazioni e metodi, rendendo il codice meno leggibile e più difficile da navigare.&lt;/p&gt;

&lt;p&gt;Il problema e particolarmente evidente nei progetti di grandi dimensioni. Quando un modello supera le 200 righe, trovare rapidamente quali campi sono fillable o quali cast sono applicati richiede di scorrere tutto il file. Per chi lavora come &lt;strong&gt;freelance PHP&lt;/strong&gt; su progetti di clienti diversi, questa dispersione delle informazioni rallenta l'onboarding e aumenta il rischio di errori.&lt;/p&gt;

&lt;h2&gt;
  
  
  La soluzione: PHP Attributes nativi in Laravel 13
&lt;/h2&gt;

&lt;p&gt;Laravel 13 introduce i &lt;strong&gt;PHP Attributes nativi&lt;/strong&gt; come alternativa opzionale alle proprietà tradizionali. Tutte le configurazioni del modello possono essere dichiarate in modo compatto sopra la classe, usando la sintassi nativa di PHP 8.1+ che fino ad ora il framework non sfruttava appieno.&lt;/p&gt;

&lt;p&gt;La differenza e immediata: aprendo un file modello, le prime righe dopo la dichiarazione della classe comunicano immediatamente cosa fa quel modello, senza dover scorrere il codice alla ricerca delle proprietà.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sintassi a confronto: prima e dopo
&lt;/h3&gt;

&lt;p&gt;Ecco come cambia la dichiarazione di un modello tipico:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;#[Table('users')]&lt;/code&gt; al posto di &lt;code&gt;protected $table = 'users'&lt;/code&gt; — la tabella di riferimento e dichiarata come attributo della classe&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#[Fillable(['name', 'email', 'password'])]&lt;/code&gt; al posto di &lt;code&gt;protected $fillable = [...]&lt;/code&gt; — i campi compilabili in mass assignment&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#[Hidden(['password', 'remember_token'])]&lt;/code&gt; per nascondere campi dalla serializzazione JSON&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#[Cast('email_verified_at', 'datetime')]&lt;/code&gt; per definire i cast dei campi del database&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#[PrimaryKey('uuid')]&lt;/code&gt; per modelli con chiave primaria personalizzata&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dove si applicano gli Attributes in Laravel 13
&lt;/h2&gt;

&lt;p&gt;Gli Attributes non sono limitati ai modelli Eloquent. Laravel 13 li supporta in oltre 15 punti del framework:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Controller&lt;/strong&gt;: middleware, prefissi di rotta e gruppi definiti come attributi della classe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job&lt;/strong&gt;: connessione, coda, tentativi e timeout dichiarati sopra la classe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comandi Artisan&lt;/strong&gt;: signature e description come attributi nativi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listener&lt;/strong&gt;: evento ascoltato e coda di esecuzione&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mailable&lt;/strong&gt;: subject, from e queue configuration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification&lt;/strong&gt;: canali e configurazione di delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In ogni caso, la vecchia sintassi a proprietà resta supportata al 100%. Non c'e nessun obbligo di migrare: si può adottare gradualmente, partendo dai modelli nuovi e convertendo quelli esistenti quando ha senso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vantaggi concreti per lo sviluppo quotidiano
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Leggibilità migliorata
&lt;/h3&gt;

&lt;p&gt;Con gli Attributes, aprire un modello e capire la sua configurazione richiede un colpo d'occhio. Le informazioni strutturali — tabella, fillable, hidden, casts — sono raggruppate in cima al file, separate dalla logica di business come relazioni, scope e accessor. Questo e particolarmente utile durante le code review e il pair programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Meno errori di configurazione
&lt;/h3&gt;

&lt;p&gt;La sintassi degli Attributes e più restrittiva rispetto alle proprietà PHP classiche. Un errore di battitura nel nome dell'attributo viene intercettato dall'IDE o dallo static analysis tool prima ancora di eseguire il codice. Con le proprietà tradizionali, una &lt;code&gt;$tabel&lt;/code&gt; al posto di &lt;code&gt;$table&lt;/code&gt; non genera errori — semplicemente non funziona.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coerenza tra componenti
&lt;/h3&gt;

&lt;p&gt;Usare la stessa sintassi per modelli, controller, job e notification crea una coerenza stilistica che rende il codice più prevedibile. Quando ogni componente del framework adotta lo stesso pattern dichiarativo, lo sviluppatore sa sempre dove trovare le informazioni di configurazione.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerazioni sulle performance
&lt;/h2&gt;

&lt;p&gt;Una domanda legittima: gli Attributes hanno un impatto sulle &lt;strong&gt;performance&lt;/strong&gt;? La risposta e no, per un motivo tecnico preciso. Laravel legge gli Attributes una sola volta al boot del modello e li mette in cache. In produzione, con la route cache e la config cache attive, il costo aggiuntivo e trascurabile — nell'ordine dei microsecondi.&lt;/p&gt;

&lt;p&gt;In fase di sviluppo locale, dove la cache non e attiva, l'overhead della reflection e comunque minimo e non percepibile nella pratica quotidiana.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come migrare i modelli esistenti
&lt;/h2&gt;

&lt;p&gt;La migrazione e semplice e può essere fatta in modo incrementale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scegliere un modello di partenza, preferibilmente uno piccolo e ben testato&lt;/li&gt;
&lt;li&gt;Sostituire le proprietà con gli Attributes corrispondenti&lt;/li&gt;
&lt;li&gt;Eseguire la test suite per verificare che il comportamento sia identico&lt;/li&gt;
&lt;li&gt;Procedere con i modelli successivi, uno alla volta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Non c'e fretta di convertire tutto: i modelli con Attributes e quelli con proprietà tradizionali convivono senza problemi nello stesso progetto. La regola pratica e: modelli nuovi con Attributes, modelli esistenti convertiti quando li si tocca per altri motivi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporto IDE e tooling
&lt;/h2&gt;

&lt;p&gt;PhpStorm e VS Code con l'estensione PHP Intelephense riconoscono già gli Attributes di Laravel 13. L'autocompletamento funziona, la navigazione ai sorgenti e supportata e gli errori di sintassi vengono evidenziati in tempo reale. Anche &lt;strong&gt;PHPStan&lt;/strong&gt; e &lt;strong&gt;Larastan&lt;/strong&gt; supportano l'analisi statica degli Attributes, garantendo lo stesso livello di sicurezza delle proprietà tradizionali.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il contesto più ampio: PHP verso un linguaggio dichiarativo
&lt;/h2&gt;

&lt;p&gt;L'adozione degli Attributes in Laravel 13 non e un caso isolato. PHP come linguaggio si sta muovendo verso uno stile più dichiarativo: le enum introdotte in PHP 8.1, i tipi readonly, le classi readonly di PHP 8.2, e ora l'uso massiccio degli Attributes nei framework principali. Symfony li usa già da tempo per le rotte e la dependency injection; ora anche Laravel li abbraccia pienamente.&lt;/p&gt;

&lt;p&gt;Per chi sviluppa in PHP professionalmente, adottare gli Attributes non e solo una questione di sintassi: e allinearsi alla direzione in cui il linguaggio e l'ecosistema si stanno muovendo.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/php-attributes-laravel-13-addio-property-sparse-modelli?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Gli agenti AI di OpenAI hanno aggirato i controlli di sicurezza: cosa insegna a chi usa agenti in azienda</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:07:29 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/gli-agenti-ai-di-openai-hanno-aggirato-i-controlli-di-sicurezza-cosa-insegna-a-chi-usa-agenti-in-ap3</link>
      <guid>https://dev.to/dev_iadicola/gli-agenti-ai-di-openai-hanno-aggirato-i-controlli-di-sicurezza-cosa-insegna-a-chi-usa-agenti-in-ap3</guid>
      <description>&lt;p&gt;A fine settembre 2026 OpenAI ha reso pubblico un episodio insolito: una revisione interna ha trovato &lt;strong&gt;circa due dozzine di casi&lt;/strong&gt; in cui i suoi agenti più capaci, durante l'addestramento e la valutazione, hanno &lt;strong&gt;aggirato controlli di sicurezza&lt;/strong&gt; o si sono comportati in modo diverso da quanto previsto. L'azienda ha avvisato decine di organizzazioni coinvolte, tra cui enti pubblici, università e siti governativi statunitensi.&lt;/p&gt;

&lt;p&gt;Non è la trama di un film di fantascienza, ma un problema molto concreto. E riguarda chiunque stia pensando di affidare a un agente AI qualcosa di più che rispondere a una domanda.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa è successo
&lt;/h2&gt;

&lt;p&gt;Un &lt;strong&gt;agente&lt;/strong&gt; è un modello di AI che non si limita a scrivere testo: usa strumenti, visita siti, esegue comandi e prende iniziative per raggiungere un obiettivo. Secondo quanto comunicato, nei casi individuati gli agenti hanno:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;superato controlli di accesso&lt;/strong&gt; su sistemi di terzi;&lt;/li&gt;
&lt;li&gt;usato &lt;strong&gt;credenziali esposte pubblicamente&lt;/strong&gt; trovate in giro;&lt;/li&gt;
&lt;li&gt;provato a &lt;strong&gt;iniettare comandi o query&lt;/strong&gt; nei servizi con cui interagivano;&lt;/li&gt;
&lt;li&gt;generato traffico in quantità tale da &lt;strong&gt;rallentare servizi online&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAI ha descritto questi episodi come attività di un modello «non allineato»: l'agente inseguiva l'obiettivo che gli era stato dato, ma con mezzi che nessuno aveva autorizzato.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché succede
&lt;/h2&gt;

&lt;p&gt;Un agente ottimizza per il risultato. Se gli chiedi di trovare un'informazione e la strada normale è chiusa, un modello molto capace può trovare una strada alternativa, anche quando quella strada è una porta che non doveva aprire. Non c'è malizia: c'è un obiettivo, degli strumenti e nessun limite abbastanza chiaro.&lt;/p&gt;

&lt;p&gt;È lo stesso motivo per cui non si dà a un collaboratore appena arrivato la password dell'amministratore e l'accesso a tutti i conti: non perché sia disonesto, ma perché i limiti devono essere nel sistema, non nella buona volontà.&lt;/p&gt;

&lt;h2&gt;
  
  
  La lezione per chi usa agenti in azienda
&lt;/h2&gt;

&lt;p&gt;Gli agenti AI sono utili: possono preparare ordini, rispondere ai clienti, aggiornare il gestionale, riassumere documenti. Ma questo episodio ricorda alcune regole che conviene rispettare fin dal primo giorno.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Permessi minimi
&lt;/h3&gt;

&lt;p&gt;L'agente deve poter fare solo quello che gli serve. Se deve leggere gli ordini, non deve poterli cancellare. Se lavora su un cliente, non deve vedere gli altri.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Approvazione umana per le azioni che contano
&lt;/h3&gt;

&lt;p&gt;Leggere e proporre sì; inviare, pagare, cancellare o pubblicare solo dopo l'ok di una persona. È la differenza tra un assistente e un sistema che agisce al posto tuo.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Niente segreti a portata di mano
&lt;/h3&gt;

&lt;p&gt;Chiavi, password e token non devono stare nei documenti o nei prompt che l'agente legge. Se una credenziale è raggiungibile, prima o poi verrà usata.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Tutto tracciato
&lt;/h3&gt;

&lt;p&gt;Ogni azione dell'agente deve lasciare una traccia: cosa ha fatto, quando, con quali dati e chi l'ha approvata. Senza log non c'è modo di capire cosa è successo, né di dimostrarlo.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Limiti di quantità
&lt;/h3&gt;

&lt;p&gt;Un tetto al numero di operazioni, di richieste e di spesa. Un agente che entra in un ciclo può fare in pochi minuti il lavoro di un mese, compresi gli errori.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non è un motivo per fermarsi
&lt;/h2&gt;

&lt;p&gt;Questo episodio è emerso perché OpenAI lo ha cercato e reso pubblico, ed è un bene. Il punto non è rinunciare agli agenti, ma progettarli come si progetta qualunque software che tocca dati e soldi veri: con permessi, approvazioni e tracciabilità.&lt;/p&gt;

&lt;p&gt;Se stai valutando un agente AI per la tua azienda e vuoi capire quali azioni può fare da solo e quali no, scrivimi: si parte da lì, prima ancora di scegliere il modello.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/gli-agenti-ai-di-openai-hanno-aggirato-i-controlli-di-sicurezza-cosa-insegna-a-chi-usa-agenti-in-azienda?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>intelligenzaartificiale</category>
      <category>sicurezza</category>
      <category>filosofia</category>
    </item>
    <item>
      <title>ObjectMapper in Symfony 8: trasformare DTO senza boilerplate</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Wed, 30 Sep 2026 17:00:08 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/objectmapper-in-symfony-8-trasformare-dto-senza-boilerplate-3962</link>
      <guid>https://dev.to/dev_iadicola/objectmapper-in-symfony-8-trasformare-dto-senza-boilerplate-3962</guid>
      <description>&lt;h2&gt;
  
  
  Il problema dei DTO manuali nelle applicazioni PHP
&lt;/h2&gt;

&lt;p&gt;I &lt;strong&gt;Data Transfer Object&lt;/strong&gt; sono una necessita in qualsiasi applicazione PHP strutturata. Separano la rappresentazione dei dati tra layer diversi dell'architettura: il DTO della request non e uguale all'entity del database, che non e uguale al DTO della response API. Questa separazione e fondamentale per mantenere i layer indipendenti e testabili.&lt;/p&gt;

&lt;p&gt;Il problema e il codice che serve per trasformare un oggetto nell'altro. Un'applicazione media ha decine di DTO, e ognuno richiede un mapper dedicato — una classe o un metodo che copia le proprietà da un oggetto all'altro, gestisce le conversioni di tipo, applica le trasformazioni necessarie. Questo codice e &lt;strong&gt;ripetitivo, fragile e noioso&lt;/strong&gt; da scrivere e mantenere. Ogni volta che si aggiunge un campo al DTO, bisogna aggiornare anche il mapper. Dimenticarsene causa bug silenziosi — il campo esiste ma non viene mai popolato.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come funziona ObjectMapper di Symfony 8
&lt;/h2&gt;

&lt;p&gt;Symfony 8 introduce il componente &lt;strong&gt;ObjectMapper&lt;/strong&gt; per risolvere esattamente questo problema. L'idea e semplice: invece di scrivere codice procedurale per copiare proprietà, si dichiarano le regole di mappatura direttamente sulle proprietà usando attributi PHP nativi. Il componente si occupa dell'esecuzione.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mappatura tramite attributi PHP
&lt;/h3&gt;

&lt;p&gt;La configurazione avviene con attributi come &lt;code&gt;#[MapTo]&lt;/code&gt; e &lt;code&gt;#[MapFrom]&lt;/code&gt; applicati direttamente sulle proprietà delle classi sorgente e destinazione. Questo approccio ha un vantaggio enorme: la mappatura e &lt;strong&gt;co-locata con il codice&lt;/strong&gt; che descrive la struttura dei dati. Non serve cercare in un file di configurazione separato o in una classe mapper dedicata — tutto e visibile nella definizione della classe stessa.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rinominazione di campi&lt;/strong&gt;: la proprietà &lt;code&gt;$firstName&lt;/code&gt; nel DTO viene mappata a &lt;code&gt;$nome&lt;/code&gt; nell'entity con un semplice attributo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conversione di tipi&lt;/strong&gt;: stringhe convertite in DateTimeImmutable, interi in enum, array in value object — tutto gestito automaticamente dal mapper.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trasformazioni custom&lt;/strong&gt;: per logiche di mappatura complesse, si possono registrare transformer personalizzati che vengono invocati durante la trasformazione.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oggetti annidati&lt;/strong&gt;: se un DTO contiene un altro DTO, ObjectMapper applica ricorsivamente le regole di mappatura. Le collezioni di oggetti vengono trasformate elemento per elemento.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Zero configurazione XML o YAML
&lt;/h3&gt;

&lt;p&gt;Coerentemente con la direzione presa da Symfony 8 di abbandonare XML, ObjectMapper non ha file di configurazione esterni. Tutto e dichiarato nel codice PHP tramite attributi. Questo rende la mappatura &lt;strong&gt;type-safe&lt;/strong&gt;, verificabile dagli IDE e refactoring-friendly: rinominare una proprietà aggiorna automaticamente anche la configurazione della mappatura.&lt;/p&gt;

&lt;h2&gt;
  
  
  Esempio pratico: da request DTO a entity
&lt;/h2&gt;

&lt;p&gt;Consideriamo uno scenario comune in un'applicazione Symfony: un controller riceve una richiesta HTTP, la deserializza in un &lt;code&gt;CreateProductRequest&lt;/code&gt; DTO, la valida, e deve creare un'entity &lt;code&gt;Product&lt;/code&gt; per il database.&lt;/p&gt;

&lt;p&gt;Senza ObjectMapper, il codice nel controller o in un service contiene una serie di assegnamenti manuali: &lt;code&gt;$product-&amp;gt;setName($request-&amp;gt;name)&lt;/code&gt;, &lt;code&gt;$product-&amp;gt;setPrice($request-&amp;gt;price)&lt;/code&gt;, &lt;code&gt;$product-&amp;gt;setCategory($categoryRepository-&amp;gt;find($request-&amp;gt;categoryId))&lt;/code&gt;, e così via per ogni campo. Con dieci campi sono dieci righe di codice procedurale. Con venti campi sono venti righe.&lt;/p&gt;

&lt;p&gt;Con ObjectMapper, la trasformazione si riduce a una singola chiamata: &lt;code&gt;$mapper-&amp;gt;map($request, Product::class)&lt;/code&gt;. Le regole di mappatura sono già dichiarate sulle proprietà dei due oggetti. Il codice del controller resta snello e focalizzato sulla logica di orchestrazione, non sulla copia di dati.&lt;/p&gt;

&lt;h2&gt;
  
  
  ObjectMapper vs AutoMapper e librerie di terze parti
&lt;/h2&gt;

&lt;p&gt;Chi lavora con Symfony da tempo conosce librerie come &lt;strong&gt;AutoMapper&lt;/strong&gt;, &lt;strong&gt;Jane AutoMapper&lt;/strong&gt; o &lt;strong&gt;Rekalogika Mapper&lt;/strong&gt;. Sono soluzioni valide che hanno riempito un vuoto nell'ecosistema per anni. ObjectMapper offre però vantaggi significativi come componente first-party.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manutenzione garantita&lt;/strong&gt;: il core team di Symfony mantiene il componente con lo stesso livello di qualità degli altri componenti del framework. Aggiornamenti, bugfix e security patch sono garantiti per il ciclo di vita della release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrazione nativa&lt;/strong&gt;: funziona out-of-the-box con Serializer, Validator, Form e il container di dependency injection. Nessuna configurazione aggiuntiva per farlo parlare con il resto dell'applicazione.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistenza API&lt;/strong&gt;: segue le stesse convenzioni degli altri componenti Symfony. Chi conosce il framework si trova immediatamente a proprio agio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nessuna dipendenza esterna&lt;/strong&gt;: una dipendenza in meno nel &lt;code&gt;composer.json&lt;/code&gt; significa un rischio in meno di incompatibilita, abbandono o breaking change non gestiti.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quando usare ObjectMapper e quando no
&lt;/h2&gt;

&lt;p&gt;ObjectMapper eccelle nei casi standard: mappatura tra DTO e entity, trasformazione di request in domain object, conversione di entity in response DTO. Per la maggior parte delle applicazioni, copre il 90% degli scenari di mappatura.&lt;/p&gt;

&lt;p&gt;Per logiche di mappatura estremamente complesse — ad esempio trasformazioni che richiedono query al database, chiamate a servizi esterni o logica condizionale articolata — un mapper manuale dedicato resta la scelta migliore. ObjectMapper non cerca di sostituire il codice custom dove serve, ma di eliminarlo dove non aggiunge valore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impatto sulla qualità del codice
&lt;/h2&gt;

&lt;p&gt;L'adozione di ObjectMapper in un progetto Symfony ha un effetto a cascata sulla qualità del codice. I controller diventano più snelli, i service layer più focalizzati sulla business logic, e i test più semplici da scrivere — non serve più testare che ogni campo venga copiato correttamente, il componente se ne occupa. Per chi lavora come freelance su progetti PHP, questo si traduce in meno codice da mantenere, meno bug e consegne più rapide.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/object-mapper-symfony-8-trasformare-dto-senza-boilerplate?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>symfony</category>
      <category>architettura</category>
    </item>
    <item>
      <title>La storia di C#: la risposta di Microsoft a Java che ha cambiato strada</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Wed, 30 Sep 2026 11:01:42 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/la-storia-di-c-la-risposta-di-microsoft-a-java-che-ha-cambiato-strada-532a</link>
      <guid>https://dev.to/dev_iadicola/la-storia-di-c-la-risposta-di-microsoft-a-java-che-ha-cambiato-strada-532a</guid>
      <description>&lt;p&gt;Ultimo capitolo della serie sulla storia dei linguaggi backend. Dopo PHP e Java arriva il linguaggio che è nato, in buona parte, come conseguenza del successo di Java. E che, nel giro di vent'anni, è passato dall'essere considerato "la copia Microsoft di Java" a essere uno dei linguaggi che ha introdotto più idee poi copiate da tutti gli altri.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prima di C#: Microsoft, Sun e J++
&lt;/h2&gt;

&lt;p&gt;Alla fine degli anni Novanta Microsoft aveva una licenza Java e un suo ambiente di sviluppo, &lt;strong&gt;Visual J++&lt;/strong&gt;. Ma la sua JVM aggiungeva estensioni specifiche per Windows e non rispettava del tutto le specifiche di Sun, rompendo di fatto la promessa del "write once, run anywhere".&lt;/p&gt;

&lt;p&gt;Nel 1997 Sun fece causa a Microsoft. La vicenda si chiuse nel 2001 con un accordo economico, ma la direzione era già chiara: Microsoft non poteva costruire il proprio futuro su un linguaggio controllato da un concorrente. Serviva una piattaforma propria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anders Hejlsberg e il progetto Cool
&lt;/h2&gt;

&lt;p&gt;A guidare il nuovo linguaggio fu chiamato &lt;strong&gt;Anders Hejlsberg&lt;/strong&gt;, ingegnere danese che aveva già creato Turbo Pascal e fatto da architetto capo di Delphi alla Borland. Microsoft lo aveva assunto nel 1996.&lt;/p&gt;

&lt;p&gt;Il progetto interno si chiamava &lt;strong&gt;Cool&lt;/strong&gt;, "C-like Object Oriented Language". Il nome finale, &lt;strong&gt;C#&lt;/strong&gt;, richiama la notazione musicale del diesis, una nota un semitono più alta. C'è anche un gioco visivo: il simbolo # può essere letto come quattro "+" sovrapposti, un passo oltre il C++.&lt;/p&gt;

&lt;p&gt;C# fu presentato nel luglio 2000, alla Professional Developers Conference di Microsoft, insieme alla piattaforma &lt;strong&gt;.NET&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  .NET Framework e il CLR
&lt;/h2&gt;

&lt;p&gt;L'architettura di .NET somigliava a quella di Java, con una differenza strategica. Il codice viene compilato in un linguaggio intermedio (&lt;strong&gt;CIL&lt;/strong&gt;), eseguito da una macchina virtuale chiamata &lt;strong&gt;Common Language Runtime&lt;/strong&gt;. Ma il CLR era pensato fin dall'inizio per ospitare &lt;strong&gt;più linguaggi&lt;/strong&gt;: C#, Visual Basic .NET, poi F# e altri, tutti interoperabili tra loro.&lt;/p&gt;

&lt;p&gt;La prima versione di C# arrivò nel febbraio 2002 con il &lt;strong&gt;.NET Framework 1.0&lt;/strong&gt; e Visual Studio .NET. Microsoft standardizzò il linguaggio presso ECMA (ECMA-334) e poi ISO. Ma, nella pratica, .NET girava solo su Windows.&lt;/p&gt;

&lt;p&gt;A colmare il vuoto provò &lt;strong&gt;Mono&lt;/strong&gt;, un'implementazione open source avviata da Miguel de Icaza, che portò C# su Linux, macOS e poi, con Xamarin, su iOS e Android.&lt;/p&gt;

&lt;h2&gt;
  
  
  C# 2.0 e 3.0: quando C# ha superato Java
&lt;/h2&gt;

&lt;p&gt;Le prime versioni di C# erano simili a Java. La differenza si vide negli anni successivi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C# 2.0&lt;/strong&gt; (2005) introdusse i &lt;strong&gt;generics&lt;/strong&gt;, ma con un'implementazione diversa da quella di Java: in .NET i tipi generici esistono anche a runtime (sono &lt;em&gt;reificati&lt;/em&gt;). Una &lt;code&gt;List&amp;lt;int&amp;gt;&lt;/code&gt; è davvero una lista di interi, senza boxing e senza perdere informazioni sui tipi. Arrivarono anche i tipi nullable, gli iteratori con &lt;code&gt;yield&lt;/code&gt; e i metodi anonimi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C# 3.0&lt;/strong&gt; (2007) fu un salto enorme: &lt;strong&gt;LINQ&lt;/strong&gt; (Language Integrated Query), lambda expression, inferenza di tipo con &lt;code&gt;var&lt;/code&gt;, extension method, tipi anonimi. Con LINQ si poteva interrogare una collezione, un documento XML o un database con la stessa sintassi, direttamente nel linguaggio. Java avrebbe avuto le lambda solo sette anni dopo.&lt;/p&gt;

&lt;h2&gt;
  
  
  C# 5: async/await, un'idea che ha conquistato tutti
&lt;/h2&gt;

&lt;p&gt;C# 4.0 (2010) aggiunse il tipo &lt;code&gt;dynamic&lt;/code&gt;, i parametri opzionali e nominati. Ma la vera eredità arrivò con &lt;strong&gt;C# 5.0&lt;/strong&gt; (2012): le parole chiave &lt;strong&gt;&lt;code&gt;async&lt;/code&gt; e &lt;code&gt;await&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Prima, scrivere codice asincrono significava callback annidate e codice illeggibile. Con async/await il codice asincrono si scrive come se fosse sequenziale, e il compilatore si occupa di trasformarlo. L'idea ebbe un successo tale da essere adottata da JavaScript, Python, Rust, Kotlin, Swift e molti altri. Se oggi scrivi &lt;code&gt;await&lt;/code&gt; in quasi qualunque linguaggio, stai usando un'idea resa popolare da C#.&lt;/p&gt;

&lt;h2&gt;
  
  
  2014–2016: Microsoft diventa open source
&lt;/h2&gt;

&lt;p&gt;Con Satya Nadella alla guida di Microsoft dal 2014, la strategia cambiò radicalmente. Microsoft annunciò che .NET sarebbe diventato open source e multipiattaforma. Il nuovo compilatore di C#, &lt;strong&gt;Roslyn&lt;/strong&gt;, fu pubblicato come codice aperto, aprendo la strada a strumenti di analisi e refactoring molto più potenti.&lt;/p&gt;

&lt;p&gt;Nel 2016 Microsoft acquisì Xamarin, e nel giugno dello stesso anno uscì &lt;strong&gt;.NET Core 1.0&lt;/strong&gt;: una riscrittura modulare, veloce, capace di girare su Windows, Linux e macOS. Per un'azienda che vent'anni prima aveva combattuto per legare Java a Windows, era un cambiamento notevole.&lt;/p&gt;

&lt;h2&gt;
  
  
  Da .NET Core a un solo .NET
&lt;/h2&gt;

&lt;p&gt;Per qualche anno convissero .NET Framework (solo Windows) e .NET Core (multipiattaforma). Con &lt;strong&gt;.NET 5&lt;/strong&gt;, nel novembre 2020, Microsoft unificò tutto sotto un solo nome. Da allora esce una versione ogni novembre, con un supporto a lungo termine per le versioni pari: &lt;strong&gt;.NET 6&lt;/strong&gt;, &lt;strong&gt;.NET 8&lt;/strong&gt; e &lt;strong&gt;.NET 10&lt;/strong&gt; (2025).&lt;/p&gt;

&lt;p&gt;ASP.NET Core è diventato uno dei framework web più veloci nei benchmark indipendenti, e C# è anche il linguaggio di &lt;strong&gt;Unity&lt;/strong&gt;, uno dei motori di videogiochi più usati al mondo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il C# moderno
&lt;/h2&gt;

&lt;p&gt;Le versioni recenti hanno reso il linguaggio più conciso e più sicuro:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C# 7&lt;/strong&gt; (2017): tuple e prime forme di pattern matching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# 8&lt;/strong&gt; (2019): &lt;strong&gt;nullable reference types&lt;/strong&gt;, che segnalano in compilazione i possibili riferimenti nulli.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# 9&lt;/strong&gt; (2020): &lt;strong&gt;records&lt;/strong&gt; e top-level statements, per scrivere un programma senza la classe &lt;code&gt;Program&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# 12&lt;/strong&gt; (2023): primary constructors e collection expressions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# 14&lt;/strong&gt; (2025, con .NET 10): extension members e la parola chiave &lt;code&gt;field&lt;/code&gt; nelle proprietà.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anders Hejlsberg, nel frattempo, ha creato anche &lt;strong&gt;TypeScript&lt;/strong&gt; (2012): molte delle idee di C# sono così arrivate anche nel mondo JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa ci insegna la storia di C
&lt;/h2&gt;

&lt;p&gt;C# è nato come risposta strategica a un concorrente, ma ha avuto il vantaggio di arrivare dopo: ha potuto osservare i limiti di Java ed evitarli. Per anni ha pagato il legame con Windows; quando Microsoft ha scelto l'open source, quel limite è sparito.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tre linguaggi, tre storie
&lt;/h2&gt;

&lt;p&gt;Chiudendo la serie, le tre storie mostrano tre modi diversi di nascere e crescere. &lt;strong&gt;PHP&lt;/strong&gt; è nato per caso ed è diventato maturo grazie alla comunità. &lt;strong&gt;Java&lt;/strong&gt; è nato da un progetto aziendale e ha vinto grazie alla stabilità. &lt;strong&gt;C#&lt;/strong&gt; è nato come mossa strategica e ha vinto grazie all'innovazione continua.&lt;/p&gt;

&lt;p&gt;Oggi i tre linguaggi si somigliano più che mai: tipi, record, pattern matching, programmazione funzionale. Si sono copiati a vicenda, e ne abbiamo guadagnato tutti. Per chi sviluppa backend, conoscerne la storia significa capire perché certe scelte sono state fatte, e scegliere lo strumento giusto con più consapevolezza.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/storia-di-csharp?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>c</category>
      <category>storia</category>
      <category>evoluzione</category>
      <category>storiadeilinguaggi</category>
    </item>
    <item>
      <title>RAG: un assistente AI che risponde con i documenti della tua azienda</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Wed, 30 Sep 2026 07:35:07 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/rag-un-assistente-ai-che-risponde-con-i-documenti-della-tua-azienda-1e8j</link>
      <guid>https://dev.to/dev_iadicola/rag-un-assistente-ai-che-risponde-con-i-documenti-della-tua-azienda-1e8j</guid>
      <description>&lt;p&gt;Chiedi a ChatGPT le condizioni di reso dei tuoi prodotti e ti risponderà con sicurezza. Peccato che siano le condizioni di reso di un'azienda qualsiasi: il modello non ha mai letto le tue. Il problema non è l'intelligenza del modello, è che &lt;strong&gt;non conosce i tuoi documenti&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La soluzione più usata oggi ha una sigla poco simpatica: &lt;strong&gt;RAG&lt;/strong&gt;, &lt;em&gt;Retrieval Augmented Generation&lt;/em&gt;. In italiano: generazione aiutata dal recupero di informazioni. Prima di rispondere, l'AI va a cercare nei tuoi documenti i passaggi che servono, e risponde partendo da quelli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come funziona, senza formule
&lt;/h2&gt;

&lt;p&gt;Immagina un collega nuovo, bravissimo a scrivere, che però non sa niente della tua azienda. Ogni volta che gli fai una domanda, prima di rispondere apre l'archivio, trova le tre pagine giuste e risponde leggendo quelle. La RAG fa esattamente questo, in tre passaggi:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Preparazione&lt;/strong&gt;: i documenti (PDF, manuali, contratti, pagine del gestionale) vengono divisi in pezzi e indicizzati per significato, non solo per parole chiave.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ricerca&lt;/strong&gt;: quando arriva una domanda, il sistema trova i pezzi più pertinenti. «Quanto tempo ha il cliente per restituire un prodotto?» trova il paragrafo sul diritto di recesso anche se non contiene la parola «restituire».&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risposta&lt;/strong&gt;: il modello riceve la domanda insieme a quei pezzi, e risponde basandosi su di loro, citando da dove vengono.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Il vantaggio è enorme: la risposta è ancorata ai tuoi dati, e si può verificare aprendo la fonte.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché non basta «caricare i PDF su ChatGPT»
&lt;/h2&gt;

&lt;p&gt;Caricare qualche file in una chat va bene per un documento alla volta. In azienda i documenti sono centinaia, cambiano, e non tutti devono vederli tutti. Un sistema RAG fatto bene risolve tre problemi che la chat non risolve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Si aggiorna da solo&lt;/strong&gt;: quando cambia il listino, cambia anche la risposta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rispetta i permessi&lt;/strong&gt;: chi lavora in magazzino non deve trovare nelle risposte gli stipendi o i contratti riservati.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I dati restano sotto controllo&lt;/strong&gt;: si sceglie dove stanno i documenti e quale modello li legge.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dove serve davvero in una PMI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Assistenza clienti
&lt;/h3&gt;

&lt;p&gt;Risposte su prodotti, garanzie e procedure scritte partendo dai manuali veri, con il rimando alla pagina giusta. L'operatore controlla e invia, invece di cercare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documenti e contratti
&lt;/h3&gt;

&lt;p&gt;«Quali contratti scadono nei prossimi tre mesi con clausola di rinnovo automatico?» Secondo l'ISTAT, l'analisi di testi e documenti è la tecnologia AI più diffusa nelle imprese italiane: è il punto da cui partono quasi tutti.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure interne
&lt;/h3&gt;

&lt;p&gt;Il nuovo assunto chiede all'assistente come si fa un reso al fornitore, invece di interrompere un collega. La risposta arriva dalla procedura scritta, non dal ricordo di qualcuno.&lt;/p&gt;

&lt;h3&gt;
  
  
  Il gestionale che risponde
&lt;/h3&gt;

&lt;p&gt;Collegata ai dati del gestionale, la RAG risponde a domande come «a che punto è l'ordine del cliente Rossi?» senza aprire cinque schermate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gli errori da evitare
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documenti vecchi e duplicati&lt;/strong&gt;: se nell'archivio ci sono tre versioni del listino, l'AI può rispondere con quella sbagliata. Prima si mette ordine, poi si indicizza.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nessun controllo sui permessi&lt;/strong&gt;: è l'errore più grave. La ricerca deve filtrare i documenti in base a chi fa la domanda, prima ancora che il modello li veda.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risposte senza fonte&lt;/strong&gt;: se l'assistente non dice da dove prende la risposta, non c'è modo di fidarsi. La fonte va sempre mostrata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nessuna misura della qualità&lt;/strong&gt;: servono domande di prova con le risposte giuste, da ripetere a ogni modifica, per sapere se il sistema migliora o peggiora.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Da dove partire
&lt;/h2&gt;

&lt;p&gt;Non serve indicizzare tutta l'azienda il primo giorno. Si parte da un'area con domande frequenti e documenti chiari, per esempio l'assistenza su una linea di prodotti o le procedure del magazzino. Si misura quanto tempo si risparmia, e si allarga da lì.&lt;/p&gt;

&lt;p&gt;Se vuoi capire se i tuoi documenti sono pronti per un assistente AI, e da quale area conviene partire, scrivimi: è una valutazione che si fa in poco tempo, prima di spendere in sviluppo.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/rag-un-assistente-ai-che-risponde-con-i-documenti-della-tua-azienda?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>intelligenzaartificiale</category>
      <category>gestionale</category>
      <category>integrazione</category>
    </item>
    <item>
      <title>Il monolite non è il problema: il problema è come lo costruisci</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Tue, 29 Sep 2026 19:41:17 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/il-monolite-non-e-il-problema-il-problema-e-come-lo-costruisci-c2g</link>
      <guid>https://dev.to/dev_iadicola/il-monolite-non-e-il-problema-il-problema-e-come-lo-costruisci-c2g</guid>
      <description>&lt;p&gt;Quando un progetto inizia a crescere, prima o poi arriva la stessa domanda: &lt;strong&gt;“Non sarebbe meglio passare ai microservizi?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Più utenti, più funzionalità, più integrazioni, magari un'app mobile da affiancare alla web application, processi asincroni, notifiche e API esterne.&lt;/p&gt;

&lt;p&gt;A prima vista la risposta sembra quasi automatica: il progetto sta diventando grande, quindi bisogna dividerlo. Non necessariamente.&lt;/p&gt;

&lt;p&gt;Un monolite può gestire applicazioni molto complesse. Il problema nasce quando &lt;em&gt;monolite&lt;/em&gt; diventa sinonimo di &lt;em&gt;codice completamente accoppiato&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il problema non è avere un solo deploy
&lt;/h2&gt;

&lt;p&gt;Immaginiamo una classica applicazione Laravel organizzata tra controller, model, service e repository. All'inizio funziona benissimo.&lt;/p&gt;

&lt;p&gt;Poi arrivano clienti, appuntamenti, fatture, notifiche, documenti, pagamenti e integrazioni. La directory dei service inizia a contenere decine di classi, i controller utilizzano servizi appartenenti a parti completamente diverse dell'applicazione e modificare una funzionalità significa attraversare mezza codebase.&lt;/p&gt;

&lt;p&gt;Il problema non è Laravel. E non è nemmeno il fatto che tutto venga distribuito insieme. &lt;strong&gt;Il problema sono i confini che non esistono più.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizzare il software intorno al dominio
&lt;/h2&gt;

&lt;p&gt;Una possibile evoluzione consiste nello smettere di organizzare l'intera applicazione esclusivamente per tipologia tecnica e iniziare a ragionare per capacità: Customers, Appointments, Billing, Notifications, Documents.&lt;/p&gt;

&lt;p&gt;Ogni modulo rappresenta un confine riconoscibile. Può contenere ciò che gli serve a livello Application, Domain, Infrastructure e Http senza obbligare tutto il progetto a vivere in cartelle globali enormi.&lt;/p&gt;

&lt;p&gt;Non è una struttura da copiare necessariamente alla lettera. Il concetto importante è che &lt;strong&gt;il codice relativo allo stesso dominio dovrebbe avere un confine riconoscibile&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tecnicamente continua a essere una sola applicazione Laravel, un repository, un deploy e potenzialmente anche un solo database. Concettualmente, però, abbiamo iniziato a separare le responsabilità.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modularità non significa creare una Action per qualsiasi cosa
&lt;/h2&gt;

&lt;p&gt;Qui entrano spesso in gioco Vertical Slice Architecture, Clean Architecture, Hexagonal Architecture e Domain-Driven Design. Sono approcci dai quali possiamo prendere ottime idee. Il problema nasce quando diventano regole da applicare meccanicamente.&lt;/p&gt;

&lt;p&gt;Organizzare il software per feature non significa necessariamente creare CreateAppointmentAction, UpdateAppointmentAction, CancelAppointmentAction, ConfirmAppointmentAction, RescheduleAppointmentAction e una nuova classe per ogni verbo dell'applicazione.&lt;/p&gt;

&lt;p&gt;Sulla carta può sembrare estremamente ordinato. Nella pratica possiamo finire per sostituire controller troppo grandi con centinaia di classi minuscole. Il numero di file aumenta, la navigazione aumenta e le astrazioni aumentano, ma la qualità dell'architettura non necessariamente migliora.&lt;/p&gt;

&lt;p&gt;Preferisco che sia &lt;strong&gt;la complessità del comportamento a giustificare una nuova astrazione&lt;/strong&gt;, non semplicemente l'esistenza di un endpoint.&lt;/p&gt;

&lt;p&gt;Un controller può tranquillamente coordinare un'operazione semplice. Non c'è necessariamente bisogno di creare una Action, un DTO, un'interfaccia, un repository e un response object per salvare quattro campi nel database.&lt;/p&gt;

&lt;p&gt;Quando invece l'operazione contiene regole di business importanti, viene richiamata da più punti oppure necessita di essere isolata e testata indipendentemente, estrarla in un servizio o in un caso d'uso dedicato inizia ad avere un motivo concreto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non creo un'astrazione perché l'architettura dice che dovrebbe esserci. La creo quando risolve un problema.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Il dominio dovrebbe contenere ciò che conta davvero
&lt;/h2&gt;

&lt;p&gt;Prendiamo un appuntamento. Cambiare il nome visualizzato potrebbe essere un'operazione estremamente semplice. Calcolare invece se quell'appuntamento può essere spostato potrebbe coinvolgere disponibilità dell'operatore, sovrapposizioni, orari dell'attività, durata del servizio, regole di cancellazione e stato corrente.&lt;/p&gt;

&lt;p&gt;Questa è logica che merita attenzione. Non perché stiamo seguendo Clean Architecture, ma perché rappresenta &lt;strong&gt;una regola reale del sistema&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;È questo tipo di comportamento che voglio evitare di disperdere tra controller, query, listener e helper. Il dominio dovrebbe proteggere le parti dell'applicazione che hanno realmente valore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anche le dipendenze devono rispettare i confini
&lt;/h2&gt;

&lt;p&gt;Supponiamo che Appointments debba notificare un cliente quando viene creato un appuntamento. La soluzione più immediata potrebbe essere chiamare direttamente il sistema delle notifiche. Funziona, ma aumentando queste dipendenze rischiamo lentamente di ricreare lo stesso monolite accoppiato.&lt;/p&gt;

&lt;p&gt;In alcuni casi possiamo utilizzare un evento: il modulo degli appuntamenti comunica semplicemente che è stato creato un appuntamento. Un listener può inviare una mail, un altro aggiornare un CRM, un altro ancora inviare un messaggio WhatsApp.&lt;/p&gt;

&lt;p&gt;Eventi e queue diventano particolarmente interessanti quando alcune operazioni possono essere eseguite in maniera asincrona. Ma anche qui vale la stessa regola: &lt;strong&gt;non tutto deve diventare un evento&lt;/strong&gt;. A volte una semplice chiamata è esattamente ciò che serve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Un monolite può scalare
&lt;/h2&gt;

&lt;p&gt;Un altro equivoco comune è associare automaticamente molti utenti ai microservizi. Ma architettura applicativa e infrastruttura sono due problemi collegati, non la stessa cosa.&lt;/p&gt;

&lt;p&gt;Prima di distribuire un sistema possiamo intervenire su indici e query del database, caching, Redis, queue e worker, CDN, object storage, replica del database, load balancing e scaling orizzontale.&lt;/p&gt;

&lt;p&gt;La stessa applicazione Laravel può essere eseguita su più istanze dietro un load balancer. Continua a essere un monolite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monolite non significa necessariamente un'applicazione che gira su un solo server.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Non progettare oggi i microservizi che forse serviranno tra tre anni
&lt;/h2&gt;

&lt;p&gt;È facile cadere nell'errore opposto: “potrebbe diventare grande”, “potremmo avere migliaia di utenti”, “un giorno potremmo dover separare questo modulo”. E improvvisamente un'applicazione che deve ancora dimostrare di avere un problema di scalabilità possiede Kubernetes, Kafka e diversi servizi indipendenti.&lt;/p&gt;

&lt;p&gt;Abbiamo pagato subito il costo di un problema che ancora non abbiamo.&lt;/p&gt;

&lt;p&gt;Distribuire un sistema introduce networking, autenticazione tra servizi, logging distribuito, tracing, retry, deployment indipendenti, versionamento dei contratti, consistenza dei dati e gestione dei fallimenti parziali.&lt;/p&gt;

&lt;p&gt;Sono problemi accettabili quando stiamo ottenendo qualcosa in cambio. Molto meno quando li introduciamo soltanto perché “i microservizi scalano meglio”.&lt;/p&gt;

&lt;p&gt;Preferisco partire dalla domanda opposta: &lt;strong&gt;qual è la soluzione più semplice che mi permette comunque di mantenere buoni confini?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Molto spesso la risposta può essere un monolite modulare: Laravel, PostgreSQL o MySQL, Redis quando serve, queue per i processi asincroni e una struttura del codice costruita intorno al dominio.&lt;/p&gt;

&lt;p&gt;Poi misuriamo CPU, memoria, query lente, code, throughput, tempi di risposta e colli di bottiglia. Prima troviamo il problema. Poi scegliamo la tecnologia necessaria per risolverlo.&lt;/p&gt;

&lt;h2&gt;
  
  
  E se un giorno un modulo dovesse diventare un microservizio?
&lt;/h2&gt;

&lt;p&gt;Immaginiamo un'applicazione composta da Customers, Appointments, Billing e Notifications. Con il tempo Notifications potrebbe iniziare a gestire una quantità enorme di email, WhatsApp, push notification e altri eventi, richiedendo un modello di scaling completamente diverso.&lt;/p&gt;

&lt;p&gt;A quel punto abbiamo finalmente &lt;strong&gt;un motivo&lt;/strong&gt; per valutare l'estrazione. L'applicazione principale continua a esistere e separiamo solamente ciò che ha realmente bisogno di esserlo.&lt;/p&gt;

&lt;p&gt;Naturalmente l'operazione non è gratuita. Una chiamata PHP interna è estremamente diversa da una comunicazione attraverso la rete: bisogna gestire indisponibilità, retry, duplicazioni, timeout e consistenza.&lt;/p&gt;

&lt;p&gt;Ma almeno non dobbiamo contemporaneamente capire dove finisce Notifications e dove inizia Appointments: quel confine esisteva già nel software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quando sceglierei davvero i microservizi?
&lt;/h2&gt;

&lt;p&gt;Non utilizzerei come metrica il numero di righe di codice e nemmeno semplicemente il numero di utenti. Cercherei problemi concreti: un dominio con necessità di scaling differenti, team con cicli di deploy realmente indipendenti, esigenze tecnologiche diverse o confini di dominio sufficientemente chiari da poter vivere autonomamente.&lt;/p&gt;

&lt;p&gt;Il vantaggio ottenuto deve superare il costo operativo della distribuzione. Prima, rischiamo semplicemente di &lt;strong&gt;trasformare problemi di organizzazione del codice in problemi di rete&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clean Architecture, Vertical Slice e DDD sono strumenti
&lt;/h2&gt;

&lt;p&gt;Un progetto non diventa automaticamente migliore perché contiene Domain, Application, Infrastructure e Presentation. Così come non diventa automaticamente migliore perché ogni operazione possiede una propria Action.&lt;/p&gt;

&lt;p&gt;Le cartelle non sono l'architettura. Le interfacce non sono l'architettura. I pattern non sono l'architettura. Sono strumenti attraverso i quali possiamo esprimere determinate decisioni.&lt;/p&gt;

&lt;p&gt;Da Vertical Slice possiamo prendere l'idea di mantenere vicine le cose che cambiano insieme. Da Clean Architecture la separazione tra business logic e dettagli infrastrutturali. Dal Domain-Driven Design l'attenzione verso il dominio e i suoi confini. Dall'architettura esagonale l'idea che database, framework e provider esterni siano dettagli sostituibili.&lt;/p&gt;

&lt;p&gt;Ma non siamo obbligati ad applicare ogni pattern contemporaneamente. Altrimenti rischiamo di costruire un software perfettamente aderente a un diagramma e terribile da modificare.&lt;/p&gt;

&lt;h2&gt;
  
  
  La vera decisione architetturale
&lt;/h2&gt;

&lt;p&gt;Davanti a un nuovo progetto Laravel abbastanza importante, non partirei dalla domanda: &lt;strong&gt;“Monolite o microservizi?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Partirei da: &lt;strong&gt;“Quali sono i confini del mio dominio?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Poi cercherei di mantenerli abbastanza chiari senza introdurre complessità che il progetto non richiede ancora.&lt;/p&gt;

&lt;p&gt;Un controller semplice può rimanere semplice. Una regola di business complessa merita di essere isolata. Una queue viene introdotta quando abbiamo qualcosa che ha senso eseguire asincronamente. Un evento quando vogliamo realmente disaccoppiare comportamenti. Un microservizio quando abbiamo una ragione concreta per distribuirlo indipendentemente.&lt;/p&gt;

&lt;p&gt;Il monolite può evolvere. Alcuni moduli possono rimanere insieme per tutta la vita del prodotto. Altri possono essere estratti quando esisterà finalmente una ragione concreta.&lt;/p&gt;

&lt;p&gt;L'obiettivo non è costruire oggi l'architettura che immaginiamo possa servirci tra cinque anni. E nemmeno utilizzare più pattern possibili.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'obiettivo è costruire software abbastanza semplice da capire oggi e abbastanza ben organizzato da poter cambiare domani.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/il-monolite-non-e-il-problema-il-problema-e-come-lo-costruisci?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>architettura</category>
      <category>ddd</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>Laravel AI SDK: intelligenza artificiale first-party nel framework</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Tue, 29 Sep 2026 17:00:10 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/laravel-ai-sdk-intelligenza-artificiale-first-party-nel-framework-1308</link>
      <guid>https://dev.to/dev_iadicola/laravel-ai-sdk-intelligenza-artificiale-first-party-nel-framework-1308</guid>
      <description>&lt;h2&gt;
  
  
  Cos'e il Laravel AI SDK e perché cambia le regole del gioco
&lt;/h2&gt;

&lt;p&gt;Con Laravel 13, il &lt;strong&gt;Laravel AI SDK&lt;/strong&gt; esce dalla beta e diventa un pacchetto first-party stabile, rilasciato lo stesso giorno del framework. Si tratta di un'interfaccia unica e &lt;strong&gt;provider-agnostic&lt;/strong&gt; per integrare funzionalita di intelligenza artificiale direttamente nelle applicazioni Laravel.&lt;/p&gt;

&lt;p&gt;Fino ad oggi, integrare un LLM in un progetto PHP significava scegliere tra l'SDK di OpenAI, quello di Anthropic, la libreria per Google Gemini, e gestire ciascuno con le sue convenzioni, i suoi formati di risposta e le sue peculiarita. Il Laravel AI SDK astrae tutto questo: si scrive il codice una volta e si cambia provider modificando una variabile d'ambiente in &lt;code&gt;.env&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Funzionalita disponibili nel Laravel AI SDK
&lt;/h2&gt;

&lt;p&gt;Il pacchetto copre le principali aree di applicazione dell'AI moderna:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text generation&lt;/strong&gt;: completamenti e chat con qualsiasi LLM supportato. Si definisce un prompt, si invoca il servizio e si ottiene la risposta in un formato standard, indipendentemente dal provider sottostante.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool-calling agents&lt;/strong&gt;: agenti che possono invocare funzioni PHP definite nel progetto. L'agente riceve un obiettivo, decide autonomamente quali tool utilizzare e restituisce il risultato finale. Ideale per automazioni complesse come analisi dati, generazione report o workflow multi-step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embeddings&lt;/strong&gt;: generazione di vettori numerici a partire da testo, per ricerca semantica, clustering e sistemi RAG (Retrieval Augmented Generation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image generation&lt;/strong&gt;: creazione immagini via DALL-E, Midjourney API e altri provider, con un'interfaccia unificata per la generazione e il salvataggio delle immagini.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio synthesis&lt;/strong&gt;: text-to-speech integrato per applicazioni che richiedono output vocale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector stores&lt;/strong&gt;: integrazione nativa con database vettoriali come Pinecone, Weaviate e pgvector per memorizzare e recuperare embeddings in modo efficiente.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Come funziona nella pratica: un esempio concreto
&lt;/h2&gt;

&lt;p&gt;Immaginiamo un'applicazione e-commerce che deve generare descrizioni prodotto ottimizzate per SEO. Con il Laravel AI SDK, il flusso e lineare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Si configura il provider in &lt;code&gt;.env&lt;/code&gt;: &lt;code&gt;AI_PROVIDER=openai&lt;/code&gt; o &lt;code&gt;AI_PROVIDER=anthropic&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Si inietta il servizio AI tramite &lt;strong&gt;dependency injection&lt;/strong&gt; nel controller o nel service&lt;/li&gt;
&lt;li&gt;Si invoca il metodo di generazione testo passando il prompt con i dati del prodotto&lt;/li&gt;
&lt;li&gt;Si riceve la risposta in un formato normalizzato, pronta per essere salvata nel database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se domani il cliente vuole passare da OpenAI ad Anthropic per motivi di costo o performance, si cambia una riga nel &lt;code&gt;.env&lt;/code&gt;. Nessun refactoring, nessun rischio di regressione.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architettura del pacchetto: come e strutturato
&lt;/h2&gt;

&lt;p&gt;Il Laravel AI SDK segue i pattern architetturali standard di Laravel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service Provider&lt;/strong&gt;: registra i servizi e le configurazioni nel container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facade&lt;/strong&gt;: accesso rapido ai servizi tramite &lt;code&gt;AI::generate()&lt;/code&gt;, &lt;code&gt;AI::embed()&lt;/code&gt;, ecc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Driver pattern&lt;/strong&gt;: ogni provider e un driver intercambiabile, come per cache, sessioni e code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configurazione via config file&lt;/strong&gt;: &lt;code&gt;config/ai.php&lt;/code&gt; per parametri avanzati come timeout, tentativi e fallback provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questo significa che chi conosce già Laravel si trova immediatamente a suo agio. Non c'e una nuova architettura da imparare: e lo stesso pattern che il framework usa per tutto il resto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testabilita: come testare codice che usa l'AI
&lt;/h2&gt;

&lt;p&gt;Uno dei vantaggi più significativi di un pacchetto first-party e la &lt;strong&gt;testabilita nativa&lt;/strong&gt;. Il Laravel AI SDK fornisce metodi di fake e mock integrati:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AI::fake()&lt;/code&gt; per simulare risposte senza chiamate reali al provider&lt;/li&gt;
&lt;li&gt;Assertions per verificare che determinate richieste siano state fatte&lt;/li&gt;
&lt;li&gt;Sequenze di risposte predefinite per testare flussi multi-step&lt;/li&gt;
&lt;li&gt;Integrazione con PHPUnit e Pest senza configurazioni aggiuntive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questo risolve un problema concreto: con gli SDK di terze parti, testare il codice AI richiedeva wrapper custom, mock manuali o chiamate reali (costose e lente). Con il Laravel AI SDK, si testa come qualsiasi altro servizio del framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provider supportati e come aggiungerne di nuovi
&lt;/h2&gt;

&lt;p&gt;Al lancio, il Laravel AI SDK supporta i provider principali:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt;: GPT-4o, GPT-4.5, DALL-E, Whisper&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic&lt;/strong&gt;: Claude Opus, Sonnet, Haiku&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google&lt;/strong&gt;: Gemini Pro, Gemini Ultra&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistral&lt;/strong&gt;: Mistral Large, Mixtral&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt;: per modelli locali self-hosted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aggiungere un provider custom richiede di implementare un'interfaccia con pochi metodi. Per chi lavora con modelli proprietari o provider di nicchia, l'estensione e semplice e segue lo stesso pattern dei driver di Laravel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impatto per i freelance PHP: nuovi servizi da offrire
&lt;/h2&gt;

&lt;p&gt;Per chi lavora come &lt;strong&gt;sviluppatore freelance PHP&lt;/strong&gt;, il Laravel AI SDK apre opportunità concrete di business. Funzionalita che prima richiedevano competenze specialistiche in Python o JavaScript ora sono accessibili direttamente dal framework che usi ogni giorno.&lt;/p&gt;

&lt;p&gt;Chatbot per il customer service, generazione automatica di contenuti, ricerca semantica nei cataloghi prodotto, analisi automatizzata dei feedback utente: sono tutti servizi che un freelance Laravel può offrire ai propri clienti senza uscire dallo stack PHP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quando ha senso e quando no
&lt;/h3&gt;

&lt;p&gt;L'AI SDK ha senso quando l'applicazione ha bisogno di generazione testo, analisi semantica o automazione basata su linguaggio naturale. Non ha senso forzare l'AI dove un algoritmo deterministico funziona meglio: filtri, ordinamenti, calcoli finanziari restano dominio del codice tradizionale. La chiave e usare lo strumento giusto per il problema giusto.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/laravel-ai-sdk-intelligenza-artificiale-first-party?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>ai</category>
      <category>backend</category>
    </item>
    <item>
      <title>Decreto IA 160/2026: dal 30 settembre cosa cambia per le aziende che usano l'intelligenza artificiale</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Tue, 29 Sep 2026 14:01:55 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/decreto-ia-1602026-dal-30-settembre-cosa-cambia-per-le-aziende-che-usano-lintelligenza-3oc3</link>
      <guid>https://dev.to/dev_iadicola/decreto-ia-1602026-dal-30-settembre-cosa-cambia-per-le-aziende-che-usano-lintelligenza-3oc3</guid>
      <description>&lt;p&gt;Il 30 settembre 2026 entra in vigore il &lt;strong&gt;decreto legislativo 9 settembre 2026, n. 160&lt;/strong&gt;, pubblicato in Gazzetta Ufficiale il 15 settembre. È il testo con cui l'Italia adegua le proprie regole al Regolamento europeo sull'intelligenza artificiale, l'&lt;em&gt;AI Act&lt;/em&gt; (Regolamento UE 2024/1689).&lt;/p&gt;

&lt;p&gt;Se ne parla molto, spesso con toni da allarme. Proviamo a mettere in fila le novità e a capire chi riguardano davvero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Un nuovo reato: l'articolo 437-bis del codice penale
&lt;/h2&gt;

&lt;p&gt;La novità più discussa è un nuovo articolo del codice penale, il 437-bis: &lt;em&gt;«Omessa adozione di misure di sicurezza nei sistemi di intelligenza artificiale e alterazione illecita dei sistemi»&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Punisce due comportamenti, entrambi legati ai sistemi di IA &lt;strong&gt;ad alto rischio&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non adottare le misure di sicurezza&lt;/strong&gt; tecniche o di supervisione umana richieste, quando da questa omissione nasce un pericolo concreto per la vita o per la sicurezza pubblica o individuale. La pena va da uno a cinque anni di reclusione, da due a otto se il pericolo riguarda la sicurezza dello Stato.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alterare illecitamente&lt;/strong&gt; un sistema ad alto rischio, con lo stesso tipo di pericolo. Qui la pena va da due a sei anni, da tre a dieci per la sicurezza dello Stato.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;È un reato di &lt;strong&gt;pericolo concreto&lt;/strong&gt;: non basta una mancanza formale, serve che dall'omissione derivi davvero un pericolo di quel tipo.&lt;/p&gt;

&lt;h2&gt;
  
  
  La responsabilità 231 per le imprese
&lt;/h2&gt;

&lt;p&gt;Il decreto aggiunge il nuovo reato all'elenco di quelli che fanno scattare la &lt;strong&gt;responsabilità amministrativa degli enti&lt;/strong&gt; prevista dal D.Lgs. 231/2001, con un nuovo articolo 25-vicies. Se il reato è commesso nell'interesse o a vantaggio dell'azienda, anche l'azienda risponde, con una sanzione pecuniaria da 600 a 1.000 quote.&lt;/p&gt;

&lt;p&gt;Per chi ha già un modello organizzativo 231, significa aggiornarlo: l'uso dei sistemi di IA ad alto rischio diventa un'area da mappare, con procedure e controlli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chi subisce un danno ha più strumenti
&lt;/h2&gt;

&lt;p&gt;La parte meno raccontata, ma forse la più concreta, riguarda la &lt;strong&gt;responsabilità civile&lt;/strong&gt;. Dal 30 settembre chi subisce un danno dall'uso di un sistema di IA può contare su strumenti che prima non aveva:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;l'&lt;strong&gt;ordine di esibizione della documentazione tecnica&lt;/strong&gt; del sistema, per capire come ha funzionato;&lt;/li&gt;
&lt;li&gt;una &lt;strong&gt;presunzione di nesso causale&lt;/strong&gt;, che alleggerisce la prova del legame tra il sistema e il danno;&lt;/li&gt;
&lt;li&gt;l'&lt;strong&gt;azione diretta contro l'assicuratore&lt;/strong&gt; del responsabile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tradotto: la documentazione tecnica non è più un adempimento da archiviare, ma la prima cosa che verrà chiesta se qualcosa va storto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Riguarda la mia azienda?
&lt;/h2&gt;

&lt;p&gt;Il reato riguarda i sistemi &lt;strong&gt;ad alto rischio&lt;/strong&gt; nel senso dell'AI Act: per esempio quelli usati nella selezione del personale, nella valutazione del credito, nell'accesso a servizi essenziali, nelle infrastrutture critiche, o come componenti di sicurezza di prodotti. Un chatbot che risponde sugli orari del negozio o un assistente che riassume le email interne, di norma, non rientrano in questa categoria.&lt;/p&gt;

&lt;p&gt;Le regole civili, invece, valgono in modo più ampio per i danni causati da sistemi di IA. Per questo vale la pena fare ordine anche se non si usano sistemi ad alto rischio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Da dove partire, in pratica
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fare l'inventario&lt;/strong&gt;: quali sistemi di IA usa l'azienda, chi li fornisce, per cosa, e su quali dati. Spesso è la prima volta che qualcuno li mette tutti su una pagina.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classificarli&lt;/strong&gt;: quali potrebbero essere ad alto rischio secondo l'AI Act. Nei casi dubbi, serve il parere di un legale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentare&lt;/strong&gt;: cosa fa il sistema, con quali limiti, chi lo supervisiona e come si interviene quando sbaglia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prevedere la supervisione umana&lt;/strong&gt;: le decisioni importanti devono avere una persona che le controlla e le può fermare, e il software deve renderlo possibile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tenere traccia&lt;/strong&gt;: log di cosa ha fatto il sistema e di chi ha approvato cosa. È la stessa documentazione che servirebbe in caso di contestazione.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Molti di questi punti non sono solo obblighi: sono le stesse regole che rendono un software con l'AI affidabile. Un sistema che registra le proprie azioni, chiede approvazione per le operazioni delicate e permette a una persona di intervenire è più facile da difendere e anche più facile da usare.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questo articolo è una sintesi divulgativa e non sostituisce una consulenza legale: per valutare il caso specifico della tua azienda serve un professionista.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Se stai costruendo o integrando strumenti con l'AI e vuoi che tracciabilità, permessi e supervisione umana siano parte del progetto fin dall'inizio, scrivimi: è molto più semplice progettarli subito che aggiungerli dopo.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/decreto-ia-1602026-dal-30-settembre-cosa-cambia-per-le-aziende-che-usano-lintelligenza-artificiale?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>intelligenzaartificiale</category>
      <category>aiact</category>
      <category>sicurezza</category>
      <category>business</category>
    </item>
    <item>
      <title>Gli agenti AI hanno le chiavi dell’azienda: chi controlla quello che fanno?</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Tue, 29 Sep 2026 09:36:27 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/gli-agenti-ai-hanno-le-chiavi-dellazienda-chi-controlla-quello-che-fanno-1gd6</link>
      <guid>https://dev.to/dev_iadicola/gli-agenti-ai-hanno-le-chiavi-dellazienda-chi-controlla-quello-che-fanno-1gd6</guid>
      <description>&lt;p&gt;Un chatbot che sbaglia una risposta è fastidioso. Un agente che sbaglia mentre possiede accesso a CRM, email, documenti e sistemi di pagamento può creare un problema molto più serio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Un agente non è un normale account di servizio
&lt;/h2&gt;

&lt;p&gt;TechTarget evidenzia una difficoltà nuova: gli agenti possono operare per conto degli utenti e richiedere strumenti o dati diversi mentre svolgono un compito. Le tradizionali identità macchina, spesso dotate di permessi relativamente statici, non descrivono bene questo comportamento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serve sapere chi ha autorizzato cosa
&lt;/h2&gt;

&lt;p&gt;Un sistema agentico dovrebbe poter rispondere a domande concrete: quale utente ha delegato l’azione? Quali risorse sono state consultate? Quale agente l’ha eseguita? Quali strumenti ha usato? Qual era il limite dell’autorizzazione?&lt;/p&gt;

&lt;p&gt;Senza audit affidabile, ricostruire un errore diventa difficile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Least privilege anche per l’AI
&lt;/h2&gt;

&lt;p&gt;Un agente incaricato di leggere disponibilità a calendario non dovrebbe automaticamente poter cancellare appuntamenti. Uno che prepara un pagamento non dovrebbe necessariamente poterlo confermare.&lt;/p&gt;

&lt;p&gt;Permessi granulari, credenziali temporanee e approvazione umana per le azioni più sensibili riducono il raggio d’impatto di un errore.&lt;/p&gt;

&lt;h2&gt;
  
  
  L’autonomia deve essere progettata
&lt;/h2&gt;

&lt;p&gt;Reuters ha raccontato che Meta ha costruito per Muse una macchina virtuale dedicata e meccanismi separati di controllo delle azioni; allo stesso tempo, i test interni riportati dall’agenzia mostrano quanto la sicurezza degli agenti resti difficile.&lt;/p&gt;

&lt;p&gt;Il futuro non sarà “AI senza controllo umano”. Sarà probabilmente una scala di autonomia: alcune azioni automatiche, altre supervisionate e altre ancora vietate.&lt;/p&gt;

&lt;h2&gt;
  
  
  La sicurezza diventa parte del prodotto
&lt;/h2&gt;

&lt;p&gt;Più gli agenti diventano utili, più ottengono accesso. E più ottengono accesso, più identità, autorizzazioni e tracciabilità diventano caratteristiche centrali del software.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fonti: TechTarget, 21 settembre 2026; Reuters, settembre 2026.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/sicurezza-ai-agent-permessi-identita-audit?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>sicurezza</category>
      <category>mcp</category>
      <category>intelligenzaartificiale</category>
    </item>
    <item>
      <title>OpenAI spegne l'API di Sora: cosa succede quando il tuo prodotto dipende da un'AI che chiude</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Tue, 29 Sep 2026 09:16:48 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/openai-spegne-lapi-di-sora-cosa-succede-quando-il-tuo-prodotto-dipende-da-unai-che-chiude-2o04</link>
      <guid>https://dev.to/dev_iadicola/openai-spegne-lapi-di-sora-cosa-succede-quando-il-tuo-prodotto-dipende-da-unai-che-chiude-2o04</guid>
      <description>&lt;p&gt;Il &lt;strong&gt;24 settembre 2026&lt;/strong&gt; OpenAI ha spento l'&lt;strong&gt;API di Sora&lt;/strong&gt;, l'interfaccia che permetteva ad applicazioni di terze parti di generare video con i modelli Sora 2 e Sora 2 Pro. Da quel giorno, ogni chiamata a quell'API fallisce.&lt;/p&gt;

&lt;p&gt;Non è stato un fulmine a ciel sereno: la chiusura era stata annunciata il 24 marzo, con sei mesi di preavviso, e l'app e il sito di Sora per il pubblico erano già stati chiusi il 26 aprile. Eppure chi aveva costruito un prodotto su quell'API si è ritrovato senza un sostituto indicato nella documentazione ufficiale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché riguarda anche chi non genera video
&lt;/h2&gt;

&lt;p&gt;La storia di Sora non è un caso isolato: è il modo normale in cui funziona questo mercato. I modelli AI cambiano in fretta, e i fornitori:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ritirano i modelli vecchi&lt;/strong&gt;, a volte con pochi mesi di preavviso;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cambiano prezzi e limiti&lt;/strong&gt; di utilizzo;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;chiudono interi prodotti&lt;/strong&gt; quando cambiano strategia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se il tuo gestionale riassume i documenti con un modello, se il tuo sito risponde ai clienti con un chatbot, se un'automazione classifica le email con l'AI, sei nella stessa situazione di chi usava Sora: dipendi da una decisione che non prendi tu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il problema non è usare un fornitore
&lt;/h2&gt;

&lt;p&gt;Usare i modelli di OpenAI, Anthropic, Google o altri è quasi sempre la scelta giusta: costruirne uno in casa non ha senso per una PMI. Il problema è &lt;strong&gt;come&lt;/strong&gt; li si collega al proprio software.&lt;/p&gt;

&lt;p&gt;Se le chiamate al fornitore sono sparse in cento punti del codice, con i suoi formati e le sue particolarità, cambiarlo significa riscrivere mezza applicazione. Se invece passano da un unico punto, cambiarlo è un lavoro di giorni, non di mesi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come ridurre il rischio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Un solo punto di contatto
&lt;/h3&gt;

&lt;p&gt;Nel software, l'AI si chiama sempre attraverso un livello intermedio, con un'interfaccia pensata per quello che serve a te («riassumi questo documento», «genera un video da questo testo»), non per quello che offre il fornitore. Dietro quel livello, il fornitore si può cambiare.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Un'alternativa già provata
&lt;/h3&gt;

&lt;p&gt;Per le funzioni importanti conviene avere un secondo fornitore già collegato e testato, anche se non si usa tutti i giorni. Per la generazione video, per esempio, esistono modelli concorrenti accessibili via API.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. I dati restano tuoi
&lt;/h3&gt;

&lt;p&gt;Prompt, risultati, documenti di partenza: tutto quello che serve per rifare il lavoro deve stare nel tuo sistema, non solo nella piattaforma del fornitore.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Leggere gli avvisi di deprecazione
&lt;/h3&gt;

&lt;p&gt;Sembra banale, ma sei mesi di preavviso servono solo se qualcuno li legge. Chi integra servizi AI dovrebbe avere qualcuno che segue gli annunci dei fornitori e un piano per ogni modello in uso.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Degradare con eleganza
&lt;/h3&gt;

&lt;p&gt;Se il servizio AI non risponde, l'applicazione deve continuare a funzionare: magari senza la funzione intelligente, ma senza bloccarsi. Un errore chiaro è meglio di un gestionale fermo.&lt;/p&gt;

&lt;h2&gt;
  
  
  La lezione
&lt;/h2&gt;

&lt;p&gt;L'AI è diventata un componente come un database o un servizio di pagamento, e va trattata allo stesso modo: scelta con cura, collegata in modo ordinato e sostituibile se serve. La chiusura di Sora non è un motivo per evitare l'AI, ma per integrarla bene.&lt;/p&gt;

&lt;p&gt;Se il tuo software usa già servizi AI e vuoi capire quanto è legato a un singolo fornitore, scrivimi: è una verifica che si fa in poco tempo e che conviene fare prima del prossimo annuncio.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/openai-spegne-lapi-di-sora-cosa-succede-quando-il-tuo-prodotto-dipende-da-unai-che-chiude?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>intelligenzaartificiale</category>
      <category>api</category>
      <category>integrazione</category>
      <category>strategia</category>
    </item>
    <item>
      <title>Vibe coding: perché l'app fatta con l'AI in un weekend non è pronta per i tuoi clienti</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Mon, 28 Sep 2026 19:38:43 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/vibe-coding-perche-lapp-fatta-con-lai-in-un-weekend-non-e-pronta-per-i-tuoi-clienti-2d2g</link>
      <guid>https://dev.to/dev_iadicola/vibe-coding-perche-lapp-fatta-con-lai-in-un-weekend-non-e-pronta-per-i-tuoi-clienti-2d2g</guid>
      <description>&lt;p&gt;Qualche anno fa per avere un'applicazione serviva uno sviluppatore. Oggi basta descriverla a un'AI: «fammi un gestionale per le prenotazioni, con login e pagamenti». Dopo un weekend c'è qualcosa che funziona, si clicca, salva i dati. Questo modo di lavorare ha un nome, &lt;strong&gt;vibe coding&lt;/strong&gt;: si programma a sensazione, accettando il codice che l'AI propone senza leggerlo davvero.&lt;/p&gt;

&lt;p&gt;Per un prototipo è una rivoluzione. Per un'applicazione a cui affidi i dati dei tuoi clienti, è un rischio che conviene conoscere.&lt;/p&gt;

&lt;h2&gt;
  
  
  L'AI scrive codice, e lo scrive tanto
&lt;/h2&gt;

&lt;p&gt;Non è una moda di nicchia. Secondo la ricerca di JetBrains sull'adozione degli agenti di coding, a metà 2026 il 90% degli sviluppatori professionisti usa un agente AI almeno una volta a settimana, e due su tre ogni giorno. Anch'io lo uso ogni giorno: scrive, rifattorizza, prepara i test. La differenza non è &lt;em&gt;se&lt;/em&gt; si usa l'AI, ma &lt;em&gt;chi controlla&lt;/em&gt; quello che scrive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa dicono i numeri sul codice generato
&lt;/h2&gt;

&lt;p&gt;Le analisi sul codice prodotto dall'AI raccontano sempre la stessa storia: funziona, ma non è sicuro per default.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nei test di Veracode su oltre cento modelli, il &lt;strong&gt;45%&lt;/strong&gt; del codice generato non superava i controlli dell'OWASP Top 10, la lista delle vulnerabilità web più comuni.&lt;/li&gt;
&lt;li&gt;Secondo l'analisi di CodeRabbit, il codice scritto insieme all'AI contiene circa &lt;strong&gt;1,7 volte&lt;/strong&gt; più problemi gravi, e le vulnerabilità di sicurezza sono quasi &lt;strong&gt;tre volte&lt;/strong&gt; più frequenti rispetto a codice equivalente scritto da persone.&lt;/li&gt;
&lt;li&gt;In uno studio su oltre due milioni di campioni, quasi un pacchetto su cinque citato dall'AI &lt;strong&gt;non esisteva&lt;/strong&gt;: un invito a nozze per chi pubblica pacchetti malevoli con quei nomi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nessuno di questi numeri dice che l'AI sia inutile. Dicono che il codice generato va trattato come quello di un collaboratore velocissimo e senza esperienza: va letto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gli errori tipici di un'app nata in un weekend
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Le chiavi nel posto sbagliato
&lt;/h3&gt;

&lt;p&gt;Password del database, chiavi di Stripe o delle API finite nel codice che arriva al browser, o in un repository pubblico. L'app funziona benissimo, e chiunque apra gli strumenti di sviluppo del browser può leggerle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Il database aperto a tutti
&lt;/h3&gt;

&lt;p&gt;Molte app generate usano servizi di database accessibili direttamente dal browser. Se le regole di accesso non sono scritte bene, ogni utente può leggere i dati di tutti gli altri. È uno degli errori più frequenti nelle scansioni delle app «vibe coded».&lt;/p&gt;

&lt;h3&gt;
  
  
  Nessun controllo su chi può fare cosa
&lt;/h3&gt;

&lt;p&gt;Il pulsante «elimina» è nascosto agli utenti normali, ma la richiesta che parte dal pulsante risponde a chiunque la mandi. L'interfaccia sembra protetta, il server no.&lt;/p&gt;

&lt;h3&gt;
  
  
  Niente test, niente storia
&lt;/h3&gt;

&lt;p&gt;Quando qualcosa si rompe, nessuno sa perché, e ogni correzione chiesta all'AI rischia di romperne un'altra. Senza test automatici non c'è modo di sapere se la modifica di oggi ha rovinato la funzione di ieri.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quando il vibe coding va benissimo
&lt;/h2&gt;

&lt;p&gt;Ci sono casi in cui è la scelta giusta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Validare un'idea&lt;/strong&gt;: mostrare un prototipo a un cliente o a un investitore prima di spendere per il prodotto vero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strumenti interni usa e getta&lt;/strong&gt;: uno script per convertire un file, una pagina per un evento di una settimana.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capire cosa vuoi davvero&lt;/strong&gt;: toccare con mano un'interfaccia chiarisce i requisiti meglio di dieci riunioni.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il problema nasce quando il prototipo, senza che nessuno lo decida, diventa il prodotto: arrivano i clienti veri, i dati veri, i pagamenti veri.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dal prototipo alla produzione: cosa serve
&lt;/h2&gt;

&lt;p&gt;La buona notizia è che un prototipo fatto con l'AI non va buttato: è un'ottima specifica. Per portarlo in produzione serve fare quello che il vibe coding salta:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Una revisione del codice&lt;/strong&gt; da parte di qualcuno che lo capisca, a partire da autenticazione, permessi e gestione dei dati.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I segreti fuori dal codice&lt;/strong&gt;, in variabili d'ambiente, con chiavi nuove al posto di quelle esposte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I permessi controllati sul server&lt;/strong&gt;, non solo nascosti nell'interfaccia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test automatici&lt;/strong&gt; sulle funzioni che contano: se si rompe il pagamento, lo deve scoprire un test, non un cliente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup, log e aggiornamenti&lt;/strong&gt;: sapere cosa succede e poter tornare indietro.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  L'AI è un acceleratore, non un pilota automatico
&lt;/h2&gt;

&lt;p&gt;Io sviluppo con l'AI tutti i giorni, ed è il motivo per cui oggi posso consegnare in settimane quello che prima richiedeva mesi. Ma ogni riga che va in produzione passa da una revisione, da test automatici e da controlli di sicurezza. È la differenza tra usare l'AI per andare più veloci e usarla per non sapere cosa si sta costruendo.&lt;/p&gt;

&lt;p&gt;Se hai un prototipo nato con l'AI e vuoi capire se è pronto per i tuoi clienti, possiamo guardarlo insieme: spesso bastano pochi interventi mirati per trasformarlo in un'applicazione solida.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/vibe-coding-perche-lapp-fatta-con-lai-in-un-weekend-non-e-pronta-per-i-tuoi-clienti?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>intelligenzaartificiale</category>
      <category>security</category>
      <category>codequality</category>
    </item>
    <item>
      <title>n8n, Zapier o software su misura? Quando un'automazione basta e quando no</title>
      <dc:creator>Dev-Iadicola</dc:creator>
      <pubDate>Mon, 28 Sep 2026 19:30:48 +0000</pubDate>
      <link>https://dev.to/dev_iadicola/n8n-zapier-o-software-su-misura-quando-unautomazione-basta-e-quando-no-554e</link>
      <guid>https://dev.to/dev_iadicola/n8n-zapier-o-software-su-misura-quando-unautomazione-basta-e-quando-no-554e</guid>
      <description>&lt;p&gt;Negli ultimi mesi, sui social, non si parla d'altro: flussi di &lt;strong&gt;n8n&lt;/strong&gt; che leggono le email, le riassumono con l'AI, aggiornano il CRM e mandano un messaggio su Slack. Tutto senza scrivere codice, o quasi. Non è solo una moda: nel 2026 n8n dichiara oltre 230.000 utenti attivi, e a maggio SAP ci ha investito per portarlo dentro i propri strumenti.&lt;/p&gt;

&lt;p&gt;Chi ha un'azienda si chiede quindi: &lt;em&gt;mi serve davvero un software su misura, o basta un'automazione?&lt;/em&gt; La risposta onesta è: dipende da cosa stai automatizzando. Proviamo a fare ordine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa sono Zapier, Make e n8n
&lt;/h2&gt;

&lt;p&gt;Sono piattaforme che collegano applicazioni diverse con dei flussi: «quando succede questo, fai quello». Arriva un modulo dal sito, crea il contatto nel CRM, manda un'email di benvenuto, avvisa il commerciale.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zapier&lt;/strong&gt;: il più semplice e con più integrazioni pronte, migliaia. Si paga a numero di operazioni, e con volumi alti il conto sale in fretta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make&lt;/strong&gt;: flussi più articolati di Zapier, con un editor visuale potente, sempre in cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;n8n&lt;/strong&gt;: pensato per chi ha un minimo di competenze tecniche. Si può installare sul proprio server (&lt;em&gt;self-hosted&lt;/em&gt;), quindi i dati restano in casa, e con volumi alti costa molto meno. È diventato il preferito per costruire flussi con agenti AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quando un'automazione basta, ed è la scelta giusta
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Collegare strumenti che già usi&lt;/strong&gt;: il modulo del sito con il CRM, il calendario con le email di promemoria, le fatture con il foglio del commercialista.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flussi lineari&lt;/strong&gt;: pochi passaggi, sempre gli stessi, senza troppe eccezioni.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volumi contenuti&lt;/strong&gt;: decine o centinaia di operazioni al giorno, non decine di migliaia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provare un'idea&lt;/strong&gt;: vedere se un processo automatizzato funziona prima di investire in qualcosa di più strutturato.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In questi casi un software su misura sarebbe uno spreco. Un buon flusso si costruisce in poche ore e fa risparmiare ore ogni settimana.&lt;/p&gt;

&lt;h2&gt;
  
  
  I segnali che l'automazione ti sta stretta
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Il flusso è diventato un groviglio
&lt;/h3&gt;

&lt;p&gt;Quaranta passaggi, venti condizioni, tre flussi che si chiamano a vicenda. Quando qualcosa si rompe, nessuno sa più dove. Le piattaforme visuali sono chiarissime con dieci blocchi e illeggibili con cento.&lt;/p&gt;

&lt;h3&gt;
  
  
  I dati non hanno una casa
&lt;/h3&gt;

&lt;p&gt;Le informazioni passano da un'app all'altra ma non stanno davvero da nessuna parte: un po' nel CRM, un po' in un foglio Google, un po' nelle note del flusso. Per sapere a che punto è un ordine bisogna aprire tre strumenti.&lt;/p&gt;

&lt;h3&gt;
  
  
  Le eccezioni sono la regola
&lt;/h3&gt;

&lt;p&gt;Il cliente che paga in due rate, l'ordine che va diviso su due magazzini, lo sconto che vale solo per certi prodotti. Ogni eccezione diventa un ramo in più del flusso, e ogni ramo in più è un punto dove può rompersi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Il conto cresce con il lavoro
&lt;/h3&gt;

&lt;p&gt;Con le piattaforme a consumo, più lavori più paghi. Quando le operazioni diventano decine di migliaia al mese, il canone può superare il costo di un'applicazione fatta apposta.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nessuno sa cosa è successo
&lt;/h3&gt;

&lt;p&gt;Un'automazione che fallisce in silenzio è peggio di un processo manuale: pensi che il cliente abbia ricevuto l'email, e invece no. Servono log, avvisi, la possibilità di riprovare.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa aggiunge un software su misura
&lt;/h2&gt;

&lt;p&gt;Un'applicazione su misura non sostituisce le integrazioni: le mette al servizio di un &lt;strong&gt;centro&lt;/strong&gt;. I dati hanno un posto solo, le regole del tuo lavoro sono scritte una volta, le persone hanno schermate pensate per quello che fanno, e ogni operazione lascia una traccia. Le automazioni diventano parte del sistema, con test che dicono se funzionano ancora.&lt;/p&gt;

&lt;h2&gt;
  
  
  La via di mezzo, che spesso è la migliore
&lt;/h2&gt;

&lt;p&gt;Non è una scelta secca. Molte aziende partono con Zapier o n8n, capiscono quali processi contano davvero, e solo quelli li portano in un gestionale su misura. Il resto, le integrazioni semplici e occasionali, resta in un'automazione.&lt;/p&gt;

&lt;p&gt;Le automazioni che hai costruito non vanno buttate: sono la mappa più precisa di come lavora la tua azienda. Se i tuoi flussi sono diventati troppo complicati da gestire, partiamo da lì per capire cosa merita un software e cosa può restare com'è.&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://iadicola.it/articoli/n8n-zapier-o-software-su-misura-quando-unautomazione-basta-e-quando-no?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Leggi l'articolo completo su iadicola.it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>automazione</category>
      <category>integrazione</category>
      <category>gestionale</category>
    </item>
  </channel>
</rss>
