Come sfruttare tutte le potenzialità di Symfony in Drupal 8

COME SFRUTTARE TUTTE LE POTENZIALITÀ
DI SYMFONY IN DRUPAL 8
LUCA LUSSO
• @lussoluca
• www.linkedin.com/in/lussoluca
• drupal.org/user/138068
• llusso@wellnet.it
Senior Web Developer @Wellnet
#DrupalDaysIT
BENVENUTI
Sviluppatori Drupal7 ?
Sviluppatori Symfony ?
Sviluppatori Drupal8 ?
#DrupalDaysIT
NUOVE API IN DRUPAL8
• Routing
• Configuration management
• Entity
• Plugin
• Views
• Migrate
• Typed Data
• Validation
• …
#DrupalDaysIT
COMPONENTI DI SYMFONY IN DRUPAL8
• Classloader
• Dependency injection
• Event dispatcher
• Http foundation
• Http kernel
• Routing
• Serializer
• Validator
• Yaml
• Twig
#DrupalDaysIT
MODULI CUSTOM
In un modulo custom posso usare:
le nuove API di Drupal8
+
tutte le API messe a disposizione dai
componenti di Symfony
+
#DrupalDaysIT
TALK
In questo talk vedremo un sacco di codice, non
preoccupatevi…
…però partiamo da un caso reale, giusto per non
parlare a vuoto :-)
+
#DrupalDaysIT
PROBLEMA
Identificare il motivo per cui una data pagina è lenta
#DrupalDaysIT
DRUPAL DEVEL
Il modulo Devel ha un logger per query, time e memoria
#DrupalDaysIT
SYMFONY PROFILER
#DrupalDaysIT
SYMFONY PROFILER
E’ presente solo nella Standard Edition di Symfony.
Quindi nel core di Drupal8 non ci sarà…
#DrupalDaysIT
SYMFONY PROFILER
Per poter misurare tutti questi valori il profiler di Symfony è
molto integrato dentro il framework e usa API e concetti
piuttosto specifici
Posso fare una cosa simile per Drupal?
#DrupalDaysIT
WEBPROFILER
Modulo Webprofiler
drupal.org/project/webprofiler
#DrupalDaysIT
WEBPROFILER
Profiler di Symfony per Drupal8!
#DrupalDaysIT
WEBPROFILER
#DrupalDaysIT
WEBPROFILER
#DrupalDaysIT
ATTENZIONE 1
Drupal8 è ancora in versione alpha, gli esempi seguenti
potrebbero non funzionare più!
#DrupalDaysIT
ATTENZIONE 2
Esistono due versioni del modulo webprofiler
!
• 8.x-1.x-alpha11 -> compatibile con la alpha11 del core
• 8.x-dev -> compatibile con l’HEAD corrente del core
#DrupalDaysIT
ESEMPIO
Vedremo come sfruttare questi concetti Symfony in
un modulo Drupal:
!
• Service provider
• Compiler
• Event listener
• Profiler
#DrupalDaysIT
SERVICE PROVIDER
• Symfony utilizza un’architettura a servizi
• I servizi dovrebbero contenere la business logic dell’applicazione,
non i controller!
• Tutti i servizi del core sono definiti nel file core/core.services.yml
• I moduli possono aggiungere nuovi servizi e modificare quelli esistenti
#DrupalDaysIT
SERVIZI DEL CORE
• current_user
• string_translation
• database
• settings
• state
• config.factory
• cache_factory
• form_builder
• http_client
• ~ altri 200 (^(s){2}([a-z_.]*):$ su core.services.yml)
#DrupalDaysIT
SERVIZI
• Implementano una certa funzionalità
• Aumentano la possibilità di riuso del codice
• Rendono un applicazione più testabile
• Possono essere facilmente sostituti
• Vengono caricati solo se servono per gestire una data richiesta
#DrupalDaysIT
SERVIZI
Sono gestiti da un ServiceContainer che in
automatico soddisfa le eventuali dipendenze
attraverso un meccanismo chiamato Dependency
Injection, ossia non è il servizio che carica le proprie
dipendenze da altri servizi ma è il Container che
istanzia le classi necessarie all’atto della creazione
del servizio stesso.
#DrupalDaysIT
SERVIZI
Servizio B (es. Database)
Servizio A (es. Mailer)
Servizio C che dipende da A e B (es. Newsletter)
Se chiedo al Container un’istanza del servizio C,
prima verranno create le istanze dei servizi A e B. Il
container userà poi queste istanze (tipicamente)
come parametri del costruttore di C all’atto della sua
creazione.
#DrupalDaysIT
SERVICE PROVIDER
• Durante il bootstrap Drupal cerca una classe chiamata
nomemoduloServiceProvider e un file nomemodulo.services.yml
all’interno di ciascun modulo attivo
• Il file .yml permette di aggiungere nuovi servizi
• La classe permette di modificare i servizi esistenti o di
aggiungerne di nuovi
• Alla fine del processo di scoperta e modifica dei servizi il
ServiceContainer viene scritto su un file (tipicamente) in sites/
default/files/php (verrà eliminato solo da uno svuotamento
eventuale della cache)
#DrupalDaysIT
WEBPROFILERSERVICEPROVIDER.PHP
#DrupalDaysIT
WEBPROFILER.SERVICES.YML
#DrupalDaysIT
ESEMPIO
• Service provider
• Compiler
• Event listener
• Profiler
#DrupalDaysIT
COMPILER
• Dopo aver aggiunto o alterato i servizi il ServiceContainer viene
“compilato” per ottimizzarlo e per aggiungere ulteriori funzionalità
(parametri e tag)
• Il ServiceContainer passa attraverso una sequenza ordinata di
passi di compilazione. Molti di questi passi sono definiti da
Symfony stesso, alcuni sono nel core di Drupal, i moduli possono
definirne ulteriori
• I passi di compilazione servono per gestire i riferimenti circolari,
rimuovere servizi inutilizzati, trovare servizi con specifici tag, …
#DrupalDaysIT
COMPILER
#DrupalDaysIT
COMPILER PASS
Un passo di compilazione potrebbe ad esempio
cercare tutti i servizi che hanno un certo tag:
ContainerBuilder::findTaggedServiceIds()
#DrupalDaysIT
COMPILER PASS
#DrupalDaysIT
COMPILER PASS
Oppure modificare un servizio esistente, ad
esempio cambiando una delle dipendenze.
Possiamo addirittura modificare completamente
l’implementazione di un servizio (l’importante è che il
nuovo servizio rispetti la stessa interfaccia di quello
sostituito) -> servizi mock per il testing
#DrupalDaysIT
COMPILER PASS
Cambio una dipendenza
Sostituisco un servizio con un altro
#DrupalDaysIT
ESEMPIO
• Service provider
• Compiler
• Event listener
• Profiler
#DrupalDaysIT
EVENT LISTENER
Il componente EventDispatcher di Symfony permette di
definire, sollevare e registrarsi ad eventi:
EventDispatcher::dispatch($eventName, Event $e = null)
EventSubscriberInterface::getSubscribedEvents()
#DrupalDaysIT
EVENT LISTENER
Definisco un servizio all’interno di
nomemodulo.services.yml e gli aggiungo il tag
“event_subscriber”. La classe relativa deve
implementare l’interfaccia EventSubscriberInterface
e definire il metodo getSubscribedEvents(); in
questo metodo registro i listener agli eventi che mi
interessano. Uno dei passi di compilazione si
occuperà di trovare il mio servizio e di registrarlo
all’interno del gestore degli eventi. Se qualcuno
solleva uno degli eventi a cui mi sono registrato
vengo notificato.
#DrupalDaysIT
EVENT LISTENER
#DrupalDaysIT
EVENT LISTENER
#DrupalDaysIT
EVENT LISTENER
• Posso definire i miei eventi e sollevarli in punti precisi
dell’esecuzione di un mio codice
• Sostanzialmente gli eventi potrebbero sostituire il meccanismo
degli hook di Drupal e in effetti posso già usarli all’interno di
moduli custom (probabilmente gli hook spariranno del tutto in
Drupal9, sostituiti dagli eventi)
#DrupalDaysIT
ESEMPIO
• Service provider
• Compiler
• Event listener
• Profiler
#DrupalDaysIT
PROFILER
• Il componente Http kernel contiene un tool per il profiling delle
richieste
• In Symfony Standard Edition il Profiler è definito nel
WebProfilerBundle e usato dal FrameworkBundle (i bundle
sono i moduli di Symfony)
• Usa diversi DataCollectors per memorizzare informazioni su una
specifica richiesta (tempo di esecuzione, memoria, routing, query
al database, …)
• Nell’implementazione di Symfony salva i profili sul filesystem,
usando un token come nome del file
#DrupalDaysIT
PROFILER
L’infrastruttura per la generazione e il salvataggio dei
profili è già tutta nel core di Drupal8, mancherebbero
i pezzi aggiunti dal FrameworkBundle e dal
WebprofilerBundler, però le funzionalità che questi
due bundle usano sono già anch’esse nel core di
Drupal8 (eventi, servizi, tag, …)
#DrupalDaysIT
PROFILER
Ogni singolo collettore di dati è registrato come
servizio e marcato con il tag “data_collector”. La
classe relativa deve estendere la classe
DataCollector e implementare il metodo collect()
#DrupalDaysIT
PROFILER
#DrupalDaysIT
ESEMPIO
• Service provider
• Compiler
• Event listener
• Profiler
#DrupalDaysIT
TOOLS
• PHP 5.4
• GIT
• Drush 7
• PhpStorm EAP (ha il supporto per Drupal8!)
#DrupalDaysIT
APPROFONDIMENTI
La versione 8.x del modulo examples (drupal.org/
project/examples) conterrà a breve molti esempi a
riguardo di questi concetti, potete scaricarne una
preview da qua:
github.com/lussoluca/examples
#DrupalDaysIT
RISORSE
• drupal.org/node/2116747
• drupal.org/node/2133171
• symfony.com/doc/current/components/dependency_injection/index.html
• symfony.com/doc/current/components/event_dispatcher/index.html
• symfony.com/doc/current/cookbook/profiler/index.html
#DrupalDaysIT
CONCLUSIONI
• Drupal8 mette a disposizione innumerevoli nuove API, ma i
componenti di Symfony inclusi nel core ne aggiungono a loro volta
molte altre!
• Molte delle API di Symfony sono esposte da Drupal8 in modo che
i moduli contrib e custom ne possano beneficiare
• I nostri moduli custom possono sfruttare tutte queste potenzialità
per integrarsi sempre di più all’interno del framework
#DrupalDaysIT
CONCLUSIONI
Se vogliamo arrivare pronti all’uscita di Drupal8
potremmo già iniziare a ragionare a “servizi” nei
nostri moduli custom per Drupal7, quello che ci serve
sono un classloader in grado di capire i namespace
di PHP 5.3 e il PSR-0/4 (quello standard di Drupal7
non lo è) e un implementazione di ServiceContainer:
!
• drupal.org/project/xautoload -> PSR-0, PSR-4
• drupal.org/project/pimple_container
Se progettiamo così la business logic della nostra
applicazione, la migrazione di un modulo per
Drupal7 a Drupal8 potrebbe essere meno faticosa
#DrupalDaysIT
Vuoi contribuire a webprofiler? Contattaci!
Abbiamo bisogno di codice, grafica, documentazione, idee
drupal.org/project/webprofiler
#DrupalDaysIT
DOMANDE?
#DrupalDaysIT
GRAZIE ;-)
#DrupalDaysIT
TITOLO DIAPOSITIVA
Corpo della diapositiva
SPONSOR
MEDIA PARTNER
1 de 56

