Il sistema di configuration management è una delle grandi novità di Drupal 8, gli use-cases di riferimento per l'utilizzo del sistema di configuration management in Drupal 8 sono differenti da quelli del sistema Drupal 7 + Features sia dal punto di vista di un site-builder che dal punto di vista dello sviluppo.
Il modulo Features in Drupal 8 ritornerà ad essere impiegato per il suo scopo originario.
Introduzione a Drupal e componenti del core - SIDCamp 2015Kelyon Srl
Vengono illustrate le parti principali del CMS Drupal con particolare attenzione alle componenti del core quali nodi, utenti, permessi, field, tassonomia. Viene mostrato anche l'approccio logico alla definizione delle strutture di dati in Drupal, al fine di fornire strumenti adeguati all'approccio alla costruzione di un sito in Drupal.
Importazione e sincronizzazione di contenuti con Feed Import - SIDCamp 2015Kelyon Srl
Passare da un'altra piattaforma a Drupal non è mai stato così semplice grazie alla potenza del modulo Feed Import.
Viene affrontato praticamente il problema della migrazione e della sincronizzazione di contenuti da una base dati mysql (o equivalente) a Drupal 7. Viene mostrato come configurare il modulo Feed Import, come scrivere una query per il recupero dei dati, l’associazione dei field di nodi Drupal ai campi del database remoto, il controllo, l’analisi e il filtraggio dei risultati.
Drupal 8 - dal download del core alla pubblicazione in produzionesparkfabrik
Inizializzare una nuova installazione Drupal è una procedura un po' più tricky rispetto al passato. Cos'è cambiato? Cos'è il Configuration Management e come dovremo scrivere le nostre Feature? Di cosa dobbiamo tenere conto nello scrivere i nostri moduli? Una volta risposto a queste domande c'è da portare tutto in stage e successivamente in produzione in maniera sicura ed indolore magari automatizzando il tutto, se possibile.
Youtube: https://www.youtube.com/watch?v=jh3CJ1ns0JQ
Il Query Processor è uno dei componenti più sofisticati di un RDBMS, quello di SQL Server non fa eccezione e sono state introdotte molte novità per risolvere le Query in modo più efficiente. In questa sessione affronteremo l'argomento ripercorrendo le varie funzionalità a partire dal nuovo modello del "Cardinality Estimator", introdotto nella versione 2014, per arrivare a tutto ciò che ricade sotto il nome di "Intelligent Query Processor" tra cui le funzionalità di "Adaptive Query Processing", introdotte nella versione 2017, e le novità introdotte nella versione 2019. Il tutto senza dimenticare le funzionalità per aiutare a gestire eventuali problematiche di regressione e coadiuvato da dimostrazioni pratiche.
Introduzione a Drupal e componenti del core - SIDCamp 2015Kelyon Srl
Vengono illustrate le parti principali del CMS Drupal con particolare attenzione alle componenti del core quali nodi, utenti, permessi, field, tassonomia. Viene mostrato anche l'approccio logico alla definizione delle strutture di dati in Drupal, al fine di fornire strumenti adeguati all'approccio alla costruzione di un sito in Drupal.
Importazione e sincronizzazione di contenuti con Feed Import - SIDCamp 2015Kelyon Srl
Passare da un'altra piattaforma a Drupal non è mai stato così semplice grazie alla potenza del modulo Feed Import.
Viene affrontato praticamente il problema della migrazione e della sincronizzazione di contenuti da una base dati mysql (o equivalente) a Drupal 7. Viene mostrato come configurare il modulo Feed Import, come scrivere una query per il recupero dei dati, l’associazione dei field di nodi Drupal ai campi del database remoto, il controllo, l’analisi e il filtraggio dei risultati.
Drupal 8 - dal download del core alla pubblicazione in produzionesparkfabrik
Inizializzare una nuova installazione Drupal è una procedura un po' più tricky rispetto al passato. Cos'è cambiato? Cos'è il Configuration Management e come dovremo scrivere le nostre Feature? Di cosa dobbiamo tenere conto nello scrivere i nostri moduli? Una volta risposto a queste domande c'è da portare tutto in stage e successivamente in produzione in maniera sicura ed indolore magari automatizzando il tutto, se possibile.
Youtube: https://www.youtube.com/watch?v=jh3CJ1ns0JQ
Il Query Processor è uno dei componenti più sofisticati di un RDBMS, quello di SQL Server non fa eccezione e sono state introdotte molte novità per risolvere le Query in modo più efficiente. In questa sessione affronteremo l'argomento ripercorrendo le varie funzionalità a partire dal nuovo modello del "Cardinality Estimator", introdotto nella versione 2014, per arrivare a tutto ciò che ricade sotto il nome di "Intelligent Query Processor" tra cui le funzionalità di "Adaptive Query Processing", introdotte nella versione 2017, e le novità introdotte nella versione 2019. Il tutto senza dimenticare le funzionalità per aiutare a gestire eventuali problematiche di regressione e coadiuvato da dimostrazioni pratiche.
Sempre più aziende guardano con interesse a registri distribuiti e tecnologie Blockchain per non dover dipendere da entità centralizzate di controllo e verifica. Tuttavia, il settore è ancora in continua evoluzione e l’adozione di questo tipo di approccio potrebbe essere eccessivo per molti sistemi che sono ancora per loro natura centralizzati, e la cui riscrittura risulterebbe in investimenti importanti. In questa sessione vedremo una tecnologia antimanomissione dei dati introdotta recentemente in Azure SQL Database.
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerAlessandro Alpi
SQL Server non è un mondo, è un universo ricco di funzionalità, architetture e tecnologie. Può spaventare e può essere difficile muoversi al suo interno con la necessaria fluidità. In questa sessione vedremo quali plugin e strumenti sono disponibili per velocizzare lo sviluppo su SQL Server, da Visual Studio Code a Management Studio, da SQL Operations Studio ai tool di RedGate. Migliorare gestione e scrittura di codice, con un occhio di riguardo alla condivisione e al team working, in un mondo in cui DevOps la fa da padrone.
Vengono presentate le funzionalità e le principali caratteristiche della soluzione di Business Intelligence basata su potente grafica interattiva, facilmente personalizzabile e fruibile anche su Mobile
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Speaker: Luca Lusso
Area: Development
Probabilmente Drupal8 sarà la versione più performante di Drupal mai realizzata (o almeno questo è l'obiettivo). In questo talk vedremo alcune delle tecniche che sono state messe in campo per raggiungere questo risultato e vedremo come sfruttarle dentro ad un modulo custom.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Sempre più aziende guardano con interesse a registri distribuiti e tecnologie Blockchain per non dover dipendere da entità centralizzate di controllo e verifica. Tuttavia, il settore è ancora in continua evoluzione e l’adozione di questo tipo di approccio potrebbe essere eccessivo per molti sistemi che sono ancora per loro natura centralizzati, e la cui riscrittura risulterebbe in investimenti importanti. In questa sessione vedremo una tecnologia antimanomissione dei dati introdotta recentemente in Azure SQL Database.
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerAlessandro Alpi
SQL Server non è un mondo, è un universo ricco di funzionalità, architetture e tecnologie. Può spaventare e può essere difficile muoversi al suo interno con la necessaria fluidità. In questa sessione vedremo quali plugin e strumenti sono disponibili per velocizzare lo sviluppo su SQL Server, da Visual Studio Code a Management Studio, da SQL Operations Studio ai tool di RedGate. Migliorare gestione e scrittura di codice, con un occhio di riguardo alla condivisione e al team working, in un mondo in cui DevOps la fa da padrone.
Vengono presentate le funzionalità e le principali caratteristiche della soluzione di Business Intelligence basata su potente grafica interattiva, facilmente personalizzabile e fruibile anche su Mobile
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Speaker: Luca Lusso
Area: Development
Probabilmente Drupal8 sarà la versione più performante di Drupal mai realizzata (o almeno questo è l'obiettivo). In questo talk vedremo alcune delle tecniche che sono state messe in campo per raggiungere questo risultato e vedremo come sfruttarle dentro ad un modulo custom.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
Wi-Cobol, il modulo realizzato da Sior e distribuito da VGSoft che utilizza un precompilatore in grado di inserire in modo automatico nei sorgenti Cobol, le istruzioni e le routines necessarie per potersi interfacciare con la suite Webgate400.
2. Managing Configuration in Drupal 8
Drupal 8 dispone di un sistema totalmente nuovo
per memorizzare la configurazione in maniera
uniforme e affidabile.
Tutta la configurazione di Drupal 8 , dai moduli
abilitati ai fields sono memorizzati utilizzando
questo sistema.
Questa funzionalità rimpiazza la necessità del
modulo contrib Features che in Drupal 8 ritornerà
al suo scopo originario.
2
3. Code-Driven Configuration in Drupal
• In Drupal la configurazione e i contenuti sono sempre stati memorizzati
nello stesso database, ogni volta che si effettuava una modifica
dall’interfaccia di amministrazione la modifica non veniva tracciata.
• Drupal 6 : Prima Versione di Features con la possibilità di esportare la
configurazione in codice PHP.
• Drupal 7 : Il supporto a Features è maturo, ma non tutti i componenti
sono esportabili, inoltre deve utilizzare moduli di terze parti per coprire i
diversi use-cases.
• Drupal 8 : Il core è stato progettato per gestire la configurazione in
maniera“Code-Driven”. Configurazione e contenuti vengono gestiti in
maniera separata, la configurazione è gestita tramite un sistema text-
based.
21/06/20153
4. Approccio Drupal 6-7 (core)
• Default in Drupal 6 e Drupal 7 (core) – Database Driven
• Approccio standard, al click Drupal salva la
configurazione nel database e dimentica.
• Svantaggi : configurazioni e contenuti vengono
mischiati.
• Svantaggi : Per effettuare il deployment in un ambiente
di produzione è necessario eseguire step-by-step tutte
le configurazioni.
• Svantaggi : I cambiamenti alle configurazioni non
vengono tracciati.
21/06/20154
5. Approccio Drupal 7 + Features
• Per consentire l’export delle funzionalità è necessario
renderle “esportabili”.
• La problematica situazione degli “Overridden”.
• Non tutto è esportabile tramite features.
• Per esportare la configurazione con Features è
necessario inserire gli elementi in una “lista” e non si ha
mai il controllo completo dell’ambiente.
• Features è perfetto per il packaging delle funzionalità
ma non per l’esportazione delle funzionalità, non è
possibile esportare delle configurazioni senza prima
effettuarne il packaging.
21/06/20155
6. Qual è il problema da risolvere? (1/2)
21/06/20156
7. Qual è il problema da risolvere? (2/2)
21/06/20157
8. La soluzione implementata in Drupal 8
• La configurazione è gestita tramite un sistema “text-driven”
• Tutti i files di configurazione rispettano le specifiche YAML
(Yet Another Markup Language)
• Le configurazioni “active” e “staging” sono separate.
• La configurazione “Active” viene memorizzata nel database
(configurazione di default).
• è possibile cambiare i settaggi dei configuration repositories
“Active” e “Staging” nel settings.php
21/06/20158
9. Formato dei files di configurazione
YAML
• Dichiarativo
• Parsato
• Si trova in cartelle specifiche
chiamate “config”
• è trattato in maniera
differente.
21/06/20159
PHP
• Imperativo
• Interpretato
• Può trovarsi nella stessa
cartella del modulo
• è trattato a tutti gli effetti
come un modulo
10. Anatomia di un Drupal 8 configuration
file (1/2)
• Dal modulo system del core di Drupal 8
filename : system.site.yml
21/06/201510
12. Configuration API
@see DrupalCoreConfigConfig
MAIN ENTRY POINT : Drupal::config()
DrupalCoreConfigConfigFactory (SET/SAVE)
DrupalCoreConfigImmutableConfig (GET)
DrupalCoreFormConfigFormBaseTrait (fornisce ai
form una modalità di accesso alla configurazione
DrupalCoreFormConfigFormBase)
21/06/201512
20. Salvataggio della configurazione
21/06/201520
Istanzia un config object per ogni configuration object name (‘system.site’) che riceve.
Drupal::configFactory()->getEditable('system.site')
->set('name', "SIDCAMP AND PIZZA")
->save();
----------------------------------------------------------------------------------------------------------------------
uuid: 'd54e0656-a8af-4181-b116-22a304ff3caa’
name: 'SIDCAMP AND PIZZA'
mail: 'raffaele.chiocca@kelyon.it’
slogan: ‘sidcamp’
page:
403 : ’access-denied'
404 : ’not-found'
front : node
21. Drupal 8 State API
La variabile ha senso solo per l’ambiente attuale ?
Esempi :
L’ultima volta in cui sono stati controllati gli aggiornamenti di Drupal
$last_cron_run
In questo caso va utilizzata la State API di Drupal 8.
L’entry point a questa API è Drupal::state() e restituisce un oggetto di tipo
DrupalCoreStateStateInterface
Esecuzione del cron di Drupal:
$last_cron_run = Drupal::state()->get(‘system.cron_last’);
Drupal::state()->set(‘system.cron_last’, REQUEST_TIME);
21/06/201521
27. Override di una configurazione
21/06/201527
• system.maintenance.yml
Sovrascrivere globalmente il messaggio mostrato in
modalità di manutenzione.
---------------------------------------------------------------------
Global $conf ;
$conf[‘system.maintenance’][‘message’] = ‘Sorry,
SIDCAMP is down now’;
28. Evitare i config overrides
21/06/201528
system.maintenance.yml
Ottenere il messaggio di manutenzione “originale” prima del nostro override.
-----------------------------------------------------------------------------
OTTIENI IL MESSAGGIO CON GLI OVERRIDES -> (‘SIDCAMP IS DOWN NOW’)
$maintenance_message = Drupal::config('system.maintenance')->get(’message');
OTTIENI IL MESSAGGIO SENZA GLI OVERRIDES -> (‘@site is currently under maintenance….)
$maintenance_message_editable = Drupal::configFactory()-
>getEditable('system.maintenance')->get('message');
29. Effettuare overrides da un modulo
custom (1/2)
21/06/201529
services:
config_example.overrider:
class: Drupalconfig_exampleConfigExampleOverrides
tags:
- {name: config.factory.override, priority: 5}
@see
Un esempio rilevante da vedere in questo caso è la seguente interfaccia
interface LanguageConfigFactoryOverrideInterface
(modulo language del core di drupal)
config_example.service.yml
30. 21/06/201530
ConfigExampleOverrides.php
/**
* @file
* Contains Drupalconfig_exampleConfigExampleOverrides.
*/
namespace Drupalconfig_example;
use DrupalCoreConfigConfigFactoryOverrideInterface;
/**
* Example configuration override.
*/
class ConfigModuleOverrides implements ConfigFactoryOverrideInterface {
public function loadOverrides($names) {
$overrides = array();
if (in_array('system.site', $names)) {
$overrides['system.site'] = ['name' => ’SIDCAMP overriden site name!'];
}
return $overrides;
}
}
Effettuare overrides da un modulo
custom (2/2)
Editor's Notes
Storia di features
Drupal inizialmente aveva gli YAML, poi per questioni di performance…..