Drupal Tattoos

38 contenuti / 0 new
Ultimo contenuto
Drupal Tattoos

Ogni tanto in tanto ci casco nella stessa errore, che mi viene voglia di fare un tatuaggio. Penso che succede un pò a tutti, quindi sto preparando un talk sul argomento - Drupal Tattoos, appunto.

Anche se il talk è un 'forse', intendo preparare dei slide che pubblicerò qui. Ma ho bisogno del vostro aiuto (mica sono solo io a sbagliare ;-)

Se hai un preferito (o anche di più), scrivilo qua, ed io l'aggiungerò alla lista.

Non è necessario fare un vero tatuaggio, s'intende. Ci sono già, quindi non è una cosa originale. Vedi http://buytaert.net/drupal-tattoo e http://www.behindtheink.com/shizzle/?p=122

Tatuaggio: Pulire la cache
Ieri ed oggi ci sono cascato in due modi diversi.

Ieri. Ho dovuto cambiare il CSS, ma avevo già installato ed usato Boost. Disabilitato Boost, ma non si aggiornava mai il CSS. Anche Firebug mi mostrava il file giusto ma contenuto vecchio. Avevo dimenticato di cancellare i files .gz nella cache statica di Boost. Prezzo 30 minuti di frustrazione.

Oggi. Ho dovuto cambiare il valore di un campo CCK per un centinaio di nodi. Ho smanettato un pò col SQL, è sono riuscito a cambiare il valore. Vado sulla pagina di uno dei nodi cambiati, e vedo il vecchio valore. Ricontrollo il DB - apposto. Avevo dimenticato la cache delle query di CCK. Prezzo, altri 30 minuti di frustrazione.

P.S. Ovviamente non sono gli unici esempi dove vieni morso dalla cache, aggiungi pure la tua esperienza!

Più imparo, più dubito.

Tatuaggio: Leggi il README.txt (leggimi.txt)

Ma qualche volta bisogna sapere dove trovarli. Quando si installa un modulo o tema contribuito bisogna (di solito) metterli l'uno in sites/all/modules è l'altro in sites/all/themes. Come spiegato nel leggimi sites/all/README.txt - basta sapere che c'è...

Altri leggimi che non leggiamo mai? Aggiungiamoli...

Più imparo, più dubito.

Tatuaggio: Non creare un modulo e una tema con lo stesso nome

Man mano che la nostra esperienza con Drupal cresce, magari iniziamo a creare un modulo e una tema specifico per il sito. Il modulo contiene qualche riga di codice specifico, la tema di solito è un sotto tema. Dato che sono creazioni specifici solo per quel sito viene quasi naturale darli la stessa nome. Non farlo non solo perche temi e moduli nella repository di Drupal hanno sempre nomi univoci, ma anche perche lo esige il framework Drupal stesso. Pena la sparizione dei blocchi (tutti), ed altre stranezze - è capitato a me. Ho cambiato il nome della tema, e tutto è tornato alla normalità.

Più imparo, più dubito.

Tatuaggio: Non modificare un tema direttamente - crea un sotto tema prima.

Prima o poi quel bellissimo tema contribuito che abbamo scelto con tanta cura mancherà qualcosa. Un ritocco alla favicon, o logo magari. Basta cambiare il file, e... Halt. Non farlo. Se modifici qualsiasi cosa in quel tema - è tuo, per sempre. Perchè se l'aggiorni allora addio alle tue modifiche.
Bisogna sempre e comunque creare un sotto tema dal tema contribuito. Non è così difficile, vedi http://www.drupalitalia.org/node/11117, http://drupal.org/node/225125 e http://drupal.org/node/226507

Più imparo, più dubito.

Tatuaggio: Impara la lingua

Drupal ha una sua lingua (o micro linguaggio), spesso parliamo di tema, modulo, template, nodo, blocco, vista, ecc. Non sono tantissimi, ma bisogna capire cosa vogliono dire, per evitare confusione, e soprattutto per evitare di prendere concetti sbagliati su come funzione Drupal.

Più imparo, più dubito.

Tatuaggio: Attenti ai conflitti fra moduli