Recomendados

Zend Framework Workshop Parte2 por
Zend Framework Workshop Parte2Zend Framework Workshop Parte2
Zend Framework Workshop Parte2massimiliano.wosz
426 vistas12 diapositivas
Introduzione ad angular 7/8 por
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
2K vistas63 diapositivas
Alla scoperta di Zend Framework 1.8 por
Alla scoperta di Zend Framework 1.8Alla scoperta di Zend Framework 1.8
Alla scoperta di Zend Framework 1.8massimiliano.wosz
635 vistas36 diapositivas
jQuery - 1 | WebMaster & WebDesigner por
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
530 vistas31 diapositivas
Introduzione a Sass e Less (ITA) por
Introduzione a Sass e Less (ITA)Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Valerio Radice
903 vistas36 diapositivas
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod... por
Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod...Vincenzo Di Biaggio
128 vistas53 diapositivas

Más contenido relacionado

La actualidad más candente

Portlet JSR168/286 por
Portlet JSR168/286Portlet JSR168/286
Portlet JSR168/286Alessio Dimauro
516 vistas54 diapositivas
Lezione 10: Web Service in Java (2) por
Lezione 10: Web Service in Java (2)Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Andrea Della Corte
1.6K vistas28 diapositivas
Come portare il profiler di symfony2 in drupal8 por
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Luca Lusso
1K vistas41 diapositivas
Ddive Xpage852 por
Ddive Xpage852Ddive Xpage852
Ddive Xpage852Dominopoint - Italian Lotus User Group
493 vistas73 diapositivas
Lezione 6: Remote Method Invocation por
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationAndrea Della Corte
805 vistas31 diapositivas
Corso angular js componenti por
Corso angular js componentiCorso angular js componenti
Corso angular js componentiBeniamino Ferrari
127 vistas39 diapositivas

