Uccio.org
Composer e Drupal
Con l'avvento di Drupal 8 composer è diventato di fatto uno strumento essenziale nella vita di tutti i giorni, riassumiamo i fondamenti:
1) Composer installa Drupal 9:
composer create-project drupal/recommended-project drupalNove
2) Composer installa il modulo/tema x.y.z:
composer require drupal/bootstrap
3) Composer dimmi i pacchetti di Drupal da aggiornare:
composer outdated "drupal/*"
4) Composer aggiorna il pacchetto X
composer update drupal/token --with-dependencies
il comando puo essere "provato" aggiungento un --dry-run per vedere cosa capita senza distruggere tutto.
5) Composer dammi delle info sulle versioni del modulo/pacchetto x.y.x
composer info drupal/booktree -a
6) Composer Aggiorna Drupal Core!
composer update drupal/core-* -w (Se usate le versioni consigliare tramite core<span class="token operator">-span>recommended
composer update drupal/core -w (Se non avete usato il metapacchetto raccomandato....)
7) Composer aggiorna tutti i moduli di drupal
composer update drupal/*
Tags Drupal
How-To Solr Core per Drupal
Il seguente HowTo parte dalla precedente guida How-To installare Solr su Ubuntu 14.04 e quindi daremo per scontato che l'installazione di Solr sia avvenuta con successo.
Per utilizzare Solr con Drupal 7 è necessario configurare un core affinchè la configurazione dell'indice sia compatibile con i dati forniti da drupal.
Per creare un core per il nostro Drupal possiamo clonare il template base dell'esempio precedente e quindi fare così:
Ora che abbiamo un indice per Drupal non ci resta che configurarlo per le esigenze specifiche di Drupal.
cd /tmp wget <a href="http://ftp.drupal.org/files/projects/apachesolr-7.x-1.6.tar.gz tar">http://ftp.drupal.org/files/projects/apachesolr-7.x-1.6.tar.gz tara> -xvf apachesolr-7.x-1.6.tar.gz cp apachesolr/solr-conf/solr-4.x/*.* /opt/solr/solr/template_D7/conf/ -R cd /opt/solr/solr/template_D7/conf/ wget https://drupal.org/files/search_api_4.5.patch patch solrconfig.xml < search_api_4.5.patch chown solr:solr template_D7/ -R /etc/init.d/jetty stopIl file di configurazione fornito con il modulo per Drupal apachesolr-7.x-1.6 ha un problema con Solr dalla 4.5 e pertanto necessita dell'applicazione di una piccola patch.
Ora che abbiamo un indice non ci resta che usarlo a nostro piacimento inserendo lo stesso nome del "core" nella GUI di Solr ed il gioco è fatto!.
How-To Solr Core per Drupal
Il seguente HowTo parte dalla precedente guida How-To installare Solr su Ubuntu 14.04 e quindi daremo per scontato che l'installazione di Solr sia avvenuta con successo.
Per utilizzare Solr con Drupal 7 è necessario configurare un core affinchè la configurazione dell'indice sia compatibile con i dati forniti da drupal.
Per creare un core per il nostro Drupal possiamo clonare il template base dell'esempio precedente e quindi fare così:
- /etc/init.d/jetty stop
- cd /opt/solr/solr
- cp -R template_base/ template_D7
- echo "name=template_D7" > template_D7/core.properties
- chown solr:solr template_D7/ -R
Ora che abbiamo un indice per Drupal non ci resta che configurarlo per le esigenze specifiche di Drupal.
- cd /tmp
- wget http://ftp.drupal.org/files/projects/apachesolr-7.x-1.6.tar.gz
- tar -xvf apachesolr-7.x-1.6.tar.gz
- cp apachesolr/solr-conf/solr-4.x/*.* /opt/solr/solr/template_D7/conf/ -R
- cd /opt/solr/solr/template_D7/conf/
- wget https://drupal.org/files/search_api_4.5.patch
- patch solrconfig.xml < search_api_4.5.patch
- chown solr:solr template_D7/ -R
- /etc/init.d/jetty stop
Il file di configurazione fornito con il modulo per Drupal apachesolr-7.x-1.6 ha un problema con Solr dalla 4.5 e pertanto necessita dell'applicazione di una piccola patch.
Ora che abbiamo un indice non ci resta che usarlo a nostro piacimento inserendo lo stesso nome del "core" nella GUI di Solr ed il gioco è fatto!.
How-To Solr Core per Drupal
Il seguente HowTo parte dalla precedente guida How-To installare Solr su Ubuntu 14.04 e quindi daremo per scontato che l'installazione di Solr sia avvenuta con successo.
Per utilizzare Solr con Drupal 7 è necessario configurare un core affinchè la configurazione dell'indice sia compatibile con i dati forniti da drupal.
Per creare un core per il nostro Drupal possiamo clonare il template base dell'esempio precedente e quindi fare così:
etc/init.d/jetty stop
Drupal Services 3 - XML-RPC Session Autentication con Zend Framework
Questo piccolo esempio cerca di riassumere cosa deve fare un client XML-RPC per sfruttare le risorse esposte da un server XML-RPC creato con Services 3.x .
Il server in questione richiede l'autenticazione della sessione come metodo di accesso, pertanto il client dovrà effettuare un login con un utente di Drupal e poi sfruttare la sessione autenticata per utilizzare le risorse.
Il client per semplicità è stato creato utilizzando Zend Framework.
Drupal Services 3 - XML-RPC Session Autentication con Zend Framework
Questo piccolo esempio cerca di riassumere cosa deve fare un client XML-RPC per sfruttare le risorse esposte da un server XML-RPC creato con Services 3.x .
Il server in questione richiede l'autenticazione della sessione come metodo di accesso, pertanto il client dovrà effettuare un login con un utente di Drupal e poi sfruttare la sessione autenticata per utilizzare le risorse.
Il client per semplicità è stato creato utilizzando Zend Framework.
- /*
- * This example is based on the XML-RPC client library
- * included in the Zend Framework
- */
- require_once 'Zend/XmlRpc/Client.php';
- require_once('Zend/Http/Client.php');
- header('Content-type: text/plain');
- //Setup
- $username = 'user';
- $password = 'password';
- $url = 'http://127.0.0.1/endpointxmlrpc';
- //Create client
- $client = new Zend_XmlRpc_Client($url);
- $http_client = new Zend_Http_Client();
- $http_client->setCookieJar();
- $client->setHttpClient($http_client);
- //Start execution
- echo "Server: $url\n";
- // Get Anonymous Session
- echo "Connect: ";
- try {
- $result = $client->call('system.connect');
- echo "OK\n";
- }
- catch (Exception $e) {
- var_dump($e);
- }
- // Do Login to create an authenticate sessionid
- echo "Login: ";
- try {
- $result = $client->call('user.login',array($username, $password));
- echo "OK\n";
- echo "User Details:\n---------\n";
- var_dump($result);
- echo "\n---------\n";
- }
- catch (Exception $e) {
- var_dump($e);
- }
- //Logout
- echo "Logout: ";
- try {
- $result = $client->call('user.logout');
- echo "OK\n";
- }
- catch (Exception $e) {
- var_dump($e);
- }
- echo 'End';
Drupal Services 3 - XML-RPC Session Autentication con Zend Framework
Questo piccolo esempio cerca di riassumere cosa deve fare un client XML-RPC per sfruttare le risorse esposte da un server XML-RPC creato con Services 3.x .
Il server in questione richiede l'autenticazione della sessione come metodo di accesso, pertanto il client dovrà effettuare un login con un utente di Drupal e poi sfruttare la sessione autenticata per utilizzare le risorse.
Il client per semplicità è stato creato utilizzando Zend Framework.
Upload progress
La libreria UploadProgress è una simpatica libreria che consente all'utente finale di poter visualizzare lo stato di caricamento (upload) di file verso il server.
La libreria è consiglaita per i server che ospitano installazioni di drupal (ma non solo) e di fatto il nostro CMS preferito ci ricorda di intallarla.
Per installarla ci sono 2 strade alternavive che come sempre sono da pacchetti (non è un vero pacchetto) e da sorgenti
Metodo A Consigliato (PECL)
apt-get install make
apt-get install php5-dev
apt-get install php-pear
pecl install uploadprogress
echo extension=uploadprogress.so > /etc/php5/conf.d/uploadprogress.ini
/etc/init.d/apache2 restart
wget "http://pecl.php.net/get/uploadprogress"
tar xf uploadprogress
cd uploadprogress-1.0.X.X/
phpize
./configure
make install
echo extension=uploadprogress.so > /etc/php5/conf.d/uploadprogress.ini
/etc/init.d/apache2 restart
Upload progress
La libreria UploadProgress è una simpatica libreria che consente all'utente finale di poter visualizzare lo stato di caricamento (upload) di file verso il server.
La libreria è consiglaita per i server che ospitano installazioni di drupal (ma non solo) e di fatto il nostro CMS preferito ci ricorda di intallarla.
Per installarla ci sono 2 strade alternavive che come sempre sono da pacchetti (non è un vero pacchetto) e da sorgenti
Metodo A Consigliato (PECL)- apt-get install make
- apt-get install php5-dev
- apt-get install php-pear
- pecl install uploadprogress
- echo extension=uploadprogress.so > /etc/php5/conf.d/uploadprogress.ini
- /etc/init.d/apache2 restart
- wget "http://pecl.php.net/get/uploadprogress"
- tar xf uploadprogress
- cd uploadprogress-1.0.X.X/
- phpize
- ./configure
- make install
- echo extension=uploadprogress.so > /etc/php5/conf.d/uploadprogress.ini
- /etc/init.d/apache2 restart
Upload progress
La libreria UploadProgress è una simpatica libreria che consente all'utente finale di poter visualizzare lo stato di caricamento (upload) di file verso il server.
La libreria è consiglaita per i server che ospitano installazioni di drupal (ma non solo) e di fatto il nostro CMS preferito ci ricorda di intallarla.
Per installarla ci sono 2 strade alternavive che come sempre sono da pacchetti (non è un vero pacchetto) e da sorgenti
Metodo A Consigliato (PECL)
apt-get install make
apt-get install php5-dev
apt-get install php-pear
pecl install uploadprogress
Netbeans: Drupal Coding Standards - lo stile non è acqua!
Al giorno d'oggi lo sviluppatore non ha più semplici editor di testo ma ben più complessi ecosistemi che lo aiutano a scrivere codice, ed è innegabile che alcune funzionalità siano estremamente comode.
Chi scrive codice per Drupal sa che gli sviluppatori di DO (drupal.org) sono molto attenti a come il codice è scritto; e già solo la sua formattazione è soggetta a numerose regole (http://drupal.org/coding-standards/) da rispettare.
Utilizzando netbeans è possibile configurare lo stile del codice secondo i dettami di DO e lasciar fare la formattazione direttamente all'IDE, la guida su come configurarlo la travate su http://drupal.org/node/1019816
Come accennato prima i moderni IDE sono strumenti potenti e Netbeans ci dimostra che azioni ripetitive e noiose come la sua configurazione possono essere "fatte" semplicemente importanto la configurazione necessaria, quindi qui sotto ecco il file di configurazione dei drupal coding standard già pronto.
Bene!! ora che abbiamo visto che è facile e veloce nasce la domanda:
Perchè dovrei formattere il codice alla DO- Perchè si formatta da solo ed il tuo codice diventa più leggibile
- Perchè uno standard per la formattazione aiuta te e gli altri
- Perchè non sei un artista ed il bel codice è leggibile
- Prova a chiedere ai tuoi colleghi cosa ne pensano del tuo codice!
Ciao uccio,
grazie per la dritta...
Vorrei sapere una cosa, ci sono altri IDE che configurati
bene ti permettono di lavorare bene con Drupal?
Grazie
Nicola
Ciao da Los Angeles! Grazie per l'articolo e' l'informazione. Io sono nuovo per quanto riguardo allo sviluppo con drupal, eppure l'uso di NetBeans. Vi domando allora, come si puo' utilizzare i file contenuti via il link 'DOWNLOAD NETBEANS DRUPAL CODING STANDARD'? Dove si deve mettere questi file?
Apprezzo la vostra risposta. Grazie.
Netbeans: Drupal Coding Standards - lo stile non è acqua!
Al giorno d'oggi lo sviluppatore non ha più semplici editor di testo ma ben più complessi ecosistemi che lo aiutano a scrivere codice, ed è innegabile che alcune funzionalità siano estremamente comode.
Chi scrive codice per Drupal sa che gli sviluppatori di DO (drupal.org) sono molto attenti a come il codice è scritto; e già solo la sua formattazione è soggetta a numerose regole (http://drupal.org/coding-standards/) da rispettare.
Utilizzando netbeans è possibile configurare lo stile del codice secondo i dettami di DO e lasciar fare la formattazione direttamente all'IDE, la guida su come configurarlo la travate su http://drupal.org/node/1019816
Come accennato prima i moderni IDE sono strumenti potenti e Netbeans ci dimostra che azioni ripetitive e noiose come la sua configurazione possono essere "fatte" semplicemente importanto la configurazione necessaria, quindi qui sotto ecco il file di configurazione dei drupal coding standard già pronto.
Bene!! ora che abbiamo visto che è facile e veloce nasce la domanda:
Perchè dovrei formattere il codice alla DO- Perchè si formatta da solo ed il tuo codice diventa più leggibile
- Perchè uno standard per la formattazione aiuta te e gli altri
- Perchè non sei un artista ed il bel codice è leggibile
- Prova a chiedere ai tuoi colleghi cosa ne pensano del tuo codice!
Netbeans: Drupal Coding Standards - lo stile non è acqua!
Al giorno d'oggi lo sviluppatore non ha più semplici editor di testo ma ben più complessi ecosistemi che lo aiutano a scrivere codice, ed è innegabile che alcune funzionalità siano estremamente comode.
Chi scrive codice per Drupal sa che gli sviluppatori di DO (drupal.org) sono molto attenti a come il codice è scritto; e già solo la sua formattazione è soggetta a numerose regole (http://drupal.org/coding-standards/) da rispettare.
Dries parla di Drupal 8
Le sessioni secondo Drupal
Drupal per tenere traccia delle sessioni degl utenti salva le informazioni relative ai navigatori all'interno del suo database, infatti tutti dati relativi alle sessioni vengono salvate in una tabella chimata 'session'.
Il sistema reagisce all'ingesso di un visitatore sul sito creando una nuova riga nella tabella session. La riga creata inizialmente viene generata per l'utente anonimo (UID = 0) nel momento che l'utente effettua un login la riga verrà contrassegnata con l'UID dell'utente.
Ogni navigatore che accede al nostro sito Drupal lascia quindi una traccia all'interno della nostra tabella 'session' e pertanto periodicamente il sistema deve provvedere a pulire la tabella dei dati non piu necessari altrimenti la tabella crescerebbe all'infinito con le naturali conseguenze che questo comporta.
Per default all'interno del nostro setting.php del nostro sito Drupal troviamo:
La riga sopra configura il "Garbage Collector" (lo spazzino) di PHP a pulire le sessioni piu vecchie di 23 giorni. La pulizia viene fatta direttamente dal GC che dovrebbe essere attivo ma spesso alcune distribuzioni (es Debian, Ubuntu) o alcuni hoster (Unbit) configurano il GC come spento e pertanto il povero spazzino non è autorizzato a svuotare la tabella session e questa continua a riempirsi crescendo di fatto all'infinito.
Le righe qui sotto se aggiunte al setting.php servono ad attivare il GC nel caso la nostra istanza di PHP abbia la sfortuna di avere il GC spento.
L'attivazione del Garbage Collector di PHP come in altri linguaggi non è deterministica ed infatti le direttive sopra configurano la probabilità che il GC si attivi e faccia pulizia. Nello specifico i due parametri sopra impostano l'attivazione del GC con una probabilità di 1/100 all'attivazione di una nuova sessione.
Questa soluzione di default in Drupal si basa direttamente su primitive PHP ma se per motivi vari non possiamo utilizzarla( o non ci è concessa) ci sono svariate maniere per tenere sotto controllo la dimensione della taballa session.
Alternativa 1Una prima soluzione semplice al problema è installare il modulo session_expire
Alternativa 2Una seconda soluzione è lasciar fare al db la pulizia!!
CREATE EVENT event_db1_session_clean
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM db1.sessions WHERE timestamp
Il pezzo di SQL (per MySql) di sopra crea un evento(è l'equivalente del cron di linux) che quando sarà ora eseguirà la query di pulizia della tabella, con questa soluzione la tabella tutti i giorni verrà pulita direttamente dal motore di MySql.
Alternativa 3Una terza soluzione è uno script di 5 righe nel cron
Quando l'alternativa diventa miglioriaCome abbiamo visto sopra ci sono svariati modi di tenere sotto controllo la tabella session ma nel caso di un sito molto trafficato la soluzione di default potrebbe non essere "geniale" perchè la pulizia avviene svariate volte al giorno in momenti non predicibili stressando ulteriormente il server web del sito. Le soluzioni alternative essendo predicibili (soprattutto la 2 e la 3) possono in alcuni casi essere considerate soluzioni migliori al problema di "maintenance" della tabella session.
Tags Drupal Drupal 6Le sessioni secondo Drupal
Drupal per tenere traccia delle sessioni degl utenti salva le informazioni relative ai navigatori all'interno del suo database, infatti tutti dati relativi alle sessioni vengono salvate in una tabella chimata 'session'.
Il sistema reagisce all'ingesso di un visitatore sul sito creando una nuova riga nella tabella session. La riga creata inizialmente viene generata per l'utente anonimo (UID = 0) nel momento che l'utente effettua un login la riga verrà contrassegnata con l'UID dell'utente.
Ogni navigatore che accede al nostro sito Drupal lascia quindi una traccia all'interno della nostra tabella 'session' e pertanto periodicamente il sistema deve provvedere a pulire la tabella dei dati non piu necessari altrimenti la tabella crescerebbe all'infinito con le naturali conseguenze che questo comporta.
Per default all'interno del nostro setting.php del nostro sito Drupal troviamo:
- ini_set('session.cookie_lifetime', 2000000); // Circa 23 Giorni
La riga sopra configura il "Garbage Collector" (lo spazzino) di PHP a pulire le sessioni piu vecchie di 23 giorni. La pulizia viene fatta direttamente dal GC che dovrebbe essere attivo ma spesso alcune distribuzioni (es Debian, Ubuntu) o alcuni hoster (Unbit) configurano il GC come spento e pertanto il povero spazzino non è autorizzato a svuotare la tabella session e questa continua a riempirsi crescendo di fatto all'infinito.
Le righe qui sotto se aggiunte al setting.php servono ad attivare il GC nel caso la nostra istanza di PHP abbia la sfortuna di avere il GC spento.
- ini_set('session.gc_probability', 1); // Probabilta che il GC parta
- ini_set('session.gc_divisor', 100); // Il divisore della probabilità
L'attivazione del Garbage Collector di PHP come in altri linguaggi non è deterministica ed infatti le direttive sopra configurano la probabilità che il GC si attivi e faccia pulizia. Nello specifico i due parametri sopra impostano l'attivazione del GC con una probabilità di 1/100 all'attivazione di una nuova sessione.
Questa soluzione di default in Drupal si basa direttamente su primitive PHP ma se per motivi vari non possiamo utilizzarla( o non ci è concessa) ci sono svariate maniere per tenere sotto controllo la dimensione della taballa session.
Alternativa 1Una prima soluzione semplice al problema è installare il modulo session_expire
Alternativa 2Una seconda soluzione è lasciar fare al db la pulizia!!
- CREATE EVENT event_db1_session_clean
- ON SCHEDULE EVERY 1 DAY
- DO
- DELETE FROM db1.sessions WHERE timestamp < UNIX_TIMESTAMP( ADDDATE( NOW( ) , INTERVAL -10 DAY ) )
Il pezzo di SQL (per MySql) di sopra crea un evento(è l'equivalente del cron di linux) che quando sarà ora eseguirà la query di pulizia della tabella, con questa soluzione la tabella tutti i giorni verrà pulita direttamente dal motore di MySql.
Alternativa 3Una terza soluzione è uno script di 5 righe nel cron
Quando l'alternativa diventa miglioriaCome abbiamo visto sopra ci sono svariati modi di tenere sotto controllo la tabella session ma nel caso di un sito molto trafficato la soluzione di default potrebbe non essere "geniale" perchè la pulizia avviene svariate volte al giorno in momenti non predicibili stressando ulteriormente il server web del sito. Le soluzioni alternative essendo predicibili (soprattutto la 2 e la 3) possono in alcuni casi essere considerate soluzioni migliori al problema di "maintenance" della tabella session.
Tags: Drupal, Drupal 6Le sessioni secondo Drupal
Drupal per tenere traccia delle sessioni degl utenti salva le informazioni relative ai navigatori all'interno del suo database, infatti tutti dati relativi alle sessioni vengono salvate in una tabella chimata 'session'.
Il sistema reagisce all'ingesso di un visitatore sul sito creando una nuova riga nella tabella session. La riga creata inizialmente viene generata per l'utente anonimo (UID = 0) nel momento che l'utente effettua un login la riga verrà contrassegnata con l'UID dell'utente.
DrupalCamp 2010
Il 2 ottobre 2010, per secondo anno consecutivo, si svolgerà l'evento italiano su Drupal aperto a tutti coloro che vogliono conoscere meglio il magico mondo della "goccia".
L'evento è completamente gratuito e si svolgerà presso i locali della cascina roccafranca di Torino.
Quest'evento è il primo organizzato ufficilmente dall' associazione drupal italia nata con il preciso intento di aiutare la diffusione di drupal sul territorio italiano.
Tags Drupal Drupal Comunity DrupalCampPer aggiungere il tuo Feed XML riguardante Drupal, compila il form Planet.