Non è praticabile controllare che ogni combinazione e permutazione dei numerosissimi moduli si comportano correttamente fra di loro, quindi possiamo scoprire degli sorprese ogni tanto in tanto.

In particolare questo può succedere quando abilitiamo più moduli per un specifico funzionalità, come profili del utente, o controlli accessi. La morale è proseguire con parsemonia e prudenza (gran bella regazza).

Più imparo, più dubito.

Tatuaggio: Ricordiamoci i moduli che disabilitiamo

A volte, in una configurazione con tanti moduli, potremmo avere l'esigenza di disabilitarne qualcuno oppure un pò di più...

Abituiamoci ad annotare sempre i moduli che disabilitiamo in un editor di testo; potrebbe capitare di doverli re-abilitare (qualcuno o di più...) per qualche problema dovuto alla loro disabilitazione e non ricordarci quelli che abbiamo disabilitato!

Tatuaggio: Sapere dove mettere moduli e temi

Moduli aggiunti vanno in sites/all/modules, oppura sites/default/modules, e da nessun altra parte, sopratutto non vanno messi in modules che è casa per i moduli di Drupal stesso.

Temi aggiunti vanno in sites/all/themes, oppura sites/default/themes, e da nessun altra parte, sopratutto non vanno messi in themes, che è casa per gli temi di Drupal stesso.

Più imparo, più dubito.

@John

Quote:
Tatuaggio: Impara la lingua

Spesso in questo sito vedo utilizzato il termine Teaser e non ho ancora chiaro cos' è. E' un sinonimo di Header ? La traduzione letterale sembra essere "rompicapo, enigma"; concordo con John che un breve dizionario dei termini più utilizzati non sarebbe da sottovalutare.
Scusate la mia ignoranza.

Come la maggiore parte delle parole inglese, teaser ha multiple significativi (lo facciamo per confondere gli stranieri). In questo caso teaser == antiprima (una versione troncato del testo del nodo).

Più imparo, più dubito.

Tatuaggio: Fare un backup del sito

Ci sono due elementi principale che bisogna salvare: i file ed il basedati.
Dei files, è importante salvare files aggiunti dai utenti, che stanno in sites/default/files, ma se stai per fare modifiche aggiungendo o togliendo moduli o temi, meglio salvare tutti i file del applicativo.

Più imparo, più dubito.

Ho anche trovato questa spiegazione:
http://www.drupalitalia.org/node/5116#comment-17555
che intenderei come quella parte del contenuto che andiamo a dividere manualmente o che viene diviso automaticamente dopo un certo numero di parole.
Quindi Teaser = Anteprima
Sotto abbiamo il Leggi tutto (Read More)

@jhl.verona

Parole Sante, in particolare se hai un hosting senza backup giornaliero.

FT
Ci sono similitudini

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: [email protected]

Quote:
Tatuaggio: Fare un backup del sito

Meglio salvare tutti i files, non si sa mai; 50Mb(100Mb) in più o in meno non fanno differenza, solo una decina di minuti in più via FTP.

Quote:
Tatuaggio: Fare un backup del sito

E nè la frequenza nè i livelli di salvataggio sono da sottovalutare.
Non siamo certo su un mainframe, ma l' esperienza aiuta. I livelli sono quelli che on MVS venivano chiamate GDG. Si facevano giornalieri, settimali, mensili ed annuali.
Nel nostro caso basterebbero tre livelli, almeno un salvataggio prima di ogni aggiornamento, del core o dei moduli.
Inoltre, non dico di conservarli in una cassaforte ignifuga, ma una masterizzazione ogni tanto (una volta al mese/due mesi) non guasterebbe.

@Giovanni si, non ho specificato ne come, ne quante volte. L'importante è che si capisce la necessità.
@Loris - James Coburn, sono lusingato...

Più imparo, più dubito.

Tatuaggio: Conoscere l'ambiente

Un applicativo web è una bestia complesso per la sua natura; sono coinvolto il sistema operativo, il web server, un linguaggio di programmazione ed un gestore di basedati (come minimo). Meglio conoscere un pò cosa vuol dire LAMP.

