Blog makina

Share and options

Contenu exporté vers le blog makina-corpus.org

Des caches Drupal! (et un peu APC aussi)

Bonjour à tous, comme convenu dans mon premier article, qui était un étalage de benchmark peu revelant significatifs (je finis toujours par retrouver le mot français, déformation professionnelle vous me direz), voici un article concernant les optimisations basiques obligatoires à effectuer pour des sites Drupal. Ces techniques sont issues de presque 3 ans d'expérience avec le framework, mais surtout du travail conjoint de plusieurs personnes, notamment Régis (notre admin système, PHP warrior qui plus est).

Cet article traitera brièvement des options APC, puis s'étendra sur la mise en place de backend de cache multiples sur Drupal 7, comment faire, lesquels choisir, et comment en mesurer l'impact. Je ne m'attarderais pas sur l'optimization du serveur SQL qui est un métier à part entière. De plus le débat ne m'intéresse pas puisque la communauté Drupal préfère toujours utiliser MySQL alors que PostgreSQL est bien supérieur, à tous les niveaux.

Mise à jour du 11/01/2011 : Merci à gagarine de m'avoir signalé que l'option apc.optimization à été supprimée depuis la version 3.0.13 d'APC.

Comment bien optimizer un Drupal 7

Après de longues heures de benchmarks divers et variés, j'ai enfin réussi à avoir obtenir une configuration optimum pour faire tourner un Drupal 7 correctement. Comme des bons exemples valent mieux que mille mots, voici en image comment faire :

Pour le benchmark, je vais utiliser la commande ab -n 100 -c 4 http://blog-d7.guinevere/

Migration de ce site

Ce site vient de migrer en Drupal 7, opération fructueuse, malgré quelques désagréments. J'ai en effet développé un module permettant de forcer un peu plus l'aggrégation des fichiers CSS et JS, et j'ai malcontreusement déployé une version bugguée sur ce site, que j'ai finalement du désactiver.

Bon bref, ça semblerait marcher, jusqu'à ce que:

! <Haza`> pounard > The website encountered an unexpected error. Please try again later.
<Haza`> boooh

Rappellez moi de plus jamais de me faire de pub sur IRC :)

Mise à jour (2 heures après) : J'ai corrigé le fameux module buggué, et mise dans un sandbox sur drupal.org, allez donc voir: ici si j'y suis pour tester ce module.

Une vache à poil!

Voulant tester un peu Drupal 7, j'ai décidé de porter mon bon vieux blog en Drupal 6 vers Drupal 7. Pour fêter ceci, voici la photo d'une vache à poil.

Si vous pensiez que j'allais vous la montrer sur ma page d'accueil, vous vous fourrez le doigt dans l'oeuil jusqu'au coude! Donnez vous au moins la peine de cliquer, ça ne vous fera pas de mal :)

Cette vache semble aussi sympathique que la gestion des media en l'état avec Drupal 7, c'est à dire non fini. Aujourd'hui la field API permet de faire beaucoup de choses, mais aucun module de gestion correcte d'image (parlons WYSIWYG) ne semble encore exister, ce qui est assez dramatique. Tous les modules censés y toucher sont aujourd'hui encore en développement actif, et je ne me risquerais pas à les installer sur un site publique dans ces conditions!

CPH 2010 : Drupal distros dos and don'ts

Cette conférence était menée par Jeff Miccolis de Development Seed et Irakli Nadareishvili de Phase2 Technology, l'un et l'autre sont à la tête d'une armée de développeurs ayant formé deux distributions, ayant une renommée dans l'écosystème Drupal, respectivement Open Atrium et Open Publish.

On peut résumer cette conférence comme étant une retour d'expérience assez rapide sur les différentes problématiques auxquelles ont été confrontées ces deux sociétés. Je ne vais pas répéter l'ensemble de ce qui à été dit, mais plutôt m'arrêter sur les problèmes qui semblent être redondants.