Similar a Come sfruttare tutte le potenzialità di Symfony in Drupal 8

#dd12 Applicazioni a tre voci (Android e Domino) por
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)Dominopoint - Italian Lotus User Group
528 vistas26 diapositivas
Simple Cloud API: accesso semplificato al cloud computing por
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computingFrancesca1980
656 vistas30 diapositivas
Azure dayroma java, il lato oscuro del cloud por
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
44 vistas39 diapositivas
Slide typescript - xe dotnet - Codemotion Rome 2015 por
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
666 vistas20 diapositivas
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO por
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANODrupalDay
586 vistas29 diapositivas
Smau milano 2012 massimiliano del cero por
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau
998 vistas29 diapositivas

Similar a Come sfruttare tutte le potenzialità di Symfony in Drupal 8(20)

Simple Cloud API: accesso semplificato al cloud computing por Francesca1980
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computing
Francesca1980656 vistas
Azure dayroma java, il lato oscuro del cloud por Riccardo Zamana
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
Riccardo Zamana44 vistas
Slide typescript - xe dotnet - Codemotion Rome 2015 por Codemotion
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion666 vistas
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO por DrupalDay
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
DrupalDay586 vistas
Smau milano 2012 massimiliano del cero por Smau
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
Smau998 vistas
Applicazioni Serverless con AWS por sparkfabrik
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
sparkfabrik136 vistas
Liferay: Esporre Web Services Custom por Antonio Musarra
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
Antonio Musarra2.9K vistas
DbUp - A real case of database migration por Andrea Cirioni
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
Andrea Cirioni292 vistas
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL por Par-Tec S.p.A.
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
Par-Tec S.p.A.120 vistas
DotNetToscana - Sessione TypeScript por Sinergia Totale
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale638 vistas
Slide typescript - net campus por DotNetCampus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus243 vistas
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD por DotNetCampus
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
DotNetCampus511 vistas
Design Patterns - enterprise patterns (part I) por Fabio Armani
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
Fabio Armani3.2K vistas
Sviluppo di servizi REST per Android - Luca Masini por Whymca
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
Whymca877 vistas
SVILUPPO DI SERVIZI REST PER ANDROID por Luca Masini
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
Luca Masini1.6K vistas
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf por Francesco Liuzzi
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
Francesco Liuzzi76 vistas

