SlideShare a Scribd company logo
1 of 19
Download to read offline
Accelera lo sviluppo
con il web framework!
COMPONENTI A SUPPORTO DELLO SVILUPPATORE
Tsuneo Kurihara
Senior Lead Software Engineer
baasbox.com
Missione
Studiare e realizzare soluzioni software che possano
durare nel tempo
Consiglio #1
Osserva, e cerca di capire cosa si può migliorare
Consiglio #2
Prima di chiedere agli altri capisci se sei in grado di
farlo tu
Consiglio #3
Se sei in difficoltà chiedi aiuto agli altri
Framework
baasbox.com
Definizione
termine inglese che indica:
- una struttura di supporto intorno alla quale può
essere costruito qualcosa
- un sistema di regole, idee e pratiche utilizzato
per pianificare oppure decidere qualcosa
Framework
baasbox.com
In informatica
Un'architettura logica di supporto (spesso
un'implementazione logica di un particolare design
pattern) sulla quale un software può essere progettato
e realizzato, spesso facilitandone lo sviluppo da
parte del programmatore.
Framework
baasbox.com
In informatica
Un'architettura logica di supporto (spesso
un'implementazione logica di un particolare design
pattern) sulla quale un software può essere progettato
e realizzato, spesso facilitandone lo sviluppo da
parte del programmatore.
Don't Repeat Yourself! (DRY)
Caratteristiche Web Application
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
Caratteristiche Web Application
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
Microframework
Framework
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
Routing
Associare un path ad una funzione
Web Services
Dato una richiesta (input), restituire la risposta (output)
Routing e Web Services
baasbox.com
$router->get('user/{id}', function ($id) {
return 'User '.$id;
});
$name = $request->input('name');
$request->has('name')
$request->file('photo');
return response($content)
->header('Content-Type', $type);
return response()->json([
'name' => 'Abigail',
'state' =>'CA'
]);
Middleware
Intercetta le richieste ed applica delle logiche prima di
elaborare le risposte
Routing e Web Services
baasbox.com
public function handle($request, Closure $next)
{
if ($request->input('age') <= 200) {
return redirect('home');
}
return $next($request);
}
Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
ORM (Object-Relational Mapping)
- Componente che traduce i dati di un database in
un modello logico in memoria
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
ORM (Object-Relational Mapping)
- Componente che traduce i dati di un database in
un modello logico in memoria
- supporta costrutti logici come le relazioni
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
public function phone()
{
return $this->hasOne(Phone::class);
}
$phone = User::find(1)->phone;
Autenticazione
- validazione delle credenziali e gestione di una
sessione (o generazione di un token)
- gestione del flusso di registrazione (anche con il
supporto di un'interfaccia grafica)
- libreria per l'accesso ai dati dell'utente
Autorizzazione
- restringere l'accesso alle risorse a determinati
gruppi di utenti
Autenticazione e Autorizzazione
baasbox.com
$user = Auth::user();
Route::get('/flights', function () {
// Only admin users may access this route…
})->middleware('auth:admin');
Un sistema per renderizzare pagine web da
template
- sistema di template modulare e con logica
- chiamate per caricare i template e passare i dati
Web Template System
baasbox.com
Route::get('/', function () {
return view('welcome', ['name' => 'Samantha']);
});
<p>Hello {{ $name }}!</p>
Esempio di template a componenti con logica
Web Template System
baasbox.com
<html>
<head>
<title>
{{ $title ?? 'Todo Manager' }}
</title>
</head>
<body>
<h1>Todos</h1>
<hr/>
{{ $slot }}
</body>
</html>
Layout
<x-layout>
<x-slot name="title">
Custom Title
</x-slot>
@foreach ($tasks as $task)
{{ $task }}
@endforeach
</x-layout>
Content
Ecosistema
baasbox.com
Community
- utenti che utilizzano il framework
- parla la stessa "lingua" (stesse librerie)
- maggiore informazioni in rete
- maggiore supporto
- sviluppatori che possono collaborare sin
da subito nei progetti
- crea librerie che risolvono problemi ricorrenti
- quelli più influenti vengono inglobati nel
framework
Ecosistema
baasbox.com
Community
- utenti che utilizzano il framework
- parla la stessa "lingua" (stesse librerie)
- maggiore informazioni in rete
- maggiore supporto
- sviluppatori che possono collaborare sin
da subito nei progetti
- crea librerie che risolvono problemi ricorrenti
- quelli più influenti vengono inglobati nel
framework
È un indicatore del successo di un framework!
Grazie.
Potete trovarmi sui social @tsu84
oppure su Linkedin:
https://www.linkedin.com/in/tsuneokurihara

More Related Content

Similar to Accelera lo sviluppo con il web framework! Componenti a supporto dello sviluppatore

Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Railsjekil
 
SQLite in Xamarin.Forms
SQLite in Xamarin.FormsSQLite in Xamarin.Forms
SQLite in Xamarin.FormsGuido Magrin
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsKnowCamp
 
Creazione di un modulo per la gestione delle password
Creazione di un modulo per la gestione delle passwordCreazione di un modulo per la gestione delle password
Creazione di un modulo per la gestione delle passwordEugenio Minardi
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Fulvio Corno
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
Php mysql e cms
Php mysql e cmsPhp mysql e cms
Php mysql e cmsorestJump
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Luca Lusso
 
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019Matteo Enna
 
Drupal 7 : theming avanzato
Drupal 7 : theming avanzatoDrupal 7 : theming avanzato
Drupal 7 : theming avanzatoTwinbit
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkMassimo Schiro
 
Sviluppo web dall'antichità all'avanguardia e ritorno
Sviluppo web  dall'antichità all'avanguardia e ritornoSviluppo web  dall'antichità all'avanguardia e ritorno
Sviluppo web dall'antichità all'avanguardia e ritornolordarthas
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxGiovanni Cappellini
 
Programmazione web libera dai framework
Programmazione web libera dai frameworkProgrammazione web libera dai framework
Programmazione web libera dai frameworkFrancesca1980
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQueryXeDotNet
 

Similar to Accelera lo sviluppo con il web framework! Componenti a supporto dello sviluppatore (20)

Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
SQLite in Xamarin.Forms
SQLite in Xamarin.FormsSQLite in Xamarin.Forms
SQLite in Xamarin.Forms
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
Django
DjangoDjango
Django
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
Creazione di un modulo per la gestione delle password
Creazione di un modulo per la gestione delle passwordCreazione di un modulo per la gestione delle password
Creazione di un modulo per la gestione delle password
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Basi Di Dati 05
Basi Di Dati 05Basi Di Dati 05
Basi Di Dati 05
 
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
Php mysql e cms
Php mysql e cmsPhp mysql e cms
Php mysql e cms
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
 
Drupal 7 : theming avanzato
Drupal 7 : theming avanzatoDrupal 7 : theming avanzato
Drupal 7 : theming avanzato
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 Ok
 
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Sviluppo web dall'antichità all'avanguardia e ritorno
Sviluppo web  dall'antichità all'avanguardia e ritornoSviluppo web  dall'antichità all'avanguardia e ritorno
Sviluppo web dall'antichità all'avanguardia e ritorno
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Programmazione web libera dai framework
Programmazione web libera dai frameworkProgrammazione web libera dai framework
Programmazione web libera dai framework
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 

Accelera lo sviluppo con il web framework! Componenti a supporto dello sviluppatore

  • 1. Accelera lo sviluppo con il web framework! COMPONENTI A SUPPORTO DELLO SVILUPPATORE
  • 2. Tsuneo Kurihara Senior Lead Software Engineer baasbox.com Missione Studiare e realizzare soluzioni software che possano durare nel tempo Consiglio #1 Osserva, e cerca di capire cosa si può migliorare Consiglio #2 Prima di chiedere agli altri capisci se sei in grado di farlo tu Consiglio #3 Se sei in difficoltà chiedi aiuto agli altri
  • 3. Framework baasbox.com Definizione termine inglese che indica: - una struttura di supporto intorno alla quale può essere costruito qualcosa - un sistema di regole, idee e pratiche utilizzato per pianificare oppure decidere qualcosa
  • 4. Framework baasbox.com In informatica Un'architettura logica di supporto (spesso un'implementazione logica di un particolare design pattern) sulla quale un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore.
  • 5. Framework baasbox.com In informatica Un'architettura logica di supporto (spesso un'implementazione logica di un particolare design pattern) sulla quale un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore. Don't Repeat Yourself! (DRY)
  • 6. Caratteristiche Web Application baasbox.com - Routing - Web Services - Accesso al DB e ORM - Autenticazione e Autorizzazione - Web Template System - Cache - Mail - Queue - Task Scheduling - ...
  • 7. Caratteristiche Web Application baasbox.com - Routing - Web Services - Accesso al DB e ORM - Autenticazione e Autorizzazione - Web Template System - Cache - Mail - Queue - Task Scheduling - ... Microframework
  • 8. Framework baasbox.com - Routing - Web Services - Accesso al DB e ORM - Autenticazione e Autorizzazione - Web Template System - Cache - Mail - Queue - Task Scheduling - ...
  • 9. Routing Associare un path ad una funzione Web Services Dato una richiesta (input), restituire la risposta (output) Routing e Web Services baasbox.com $router->get('user/{id}', function ($id) { return 'User '.$id; }); $name = $request->input('name'); $request->has('name') $request->file('photo'); return response($content) ->header('Content-Type', $type); return response()->json([ 'name' => 'Abigail', 'state' =>'CA' ]);
  • 10. Middleware Intercetta le richieste ed applica delle logiche prima di elaborare le risposte Routing e Web Services baasbox.com public function handle($request, Closure $next) { if ($request->input('age') <= 200) { return redirect('home'); } return $next($request); }
  • 11. Query Builder - traduce il codice in query - aiuta a prevenire SQL Injection Accesso al DB e ORM baasbox.com $users = DB::table('users') ->where('votes', '=', 100) ->where('age', '>', 35) ->get();
  • 12. Query Builder - traduce il codice in query - aiuta a prevenire SQL Injection ORM (Object-Relational Mapping) - Componente che traduce i dati di un database in un modello logico in memoria Accesso al DB e ORM baasbox.com $users = DB::table('users') ->where('votes', '=', 100) ->where('age', '>', 35) ->get(); $flight = new Flight; $flight->name = $request->name; $flight->save();
  • 13. Query Builder - traduce il codice in query - aiuta a prevenire SQL Injection ORM (Object-Relational Mapping) - Componente che traduce i dati di un database in un modello logico in memoria - supporta costrutti logici come le relazioni Accesso al DB e ORM baasbox.com $users = DB::table('users') ->where('votes', '=', 100) ->where('age', '>', 35) ->get(); $flight = new Flight; $flight->name = $request->name; $flight->save(); public function phone() { return $this->hasOne(Phone::class); } $phone = User::find(1)->phone;
  • 14. Autenticazione - validazione delle credenziali e gestione di una sessione (o generazione di un token) - gestione del flusso di registrazione (anche con il supporto di un'interfaccia grafica) - libreria per l'accesso ai dati dell'utente Autorizzazione - restringere l'accesso alle risorse a determinati gruppi di utenti Autenticazione e Autorizzazione baasbox.com $user = Auth::user(); Route::get('/flights', function () { // Only admin users may access this route… })->middleware('auth:admin');
  • 15. Un sistema per renderizzare pagine web da template - sistema di template modulare e con logica - chiamate per caricare i template e passare i dati Web Template System baasbox.com Route::get('/', function () { return view('welcome', ['name' => 'Samantha']); }); <p>Hello {{ $name }}!</p>
  • 16. Esempio di template a componenti con logica Web Template System baasbox.com <html> <head> <title> {{ $title ?? 'Todo Manager' }} </title> </head> <body> <h1>Todos</h1> <hr/> {{ $slot }} </body> </html> Layout <x-layout> <x-slot name="title"> Custom Title </x-slot> @foreach ($tasks as $task) {{ $task }} @endforeach </x-layout> Content
  • 17. Ecosistema baasbox.com Community - utenti che utilizzano il framework - parla la stessa "lingua" (stesse librerie) - maggiore informazioni in rete - maggiore supporto - sviluppatori che possono collaborare sin da subito nei progetti - crea librerie che risolvono problemi ricorrenti - quelli più influenti vengono inglobati nel framework
  • 18. Ecosistema baasbox.com Community - utenti che utilizzano il framework - parla la stessa "lingua" (stesse librerie) - maggiore informazioni in rete - maggiore supporto - sviluppatori che possono collaborare sin da subito nei progetti - crea librerie che risolvono problemi ricorrenti - quelli più influenti vengono inglobati nel framework È un indicatore del successo di un framework!
  • 19. Grazie. Potete trovarmi sui social @tsu84 oppure su Linkedin: https://www.linkedin.com/in/tsuneokurihara