Non sarebbe male capire un poco di HTML, CSS ed eventualmente JavaScript.

Sapere un pò di inglese (almeno in lettura) non guasta.

Più imparo, più dubito.

Tatuaggio: Armarsi di pazienza

Drupal non è uno dei più semplice di CMS. Ha il pregio di essere molto flessibile e modulare, ma come base è molto scarno. Bisogna capire cosa sono temi e moduli. Meglio paritre con un buon libro e fare qualche prova in locale.

Non conosco nessuno che ha superato la soglia di dolore in meno di qualche mese di studio.

Non stai per imparare ad andare in bici, stai per imparare a suonare la chitarra...

Più imparo, più dubito.

Ciao John

@stai per imparare a suonare la chitarra...

si si, ma a questi livelli:
http://www.youtube.com/watch?v=0bY_jpJGadU

oppure paragonato più ampiamente:
http://www.youtube.com/watch?v=T4EszMkxqEs&p=2360C2900C4C2711&playnext=1...

Ciao
Kipper

Tatuaggio: Verificare sempre l'integrità del database dopo il backup

Dopo il backup del database, "caricarlo" subito in un database "test" per verificarne l'integrità!

Ciao
Kipper

@kipper: sono successi casini? :)

Aggiungerei: dopo averne fatto il backup, testato l'integrità, comprimerlo (gz) e creare un checksum MD5 prima di copiarselo da qualche altra parte, quindi ri-effettuare il controllo dell'hash :)

Ciao
Marco
--
My blog
Working at @agavee

Ciao Mavimo,

@kipper: sono successi casini? :)

No no...

Ma scusa, non è sufficente uploarlo in un databse es. "my_db_test" sempre in phpMyAdmin dove si trova anche quello in produzione?

Una volta che è riuscito l'upload ed uscito il messaggio "tutte le query sono state eseguite" database importato correttamente (o una cosa del genere...) non vuol dire che il db è ok?

tralascio qualcosa? ...cos'è il checksum? ...per quanto riguarda la compressione la ottengo al momento del backup infatti, lo esporto:
1. senza compressione
2. in formato gz
3. in formato zip

Mi potresti illuminare sul checksum MD5?

Grazie

Ciao
Kipper

kipper wrote:
Una volta che è riuscito l'upload ed uscito il messaggio "tutte le query sono state eseguite" database importato correttamente (o una cosa del genere...) non vuol dire che il db è ok?

No. Potrebbero benissimo mancare delle tabelle. Anzi, secondo me quello è l'errore più comune che rischia di commettere chi fa il backup con phpmyadmin. Di altri modi ho parlato (in inglese, lungo) su http://nuvole.org/blog/2010/apr/03/drupal-database-backup

kipper wrote:
cos'è il checksum? ...per quanto riguarda la compressione la ottengo al momento del backup infatti, lo esporto:
1. senza compressione
2. in formato gz
3. in formato zip

Insomma, esporti tre volte gli stessi dati. La checksum è un calcolo che permette di verificare che un file (con una probabilità del 99,99999....%) non si sia alterato tra quando l'hai creato e quando lo usi. Scenari: scarico Drupal 6.19 e voglio vedere che il pacchetto si sia scaricato correttamente, confronto la checksum (md5 hash) su http://drupal.org/node/880546 con quella che ricalcolo sul file scaricato sul mio disco; oppure, salvo un backup, lo metto su una chiavetta USB, quando lo uso verifico che non si sia danneggiato nel trasporto confrontando la checksum che mi sono calcolato all'inizio con quella del file attuale.

Per i file compressi la checksum non serve per questi scenari: al momento della decompressione, sia gunzip che unzip verificano automaticamente la checksum, che nascondono dentro al file gz/zip. Per lo scenario descritto da Mavimo può essere effettivamente utile, ma io preferisco usare le opzioni di "test" di gunzip/unzip così controllo non solo che il file sia identico a quello sul mio disco, ma anche che sia un file gz/zip corretto.

