(Have a) rest with Laravel
(Have a) REST
with Laravel… o come costruire
REST APIs con Laravel
5.x
Francesco Malatesta - 22 Febbraio 2017
Chi Sono?
Francesco Malatesta
Developer @ AdEspresso (adesso parte della famiglia Hootsuite)
Founder @ Laravel-Italia
Author @ Sitepoint
Author/Translator @ Packt Publishing / Leanpub$profiles = [
‘github’ => ‘francescomalatesta’,
‘twitter’ => ‘@malatestafra’,
‘facebook’ => ‘malatesta.francesco’
];
Cos’è Laravel?
Framework PHP
il più semplice da usare in circolazione;
tanto materiale per l’apprendimento:
ottima documentazione, Laracasts;
libri: (O’Reilly “Laravel Up and Running”, traduzioni in tutte le lingue);
crescita pazzesca negli ultimi 5 anni:
19.320.041 installazioni (~33k al giorno) (fonte: packagist);
54860 domande su Stackoverflow (~100 al giorno)
Parte I
“Indietro nel Tempo”
Questo è
Francesco nel
2012
(sta lavorando ad un CMS PHP
con CodeIgniter, tutto sembra
andare bene, ma...)
PHP è Brutto.
strchr();
strstr(); strtok();
untaint();
mhash_keygen_s2k();
eregi();
uasort();
uksort(); arsort();
vsprintf();
ereg();
posix_mkfifo();
lang_lock(); flag_rate();
… ok, queste due non sono PHP. Quasi.
lang_lock();
http://harrypotter.wikia.com/wiki/Langlock
flag_rate();
http://harrypotter.wikia.com/wiki/Flagrate
Gif: Flagrate in azione.
“Quindi… quello non era PHP…”
I Framework sono ancora deboli, e brutti...
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
… ed anche questa slide non scherza!
C’è bisogno di…
● Potenza.
● Espressività.
Nel frattempo, da qualche altra parte...
Symfony
Dicembre 2011 - Symfony 2.0.7 su Packagist
Cosa porta Symfony nel mondo PHP?
Buone pratiche in un linguaggio che prima
quasi non ne conosceva;
Il concetto di Service Container;
Permette agli sviluppatori di crescere meglio,
visto che hanno a che fare con uno
strumento più sofisticato;
Potenza.
Laravel!
2012 - Laravel 3
2013 - Laravel 4 (su Packagist)
Cosa porta Laravel nel mondo PHP?
Semplifica usando come base alcuni
componenti di Symfony;
Rende lo sviluppo di applicazioni (anche
complesse) alla portata di tutti;
Sistema di componenti driver based, utili per
scalare;
Semplifica la sintassi, introducendo (ma senza
sacrificare la potenza)...
Espressività.
Espressività
Storage::disk('s3')->put('avatars/1', Storage::disk('local')->get('avatar.png'));
Espressività #2
if (Auth::attempt(['email' => $email, 'password' => $password])) {
return redirect()->intended('dashboard');
}
Espressività #3
$value = Cache::remember('user', $minutes, function () {
return DB::table('users')->find(1);
});
(Have a) rest with Laravel
Parte 2
“Laravel… nel 2017”
19.320.041
~33k Installazioni / giorno
Un Solido Processo di Release
Ogni due anni viene rilasciata una nuova LTS;
La LTS attuale è la 5.1;
La prossima LTS sarà la 5.5, prevista per Luglio/Agosto 2017;
Ogni LTS conta 2 anni di bug fix, 3 anni di security update;
Ogni versione intermedia conta 6 mesi di bug fix, 1 anno di security update;
Il processo di upgrade è migliorato rispetto al passato;
Laravel sta Crescendo
Laravel 4.X dipendeva da più componenti di Symfony;
In Laravel 5.X, molti di questi componenti sono stati riscritti da zero, per
migliorare le performance dove possibile;
Occhio attento al frontend (supporto per Webpack in 5.4);
Nuovi componenti aggiunti nelle ultime versioni:
Cashier (gestione di pagamenti);
Passport (creazione di un server OAuth 2.0);
“Ok, ma… alla fine, chi lo usa, questo Laravel?”
Startup
perché è molto comodo per creare al volo un MVP, in modo da poter validare
velocemente un’idea di business;
PMI
perché può offrire il giusto compromesso tra potenza ed facilità d’uso, adatto
a creare applicazioni;
Enterprise
può essere tranquillamente usato in applicazioni molto più grandi, affiancato
… un po’ tutti!
Caso 1 - Startup - Netlex
Software gestionale per studi legali;
Sviluppato e venduto come Software as a Service;
Recentemente, exit con TeamSystem;
Nessun problema in termini di performance;
Caso 2 - PMI - Fater S.p.A.
Software per la gestione dei siti aziendali;
Pampers;
Tampax;
Lines;
ACE;
Più di un milione di iscritti;
Caso 3 - Enterprise - Ericsson
Sistema di Gestione Documentale;
Affiancato a:
Elasticsearch;
Microservizi;
Nessun problema in termini di performance;
Parte 3
“Debunking Time!”
Bugia N.1
“Le Facade di Laravel usano metodi statici,
non è codice pulito!”
… non è vero.
non è un vero metodo statico, ma __callStatic();
viene usata un’istanza corrispondente, presente nel Service Container;
non è obbligatorio usare le Facade: per ognuna esiste la controparte “istanziabile”
ed usabile in modo ancora più pulito
Cache => IlluminateCacheRepository
File => IlluminateFilesystemFilesystem
Log => IlluminateLogWriter
Mail => IlluminateMailMailer
Bugia N.2
“Laravel favorisce un ecosistema chiuso.”
… non è vero.
Forge permette:
Provision di server su vari provider (DigitalOcean, AWS, Custom);
Deploy di applicazioni di diverso tipo (Laravel, Lumen, Symfony, Static HTML);
Envoyer permette:
Deploy automatici di svariati tipi di applicazione (Laravel, Altro);
Dopo il deploy, health check ed altre feature sono uguali per tutti;
Bugia N.3
“Laravel è scritto con componenti Symfony, conviene
usare Symfony!”
… non è vero.
Laravel dipendeva molto dai Symfony Component nella versione 4.X;
Dalla versione 5.0 in poi molti componenti sono stati riscritti da zero, per
migliorare le performance dove necessario;
Symfony Components != Symfony Framework
Symfony Framework, come Laravel, è costruito sui Symfony Component;
Symfony Framework e Laravel presentano svariate differenze;
Conoscendone uno, è più semplice lavorare l’altro;
Bugia N.4
“Non conviene usare un framework come Laravel,
crei un monolite su cui domani dovrai
rimettere le mani.”
… non è vero.
In caso di applicazioni in fase di partenza:
raramente si ha la possibilità (ed i mezzi) per creare da subito un sistema ad-hoc;
se il monolite non è scritto male, si possono scorporare alcune parti critiche in microservizi in un
secondo momento senza problemi;
In caso di applicazioni più grandi:
Parti critiche delegate a microservice ad-hoc;
Laravel continua a gestire altri aspetti, su cui è più semplice lavorare;
Fare over-engineering durante il bootstrap di un progetto non è una garanzia di
Bugia N.5
“Laravel non incoraggia le buone pratiche nello
sviluppo software.”
… non è vero.
“Non esistono pessimi linguaggi di
programmazione. Solo pessimi sviluppatori.”
LCB = Luoghi Comuni Buoni
Il proiettile d’argento non esiste.
Un framework è uno strumento, ha pro e
contro, risolve alcune problematiche e ne
presenta altre. Accettalo.
Tutto dipende dalle necessità di business.
Parte 4
“Have a REST”
Cosa significa costruire API REST?
Sta per REpresentational State Transfer;
Prevede un’interfaccia uniforme
set di operazioni ben definite;
set di risposte ben definite;
Prevedere l’assenza di uno stato;
Yes, but...
Costruire REST API significa...
Fare in modo che l’applicazione che noi scriviamo
Gestisca correttamente le richieste in entrata;
Gestisca correttamente le risposte in uscita;
Aderisca a determinati standard e convenzioni;
Non sappiamo che applicazione ci si dovrà interfacciare;
Si, perché:
Laravel è un framework per lo sviluppo di web app;
Ci sono svariati package che facilitano il compito;
Dopotutto, non sarei qui se non fosse possibile;
I Package
DingoAPI (https://github.com/dingo/api)
aiuta ad implementare la content negotiation;
agevola il versioning delle API;
permette implementare il rate limit (e tanto altro);
JWT-Auth (https://github.com/tymondesigns/jwt-auth)
implementa un sistema di auth stateless, basato su token;
già pronto ad essere usato con DingoAPI
… per i più pigri:
github.com/francescomalatesta/laravel-api-boilerplate-jwt
boilerplate già pronto ad essere usato;
permette di generare al volo tutta l’infrastruttura;
sistema di auth (con relativi controller) già pronto;
aggiornato a Laravel 5.3 (a giorni 5.4);
(Have a) rest with Laravel
Domande?
… grazie :)

More Related Content

PPTX
Programmazione funzionale: un primo approccio attraverso F#
PDF
Making Chatbots
PDF
Alla scoperta di gRPC
PPTX
Async/Await: make it simple!!
PDF
AntiPatterns: i vizi del programmatore
PDF
Clean android code - Droidcon Italiy 2014
PDF
Commit University - Microsoft Azure
PDF
Commit University - Exploring Angular 2
Programmazione funzionale: un primo approccio attraverso F#
Making Chatbots
Alla scoperta di gRPC
Async/Await: make it simple!!
AntiPatterns: i vizi del programmatore
Clean android code - Droidcon Italiy 2014
Commit University - Microsoft Azure
Commit University - Exploring Angular 2

Viewers also liked (20)

KEY
PHPSpec BDD for PHP
PDF
PDF
Windows Azure Platform
PDF
Behavior & Specification Driven Development in PHP - #OpenWest
PDF
Laravel 101
PPTX
Testing and TDD - Laravel and Express Examples
PDF
Dalle Styleguide alla Pattern Libraries: cosa serve e quando
PPTX
Laravel and SOLR
PDF
Machine learning in php php con poland
PDF
Machine learning in php
PPT
S3 Overview Presentation
PDF
Reactive Laravel - Laravel meetup Groningen
PDF
Functional programming with php7
PDF
Hunt for dead code
PDF
Php 7.2 compliance workshop php benelux
PDF
php & performance
PDF
Php in the graph (Gremlin 3)
PDF
Review unknown code with static analysis - bredaphp
PDF
Static analysis saved my code tonight
PDF
Google Analytics Campaign Tracking Fundamentals
PHPSpec BDD for PHP
Windows Azure Platform
Behavior & Specification Driven Development in PHP - #OpenWest
Laravel 101
Testing and TDD - Laravel and Express Examples
Dalle Styleguide alla Pattern Libraries: cosa serve e quando
Laravel and SOLR
Machine learning in php php con poland
Machine learning in php
S3 Overview Presentation
Reactive Laravel - Laravel meetup Groningen
Functional programming with php7
Hunt for dead code
Php 7.2 compliance workshop php benelux
php & performance
Php in the graph (Gremlin 3)
Review unknown code with static analysis - bredaphp
Static analysis saved my code tonight
Google Analytics Campaign Tracking Fundamentals
Ad

Similar to (Have a) rest with Laravel (20)

PDF
Laravel Framework PHP
ODP
Laravel from scratch
PDF
Laravel 7 REST API
PPTX
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
KEY
RESTful APIs (ITA) - /w WebMachine
PDF
introduzione a symfony 2
PDF
Startup weekend bootcamp
PDF
Happy Monday #1: the Web API guidelines for happy developers
PDF
Lezione 11: Accesso ai RESTful Web Services in Java
PPTX
Francesco Malatesta - What You Give is What You Get - Codemotion Milan 2017
PDF
Web frameworks
PDF
Giuffrida
PDF
Rivoluziona il tuo sito con le WP REST API - Andrea Cardinali
PDF
Case study: un approccio modulare in un progetto legacy
PDF
Sviluppo web dall'antichità all'avanguardia e ritorno
PDF
Come sviluppo le applicazioni web
PPTX
AngularJS: server communication
PDF
Acadevmy - PWA & Angular
PDF
WTF it works in dev environment - PugRoma
PDF
Creare API pubbliche, come evitare gli errori comuni
Laravel Framework PHP
Laravel from scratch
Laravel 7 REST API
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
RESTful APIs (ITA) - /w WebMachine
introduzione a symfony 2
Startup weekend bootcamp
Happy Monday #1: the Web API guidelines for happy developers
Lezione 11: Accesso ai RESTful Web Services in Java
Francesco Malatesta - What You Give is What You Get - Codemotion Milan 2017
Web frameworks
Giuffrida
Rivoluziona il tuo sito con le WP REST API - Andrea Cardinali
Case study: un approccio modulare in un progetto legacy
Sviluppo web dall'antichità all'avanguardia e ritorno
Come sviluppo le applicazioni web
AngularJS: server communication
Acadevmy - PWA & Angular
WTF it works in dev environment - PugRoma
Creare API pubbliche, come evitare gli errori comuni
Ad

More from Commit University (20)

PDF
Accessibilità ed equità digitale: un impegno, non una scelta
PDF
GitHub Copilot:vediamo chi comanda - Commit University.pdf
PDF
Contract Driven Development - Branch 2024.pdf
PPTX
Cybersecurity & AI: Illusioni e Speranze
PDF
Migliorare la Developer Experience in un mondo Cloud Native
PPTX
Scopri come sfruttare la potenza della Hybrid RAG
PDF
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
PDF
Oltre l'hype: vulnerabilità e limiti dell'intelligenza artificiale.pdf
PPTX
Alla scoperta dei Vector Database e dei RAG
PDF
Nell’iperspazio con Rocket: il Framework Web di Rust!
PDF
Crea il tuo assistente AI con lo Stregatto (open source python framework)
PDF
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
PDF
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
PDF
Slide-10years.pdf
PDF
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
PDF
Vue.js slots.pdf
PPTX
Commit - Qwik il framework che ti stupirà.pptx
PPTX
Sviluppare da zero una Angular Web App per la PA
PDF
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
PDF
Prisma the ORM that node was waiting for
Accessibilità ed equità digitale: un impegno, non una scelta
GitHub Copilot:vediamo chi comanda - Commit University.pdf
Contract Driven Development - Branch 2024.pdf
Cybersecurity & AI: Illusioni e Speranze
Migliorare la Developer Experience in un mondo Cloud Native
Scopri come sfruttare la potenza della Hybrid RAG
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Oltre l'hype: vulnerabilità e limiti dell'intelligenza artificiale.pdf
Alla scoperta dei Vector Database e dei RAG
Nell’iperspazio con Rocket: il Framework Web di Rust!
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Slide-10years.pdf
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Vue.js slots.pdf
Commit - Qwik il framework che ti stupirà.pptx
Sviluppare da zero una Angular Web App per la PA
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Prisma the ORM that node was waiting for

(Have a) rest with Laravel

  • 2. (Have a) REST with Laravel… o come costruire REST APIs con Laravel 5.x Francesco Malatesta - 22 Febbraio 2017
  • 3. Chi Sono? Francesco Malatesta Developer @ AdEspresso (adesso parte della famiglia Hootsuite) Founder @ Laravel-Italia Author @ Sitepoint Author/Translator @ Packt Publishing / Leanpub$profiles = [ ‘github’ => ‘francescomalatesta’, ‘twitter’ => ‘@malatestafra’, ‘facebook’ => ‘malatesta.francesco’ ];
  • 4. Cos’è Laravel? Framework PHP il più semplice da usare in circolazione; tanto materiale per l’apprendimento: ottima documentazione, Laracasts; libri: (O’Reilly “Laravel Up and Running”, traduzioni in tutte le lingue); crescita pazzesca negli ultimi 5 anni: 19.320.041 installazioni (~33k al giorno) (fonte: packagist); 54860 domande su Stackoverflow (~100 al giorno)
  • 6. Questo è Francesco nel 2012 (sta lavorando ad un CMS PHP con CodeIgniter, tutto sembra andare bene, ma...)
  • 7. PHP è Brutto. strchr(); strstr(); strtok(); untaint(); mhash_keygen_s2k(); eregi(); uasort(); uksort(); arsort(); vsprintf(); ereg(); posix_mkfifo(); lang_lock(); flag_rate();
  • 8. … ok, queste due non sono PHP. Quasi. lang_lock(); http://harrypotter.wikia.com/wiki/Langlock flag_rate(); http://harrypotter.wikia.com/wiki/Flagrate Gif: Flagrate in azione.
  • 9. “Quindi… quello non era PHP…”
  • 10. I Framework sono ancora deboli, e brutti... $this->load->library('ftp'); $config['hostname'] = 'ftp.example.com'; $config['username'] = 'your-username'; $config['password'] = 'your-password'; $config['debug'] = TRUE; $this->ftp->connect($config); … ed anche questa slide non scherza!
  • 11. C’è bisogno di… ● Potenza. ● Espressività. Nel frattempo, da qualche altra parte...
  • 12. Symfony Dicembre 2011 - Symfony 2.0.7 su Packagist
  • 13. Cosa porta Symfony nel mondo PHP? Buone pratiche in un linguaggio che prima quasi non ne conosceva; Il concetto di Service Container; Permette agli sviluppatori di crescere meglio, visto che hanno a che fare con uno strumento più sofisticato; Potenza.
  • 14. Laravel! 2012 - Laravel 3 2013 - Laravel 4 (su Packagist)
  • 15. Cosa porta Laravel nel mondo PHP? Semplifica usando come base alcuni componenti di Symfony; Rende lo sviluppo di applicazioni (anche complesse) alla portata di tutti; Sistema di componenti driver based, utili per scalare; Semplifica la sintassi, introducendo (ma senza sacrificare la potenza)... Espressività.
  • 17. Espressività #2 if (Auth::attempt(['email' => $email, 'password' => $password])) { return redirect()->intended('dashboard'); }
  • 18. Espressività #3 $value = Cache::remember('user', $minutes, function () { return DB::table('users')->find(1); });
  • 22. Un Solido Processo di Release Ogni due anni viene rilasciata una nuova LTS; La LTS attuale è la 5.1; La prossima LTS sarà la 5.5, prevista per Luglio/Agosto 2017; Ogni LTS conta 2 anni di bug fix, 3 anni di security update; Ogni versione intermedia conta 6 mesi di bug fix, 1 anno di security update; Il processo di upgrade è migliorato rispetto al passato;
  • 23. Laravel sta Crescendo Laravel 4.X dipendeva da più componenti di Symfony; In Laravel 5.X, molti di questi componenti sono stati riscritti da zero, per migliorare le performance dove possibile; Occhio attento al frontend (supporto per Webpack in 5.4); Nuovi componenti aggiunti nelle ultime versioni: Cashier (gestione di pagamenti); Passport (creazione di un server OAuth 2.0);
  • 24. “Ok, ma… alla fine, chi lo usa, questo Laravel?”
  • 25. Startup perché è molto comodo per creare al volo un MVP, in modo da poter validare velocemente un’idea di business; PMI perché può offrire il giusto compromesso tra potenza ed facilità d’uso, adatto a creare applicazioni; Enterprise può essere tranquillamente usato in applicazioni molto più grandi, affiancato … un po’ tutti!
  • 26. Caso 1 - Startup - Netlex Software gestionale per studi legali; Sviluppato e venduto come Software as a Service; Recentemente, exit con TeamSystem; Nessun problema in termini di performance;
  • 27. Caso 2 - PMI - Fater S.p.A. Software per la gestione dei siti aziendali; Pampers; Tampax; Lines; ACE; Più di un milione di iscritti;
  • 28. Caso 3 - Enterprise - Ericsson Sistema di Gestione Documentale; Affiancato a: Elasticsearch; Microservizi; Nessun problema in termini di performance;
  • 30. Bugia N.1 “Le Facade di Laravel usano metodi statici, non è codice pulito!”
  • 31. … non è vero. non è un vero metodo statico, ma __callStatic(); viene usata un’istanza corrispondente, presente nel Service Container; non è obbligatorio usare le Facade: per ognuna esiste la controparte “istanziabile” ed usabile in modo ancora più pulito Cache => IlluminateCacheRepository File => IlluminateFilesystemFilesystem Log => IlluminateLogWriter Mail => IlluminateMailMailer
  • 32. Bugia N.2 “Laravel favorisce un ecosistema chiuso.”
  • 33. … non è vero. Forge permette: Provision di server su vari provider (DigitalOcean, AWS, Custom); Deploy di applicazioni di diverso tipo (Laravel, Lumen, Symfony, Static HTML); Envoyer permette: Deploy automatici di svariati tipi di applicazione (Laravel, Altro); Dopo il deploy, health check ed altre feature sono uguali per tutti;
  • 34. Bugia N.3 “Laravel è scritto con componenti Symfony, conviene usare Symfony!”
  • 35. … non è vero. Laravel dipendeva molto dai Symfony Component nella versione 4.X; Dalla versione 5.0 in poi molti componenti sono stati riscritti da zero, per migliorare le performance dove necessario; Symfony Components != Symfony Framework Symfony Framework, come Laravel, è costruito sui Symfony Component; Symfony Framework e Laravel presentano svariate differenze; Conoscendone uno, è più semplice lavorare l’altro;
  • 36. Bugia N.4 “Non conviene usare un framework come Laravel, crei un monolite su cui domani dovrai rimettere le mani.”
  • 37. … non è vero. In caso di applicazioni in fase di partenza: raramente si ha la possibilità (ed i mezzi) per creare da subito un sistema ad-hoc; se il monolite non è scritto male, si possono scorporare alcune parti critiche in microservizi in un secondo momento senza problemi; In caso di applicazioni più grandi: Parti critiche delegate a microservice ad-hoc; Laravel continua a gestire altri aspetti, su cui è più semplice lavorare; Fare over-engineering durante il bootstrap di un progetto non è una garanzia di
  • 38. Bugia N.5 “Laravel non incoraggia le buone pratiche nello sviluppo software.”
  • 39. … non è vero. “Non esistono pessimi linguaggi di programmazione. Solo pessimi sviluppatori.”
  • 40. LCB = Luoghi Comuni Buoni Il proiettile d’argento non esiste. Un framework è uno strumento, ha pro e contro, risolve alcune problematiche e ne presenta altre. Accettalo. Tutto dipende dalle necessità di business.
  • 41. Parte 4 “Have a REST”
  • 42. Cosa significa costruire API REST? Sta per REpresentational State Transfer; Prevede un’interfaccia uniforme set di operazioni ben definite; set di risposte ben definite; Prevedere l’assenza di uno stato;
  • 44. Costruire REST API significa... Fare in modo che l’applicazione che noi scriviamo Gestisca correttamente le richieste in entrata; Gestisca correttamente le risposte in uscita; Aderisca a determinati standard e convenzioni; Non sappiamo che applicazione ci si dovrà interfacciare;
  • 45. Si, perché: Laravel è un framework per lo sviluppo di web app; Ci sono svariati package che facilitano il compito; Dopotutto, non sarei qui se non fosse possibile;
  • 46. I Package DingoAPI (https://github.com/dingo/api) aiuta ad implementare la content negotiation; agevola il versioning delle API; permette implementare il rate limit (e tanto altro); JWT-Auth (https://github.com/tymondesigns/jwt-auth) implementa un sistema di auth stateless, basato su token; già pronto ad essere usato con DingoAPI
  • 47. … per i più pigri: github.com/francescomalatesta/laravel-api-boilerplate-jwt boilerplate già pronto ad essere usato; permette di generare al volo tutta l’infrastruttura; sistema di auth (con relativi controller) già pronto; aggiornato a Laravel 5.3 (a giorni 5.4);