Ces deux protagonistes s'entendent à définir une distribution Drupal comme étant un package, reposant sur le core, s'installant de manière atypique à l'aide d'un profil d'installation particulier, dont le but est de répondre à un besoin spécifique. En ce qui concerne l'installation atypique, on notera cette volonté de ne jamais laisser l'utilisateur final devant un écran vide de sens - a contrario de Drupal core nu - depuis le début de la procédure d'installation, jusqu'à sa première utilisation du site. La notion de get rid of Drupal-isms que l'on peut traduire par se débarasser des Drupalismes a été employée à ce sujet, elle est très parlante.

Note personnelle à ce propos : je ne suis pas d'accord quant à l'emploi de cette expression, Drupal a certes beaucoup de défauts mais les Drupalismes sont en réalité beaucoup plus présents pour les développeurs et intégrateurs que pour les utilisateurs finaux. On notera que cette expression a été utilisée lors de plusieurs conférences, dans des contextes souvent bien différents.

Introduction au DrupalCon CPH 2010

Depuis avant-hier soir, Dimanche, Florent et moi sommes arrivés à Copenhague pour le DrupalCon CPH 2010. Pour cette occasion, je vais rédiger une série d'articles, tantôt informels, tantôt techniques, en résumé des conférences auxquelles je vais assister.

Les premières impressions sur ce DrupalCon sont assez bonnes, le cadre est magnifique et moderne, les locaux dans lesquels les conférences se déroulents sont spacieux, et bien organisés.

Un nouveau theme \o/

Et voilà, depuis le temps que je trainais l'infameux thème Bluemarine comme base de travail pour celui de mon site! J'ai franchis le pas, pour de multiples raisonsEt surtout à cause de la honte., et que diable, au bout de deux bonnes heures de travail je suis enfin arrivé à un résultat.

Au programme, tout un tas de nouveautés, même si la différence n'est pas flagrante à première vue.

Dans le gros du travail, un thème mélangeant positions absolues et conteneurs floatants, table-less et fluide. Un header quelque peu particulier, puisqu'il est en réalité rendu non loin du footer, suffisament bas dans la page pour ne pas polluer le html brut.

Pour finir, quelques heures de travail, des découvertes en CSS, un peu de Gimp pour faire le fond zébré (et oui, moi je réinvente la roue, je me fais mal, et j'aime ça), et la place pour de nouveaux modules, à venir, plus tard quand ils seront releasés officiellement.

Honte du jour

Aujourd'hui, j'ai installé Seven, l'infamous sur ma machine Desktop perso. Je tenais partager mes premières impressions.

Je dois dire, qu'après cette installation aussi longue qu'ennuyeuse - longueur probablement lié à mon hardware - j'ai un léger sentiment de frustation de voir que Windows me pose toujours autant de questions aussi inutiles lors de ma première utilisation (merci, Monsieur Action Center).

Le spam traduit en français du jour, featuring Google Translate

Le mail d'origine est, accrochez vous bien :

More drive for in-out sticking

Google Translate, mon bon ami, semble être perdu sur celle là, puisqu'il me dit :

Plus de lecteur pour en coller sur

Pour les gens un peu geek, j'imagine qu'on aurait pu traduire vaguement par :

Plus de disque pour du hotplug à répétition

Mais sinon, pour le commun du mortel (et avec quelques contresens), on imagine assez rapidement celà :

Emulate the CCK form validation process for a given field

Something that you may need to do one day or another is validating a custom form field value as if it was a Content field existing value, outside of the node form context.

There is something quite sad about Content module, that is the API does not seems (in Drupal 6, at least, I'm awaiting for a lot of improvements in D7 Field API) to expose any function for manual field validation. The whole process of validation goes through the numerous iterations in node_form and in hook_nodeapi() content module's implementation.

I found a way, quite ugly, but tested and working, let's analyse the following code (comments are inside the function)...

Pages