Mi fermo qui perché informazioni su questi argomenti si trovano senza problemi e sarebbe un peccato sporcare la lista di "tatuaggi" di John...

Pescetti,

Ti ringrazio (oltre a Mavimo...) per le preziose informazioni delle quali non ero a conoscenza...

Può proseguire la lista "Tatuaggi" di John...

P.S. Mi hai anticipato a proposito della la lista dei Tatuaggi di John sporcata - anch'io l'avevo notato e pensato, non ho voluto dire nulla ma finalmente qualcuno l'ha detto... era così bella... ma è bella comunque!

Tatuaggio: .....
Tatuaggio: .....
Tatuaggio: .....
etc...

Ci sono cascato pure io...

Comunque grazie ancora Pescetti per le preziose info ;-)

Ciao
Kipper

A me non dispiace a fatto. Ottimo interventi, e ottimo articolo di Andrea. Poi mica che sto facendo un remake di Memento.

Più imparo, più dubito.

Ciao John,

giusto!

...d'altronde è inevitabile che la lista venga "sporcata" con interventi extra nel caso vengano postati dei "Tatuaggi" che richiedano delle correzioni/precisazioni... ben vengano anzi, è d'obbligo da parte di chi ha competenze/conoscenze maggiori intervenire...

Ciao
Kipper

Tatuaggio: Tutti gli utenti hanno un ruolo

Nella catena utente -> ruolo -> permessi è importante sapere che un qualsiasi utente (loggato o non) ha almeno un ruolo predefinito.

Se l'utente non è loggato allora è anonimo ed ha il ruolo 'anonimous user' (utente anonimo). In più ha l'identificatore utente == 0.
Se l'utente è loggato allora ha sempre (come minimo) il ruolo 'authenticated user' (utente autenticato). Ed ha un identificatore utente > 0.