Más de Eugenio Minardi

Delphi and ExtJS (26 ottobre 2017) por
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Eugenio Minardi
933 vistas23 diapositivas
ExtJS: La piattaforma vincente (tools) por
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)Eugenio Minardi
262 vistas13 diapositivas
ExtJS: La piattaforma vincente (multiple screens) por
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)Eugenio Minardi
97 vistas13 diapositivas
ExtJS: La piattaforma vincente (rich UI) por
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)Eugenio Minardi
91 vistas8 diapositivas
ExtJS: La piattaforma vincente (class system) por
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)Eugenio Minardi
81 vistas9 diapositivas
ExtJS: La piattaforma vincente por
ExtJS: La piattaforma vincenteExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteEugenio Minardi
104 vistas12 diapositivas

Más de Eugenio Minardi(20)

Delphi and ExtJS (26 ottobre 2017) por Eugenio Minardi
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)
Eugenio Minardi933 vistas
ExtJS: La piattaforma vincente (tools) por Eugenio Minardi
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)
Eugenio Minardi262 vistas
ExtJS: La piattaforma vincente (multiple screens) por Eugenio Minardi
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)
Eugenio Minardi97 vistas
ExtJS: La piattaforma vincente (rich UI) por Eugenio Minardi
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)
Eugenio Minardi91 vistas
ExtJS: La piattaforma vincente (class system) por Eugenio Minardi
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)
Eugenio Minardi81 vistas
Distributed Team Management: 
Pitfall, Challenges and Advantages por Eugenio Minardi
Distributed Team Management: 
Pitfall, Challenges and AdvantagesDistributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and Advantages
Eugenio Minardi327 vistas
A Practical Introduction to Symfony (European Drupal Days 2015) por Eugenio Minardi
A Practical Introduction to Symfony (European Drupal Days 2015)A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)
Eugenio Minardi938 vistas
UN World Food Programme Standards & Best Practises (European Drupal Days 2015) por Eugenio Minardi
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
Eugenio Minardi1.2K vistas
Drupal theming - a practical approach (European Drupal Days 2015) por Eugenio Minardi
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
Eugenio Minardi605 vistas
Optimizing MariaDB for Web Applications (European Drupal Days 2015) por Eugenio Minardi
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Eugenio Minardi887 vistas
PhpStorm for Drupal Development (European Drupal Days 2015) por Eugenio Minardi
PhpStorm for Drupal Development (European Drupal Days 2015)PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)
Eugenio Minardi539 vistas
Drupal Continuous Integration (European Drupal Days 2015) por Eugenio Minardi
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
Eugenio Minardi1.5K vistas
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015) por Eugenio Minardi
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Eugenio Minardi569 vistas
The multilingual Drupal 8 experience (European Drupal Days 2015) por Eugenio Minardi
The multilingual Drupal 8 experience (European Drupal Days 2015)The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)
Eugenio Minardi447 vistas
Another Copernican Revolution: maintenance first, projects second (European D... por Eugenio Minardi
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...
Eugenio Minardi409 vistas
Drupal Security: How to survive Drupalgeddon and prepare for future (European... por Eugenio Minardi
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Eugenio Minardi402 vistas
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr... por Eugenio Minardi
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
Eugenio Minardi402 vistas
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015) por Eugenio Minardi
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Eugenio Minardi473 vistas
Secure Drupal, from start to finish (European Drupal Days 2015) por Eugenio Minardi
Secure Drupal, from start to finish (European Drupal Days 2015)Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)
Eugenio Minardi573 vistas

Come sfruttare tutte le potenzialità di Symfony in Drupal 8