Di solito non diamo mai permessi ai anonimi (forse postare commenti è l'eccezione).

Se dai un permesso a 'authenticated user' allora qualunque utente loggato avrà quel permesso (ed anche se dai altri ruoli a quel utente, non poi mai togliere il ruolo 'authenticated user')

Più imparo, più dubito.

Tatuaggio: I browser non sono uguale

Ma quanti sono 'sti browser? Internet Explorer, Firefox, Safari, Chrome, Opera ...

Perchè visualizzano in modo diverse? Perchè il software è stato creato da diverse persone, in modi diverse, e perchè le specifiche del W3C sono "interpretabile" e spesso ratificati solo dopo l'uscita dei browser.

Allora? Bisogna testare che i risultati sono (più o meno) uguale su tutti i browser - o almeno quelli più populare.

Ma questo è troppo! Allora usa template già collaudati per questi browser, e librerie JavaScript già testati (jQuery e le sue sotto librerie)

Modifica con Firefox/Firebug poi testi sui altri browser. Una modifica alla volta.

Più imparo, più dubito.

Tatuaggio: Strumenti per l'amministrazione

Dopo un pò di tempo, ti accorgi che il menù di navigazione non basta per navigare nel mare degli impostazioni di Drupal. Pensa solo al tempo spreccato cliccando il link sbagliato - di nuovo.

Il primo aiuto che possiamo concederci è una tema fatto a posto per l'amministrazione. Esempi sono RootCandy, Seven e Polpo Admin Theme (ma ci sono anche altri). Una volta installato (sempre in sites/default/themes) vai in admin/build/themes/select per attivarlo - ma non mettere predefinito. Poi vai in admin/settings/admin dove puoi selezionarlo come tema di amministrazione.

Il secondo aiuto è di installare un modulo che sostituisce il menù di navigazione. Ci sono due molto interessante: Admin oppure Administration Menu.

Il terzo aiuto è l'aiuto stesso. Oltre alle breve descrizioni forniti dai moduli possiamo aggiungere ModuleInfo che aggiunge i link di amministrazione nella pagina dei moduli (admin/build/modules/list), ed Advanced help che fornisce un vero è proprio aiuto on-line, specialmente per moduli più complessi, quale CCK e Views.

N.B. Ricordativi che i moduli vanno installati sempre in sites/all/modules. Per chi si preoccupa di non caricare troppo il server - questi moduli possono essere disattivati quando il sito è "vivo".

Più imparo, più dubito.

Tatuaggio: Quale moduli? Segui la moda

Una volta capito le funzionalità di Drupal core, arriva il momento di esplorare il mare di moduli aggiuntivi. Ma quale sono quelli più gettonati? Grazie al meccanismo di aggiornamento di Drupal, possiamo avere un'idea studiando la lista dei moduli 'popolare':
http://drupal.org/project/usage

Anche se ci sono molto di più siti in Drupal di quelli registrati, è sempre un indicazione valido. Cosi scopriamo Views, Token, e Content Construction Kit (CCK).

Più imparo, più dubito.

Tatuaggio: Strumenti per lo sviluppo

Passiamo un bel pò di tempo sviluppando il nostro sito in Drupal, ma ci sono moduli che ci aiutano nel nostro lavoro.

Il primo è Devel. Fa veramente un saccho di cose. Da generare contenuti o utenti, ad analizzare le query, tempi di esecuzione, e memoria consumato per creare le pagine.

Quando impariamo a mettere le mani sul tema anche Theme developer aiuta notevolmente.

Con tutti quei ruoli e permessi, come facciamo capire se quel utente può o no vedere il link, o la pagina? Con Masquerade si può cambiare utente in un lampo.

N.B. Ricordativi che i moduli vanno installati sempre in sites/all/modules. Meglio poi disattivarli quando il sito è "vivo".

Più imparo, più dubito.

Tatuaggio: Cancella dal server i vecchi moduli prima di copiare i nuovi

Quando si aggiorna un modulo via client ftp può venire la voglia di copiare la cartella col modulo in modules e fare "Sovrascrivi" per fare prima. No! Cancellare prima completamente i vecchi file e solo dopo copiare i nuovi. Non sono sicuro che sia il comportamento standard ma se nella directory ci sono vecchi file che non sono previsti nella nuova versione del modulo non verranno cancellati (e questo può facilmente creare conflitti).

Tatuaggio: Dopo l'installazione di un modulo controlla per nuovi permessi e/o blocchi

Oltre a leggere bene il readme del modulo aggiunto, controlla anche la pagina dei permessi (admin/user/permissions) e blocchi (admin/build/block). Spesso un modulo fornisci ulteriori funzionalità che però ha bisogno di certi permessi o un blocco abilitato perchè possiamo utilizzarlo.

Nel mio caso era Devel, che uso da un bel pò, ma che permette anche di cambiare utente - ma solo se:
1. Abiliti il permesso 'switch user' per utenti autenticati (per tornare indietro al superuser)
2. Abiliti il blocco 'switch user' (solo durante lo sviluppo ovvio)

Più imparo, più dubito.

Tatuaggio: Nel tuo modulo stai attento come nomini una funzione

E' facile abituarsi ad usare la tattica MIOMODULO_qualcosa() come nome di una nostra funzione.
Ma c'è una piccola trappola in agguato - rischi di creare uno hook inavvertitamente se 'qualcosa' corresponde al nome di uno dei (tanti) hook.
Quindi tieni a mano la lista...

Più imparo, più dubito.

Ciao John,
quest'ultimo tatuaggio si può evitare installando adminrole che abilita tutti i permessi per i nuovi moduli installati per il ruolo definito come amministratore.

I coding standard prevedono che le funzioni "private" inizino con l'uderscore ( _MIOMODULO_qualcosa() ) per evitare questo, di certo tenere sott'occhio la lista degli hook è quantomai corretto :)

Ciao
Marco
--
My blog
Working at @agavee

E' vero, l'uso del underscore significa "attenti non chiamare questo funzione nel tuo codice - è privato e può cambiare", (anche se non lo trovo nei standards) ma se vogliamo creare una funzione 'pubblica' che può essere chiamato da altro codice ma che non è uno hook? Suggerimenti?
Poi la lista è più lunga - ci sono anche dei moduli che creano dei hook - ma di solito mettono un prefisso, tipo hook_cck_qualcosa...

Più imparo, più dubito.