Créateur Multimédia.
Production musicale / Mixage / Mastering
Web Design / Graphisme

 

The sky is beautiful tonight. #nature #IBelieveInACreator / on Instagram http://instagr.am/p/RLBmj0mQpO/

The sky is beautiful tonight. #nature #IBelieveInACreator / on Instagram http://instagr.am/p/RLBmj0mQpO/

Association caritative d’entraide.
Logotype et charte graphique.

Association caritative d’entraide. Logotype et charte graphique.

Pertinence Culturelle

Une autre de mes adresses web, où je laisse libre cours à mes réflexions sur l’église et la communication dans le monde post-moderne actuel.

J’aime avoir du recul sur ce que je fais. Ce site me permet de ne pas être uniquement dans l’action, mais aussi de savoir où je vais.

De quoi être fier…

Quand Jean-Luc gadreau m’a demandé si j’étais d’accord de composer et d’arranger son prochain album de slam, j’ai tout de suite dit oui. Jean-Luc fait partie de ces gens qui sont très ouverts musicalement et qui n’ont pas peur d’innover. Je me suis dit que ce serait une expérience musicale intéressante et enrichissante.

En février 2012, quand nous nous sommes vus en compagnie de Gregory Boutinon, qui a co-composé et co-arrangé le CD, Jean-Luc a insisté sur la liberté qu’il nous donnait. Une vraie carte blanche avec une seule directive : electro-rock, et une deadline : fin juin 2012 ! Le temps de se mettre en route, cela nous laissait 4 mois pour composer, arranger, mixer et masteriser l’album.

Mais c’est quand il nous a donné une quarantaine de textes, que je me suis rendu compte que je m’étais lancé dans un pari un peu fou. Même si je connaissais un peu Gregory, nous n’avions alors aucune expérience musicale en commun. Un véritable risque pris par Jean-Luc, une sorte de quitte ou double, notre collaboration pouvant aboutir à une innomable bouillie comme à un mets délicat.

C’est alors que le travail a commencé. J’avais quelques idées qui trainaient, enregistrées en mémo sur mon iPhone, et que j’ai réussi à concrétiser. D’autres mélodies sont nées de l’écoute des textes préalablement enregistrés par Jean-Luc. La mise en commun des titres a vite permi de se rendre compte de la complémentarité de mon travail et de celui de Gregory. J’ai vite compris que la mayonnaise était en train de prendre, et que nous étions sur le point de mettre au monde un album créatif et innovant, différent de tout ce qui se fait par ailleurs dans le monde du slam.

En effet, nous avons tous les deux pris le parti de ne pas juste “enrober” ou “souligner” les textes choisis par Jean-Luc, mais nous recherché la créativité sur chaque titre, la musique venant compléter le texte, en l’ameneant plus loin. Nous voulions que chaque titre ait un intérêt musical propre. En tant que musicien, j’ai toujours detesté ces albums qui ne contiennent que deux ou trois titres “sur-produits”, le reste étant une suite de chansons banales peu mises en valeur. Nous avons cherché à rendre chaque titre riche et intéressant.

Au final, 30 titres ont été retenus. Certains sont juste slammés, d’autres instrumentaux. Cela a abouti à un double CD en digipak dont le design est signé Atomike Studios.

C’est difficile de s’auto-promouvoir sans avoir l’air d’avoir la grosse tête, mais pour dire les choses simplement et vous faire comprendre l’enthousiasme que me procure la sortie de cet album, je vous le présenterai comme la création la plus aboutie que j’ai jamais faite, ce dont je suis le plus fier, à la manière d’un chef d’oeuvre artistique.

Les critiques dont l’album a fait l’objet sont pour l’instant unanimes. J’espérais des “intéressant”, “musicalement riche”, ou “vachement bien”… J’ai eu droit à des “scotché”, “secoué”, “happé”… (Et il ne s’agit pas de ma grand-mère, il s’agit de musiciens et de mélomanes avertis).

Alors maintenant, cet album doit vivre. Après un premier concert de lancement à Gagnières le 15 Août 2012, le double CD est disponible sur les grandes plateformes de téléchargement. D’autres concerts suivront. Près de chez vous peut-être ? En attendant, prenez le temps d’écouter tout cela, et si ça vous plait, ce dont je ne doute pas, partagez-le autour de vous ! Pour vous simplifier la tâche, je vous propose les liens qui vont bien :

Le site officiel de l’album “Parole (le grand retable de la vie de Christ)” par Jean-Luc Gadreau.

L’album en écoute et en vente sur iTunes, Deezer, Spotify, eMusic, Amazon, FNAC (il y en a d’autres, cherchez “Gadreau”).

La page facebook artiste de Jean-Luc Gadreau (aimez-la !).

Suivez Jean-Luc (@jlgadreau), Gregory Boutinon (@the_greatbounty) ou moi-même (@cedricdelalande) sur Twitter.

Un plugin Coda pour Symfony2

PLEASE GO TO THE PLUGIN WEB PAGE FOR MORE STRAIGHTFORWARD INFO AND LINKS !

(English below)

J’ai créé un petit plugin Coda pour lancer les commandes Symfony2 les plus courantes.

C’est un travail en cours, pour l’instant très basique. Mais on peut installer Symfony directement depuis Coda, sans toucher à une ligne de code, pourvu que Git soit installé.

Vous pouvez télécharger le plugin sur GitHub.

Les instructions (en anglais) sont à données ci-dessous :

Installation Instructions

Download the zip file.

Unzip.

Double-click the Symfony2.codaplugin bundle, or drag and drop on Coda’s icon.

Use it!

Usage

Check out the readme on Github.

[EDIT :  J’ai enlevé le Readme de cet article, il aurait été trop vite obsolète. Pour le consulter, se rendre sur le repo Github.]

The Laddr

@iJayp, un gars rencontré sur Twitter, et dont le blog est plutôt intéressant.

On démarre avec Symfony2

J’ai décidé de créer un projet avec Symfony 2. Je vais donc en profiter pour mettre quelques notes à ce sujet sur ce blog, au fur et à mesure des bugs que j’ai rencontré. Cela fait trop longtemps que je corrige des bugs, et que, une fois confronté au même problème 6 mois plus tard, je reprends la méthode « essai/erreur » pour le résoudre… Désormais, tout (ou presque) sera consigné ici, et consultable par tous !

Pour démarrer, je vais expliquer comment j’ai installé Symfony2 sous OS X Lion, et créé un simple accès à la base de données en CRUD (Create, Read, Update, Delete).

Installation

J’ai bien entendu téléchargé Symfony2 (v. 2.0.4) sur le site de Sensio Labs. J’ai ensuite décompressé le fichier dans le répertoire « Sites » de mon mac. J’ai renommé le dossier « Symfony » nouvellement créé en « monapp ».

J’ai lancé le terminal et fait le premier test.

cd ~/Sites/monapp
php app/check.php

Et corrigé les erreurs selon ce que Symfony2 me dit. Une étape incontournable est de changer les permissions de certains répertoires en 777 :

chmod -R 777 /Users/ced/Sites/upsendr/app/cache/
chmod -R 777 /Users/ced/Sites/upsendr/app/logs/

Le -R indique au script que l’intégralité du dossier, avec ses sous-dossiers, doit être passé en 777.

Ensuite, un petit tour vers http://votreserveur/monapp/app_dev.php/config.php pour la configuration de la base de données, etc.

On rentre dans le lard !

Dans le terminal, et toujours au sein du dossier de mon appli, j’ai créé un bundle en suivant les options par défaut :

./app/console generate:bundle

Notez qu’il faut lui donner un espace de nom (namespace), et qu’il doit finir par le terme Bundle : « Delalande/BlogBundle », par exemple. Ensuite, il faut lui donner un nom, idéalement basé sur ce que vous avez indiqué avant, comme « DelalandeBlogBundle ». J’ai ensuite validé les options proposées, mais répondu « yes » à la question suivante :

Do you want to generate the whole directory structure [no]?

Une fois notre Bundle créé, nous avons une coquille vide. Il faut la remplir avec une structure liée à la base de données. On fait donc appel à Doctrine pour créer une entité.

./app/console gen:doctrine:entity

J’ai donc créé le shortcut tel que demandé :

The Entity shortcut name: DelalandeBlogBundle:Post

Puis validé le format de configuration (ici, Annotation)

J’ai ensuite créé mes champs :

New field name (press  to stop adding fields): content   
Field type [string]:
Field length [255]:
New field name (press  to stop adding fields): private
Field type [string]: boolean
New field name (press  to stop adding fields): payerdate
Field type [string]: datetime
New field name (press  to stop adding fields):
Do you want to generate an empty repository class [no]?

…et confirmé.

Vient ensuite le moment où cette entité va prendre « vie » sur la base de données :

./app/console doctrine:database:create
./app/console doctrine:schema:update --force

Si vous vérifiez votre serveur de base de données, une base portant le nom de celle spécifiée lors de l’installation de Symfony a été créée, et la table correspondante ajoutée.

L’étape suivante est la création des vues et du contrôleur de l’entité générée. Il suffit de taper :

./app/console doctrine:generate:crud

De rappeler le raccourci :

The Entity shortcut name: DelalandeBlogBundle:Post

Puis :

Do you want to generate the "write" actions [no]? yes

et valider le reste ! Allez faire un tour sur http://votreserveur/monapp/app_dev.php/post et faites mumuse avec les champs de votre base de donnée !

Autoriser un champ NULL dans l’interface CRUD

J’ai créé un champ de « private » type Boolean. Ce champ n’a pas la possibilité d’être NULL, ce qui le rend par ailleurs complètement inutile, à moins qu’il ne serre à une validation de CGV, par exemple.

Pour autoriser « private » à être décoché, il faut se rendre dans src/Delalande/BlogBundle/Entity/Post.php et modifier :

/**
* @var boolean $private
*
* @ORMColumn(name="private", type="boolean")
*/
private $private;

en

/**
* @var boolean $private
*
* @ORMColumn(name="private", type="boolean", nullable="true")
*/
private $private;

J’ai également modifié le champ directement dans la base de données, en autorisant une valeur NULL.

Ainsi, mon champ « private » peut être activé, ou non.

CSS et Javascript au régime avec Smaller

L’une des étapes de la création d’un site web qui s’avère assez cruciale est l’optimisation du contenu afin de permettre un chargement rapide des pages dans les navigateurs. Un site qui se charge rapidement est aussi un site qui fera plaisir à Google et ses amis, qui du coup le fera monter dans les résultats de recherche.

Outre l’optimisation des images, on peut aussi penser à “minifier” le javascript et le CSS. Cela allège les transferts de données entre le serveur et le client. On y gagne quelques octets, ce qui est peut-être négligeable pour un petit site, mais si on est un peu ambitieux, et soucieux de produire un travail soigné, on se préparera à recevoir une avalanche de requêtes le jour où ledit site sortira de l’anonymat !

Les librairies Javascript telles que jQuery et MooFX sont disponibles en version minifiées, mais ce que vous codez vous-même ne l’est pas. On peut utiliser différents compresseurs pour y parvenir, la plupart du temps en ligne de commande, mais comme vous le savez, je préfère une belle interface graphique… C’est tellement plus confortable !

C’est en cherchant ce genre d’outils que je suis tombé sur smaller, un excellent outil pour minifier le javascript et le css.

Disponible pour Mac OS X 10.6 et plus, il utilise YUI, le compresseur de Yahoo!, qui propose le meilleur ratio de compression avec le minimum d’erreurs.

Il se présente sous la forme d’une fenêtre toute simple, sur laquelle on va venir glisser-déposer nos fichiers non compressés, et bam, on se retrouve avec un fichier optimisé.

Smaller propose d’enregistrer les versions compressées avec le suffixe .min, ce qui permet de garder une copie “lisible” du fichier pour le développement, avec les commentaires et en-têtes, ainsi que les sauts de ligne.

Disponible en anglais, il permet également de choisir les options de minification proposées par YUI.

Au rang des améliorations possibles, je dirais que j’aurais aimé avoir la possibilité de supprimer un suffixe lors de la compression, pour passer de “monfichier.src.js” à “monfichier.js”, et enfin la possibilité de surveiller des dossiers définis par l’utilisateur afin de les compresser automatiquement à chaque modification, de manière transparente. Peut-être pour une version 2.0 ?

Au final, on dispose ici d’un bon petit utilitaire, qui se rendra vite indispensable aux développeurs web. Et vu le prix de 15$ (soit environ 10-11€) sur le site de l’application, on aurait bien tort de s’en priver.

MongoDB, l’avènement du noSQL

La mise en place d’une base de données relationnelle peut être un vrai casse-tête. Si on s’est déjà lancé dans un projet d’envergure, on se rend vite compte que non seulement la période de planification du projet est primordiale, mais surtout que dès qu’on veut opérer un changement quelquonque sur la structure de la base, il faut répercuter ces changements dans toutes les requêtes SQL du projet, parfois revoir les jointures… bref, tout ça pour ajouter la fonction ‘tag’ qui n’était pas dans le projet initial, ça peut faire mal, et surtout ça fait perdre du temps.

Arrive MongoDB. Arrive le noSQL. Arrive la modélisation du monde réél. Arrive un cachet d’aspirine.

Je m’explique : au moment où j’écris, j’ai devant moi une pile de livres. Ces livres, je pourrais les répertorier dans une base de données relationnelle :

  • La table Livre, qui a un titre, une couverture (qui lui sont propres)

  • Un Livre a un (ou beaucoup) d’Auteurs. Un Auteur a un nom, un prénom, etc.

  • Un Auteur a beaucoup de Livres.

  • Un Livre a beaucoup de Pages.

  • Une Page appartient à un Livre. Mais une Page a beaucoup de Mots.

  • Un Mot appartient à beaucoup de Pages.

Et on peut continuer longtemps comme ça, avec le possesseur, l’éditeur, le distributeur, le libraire, la reliure… J’ai conscience que je pousse la modélisation un peu loin, mais bien souvent, nos bases de données ressemblent plus à une dissection de la réalité qu’à des entités. Or, la vie, c’est des entités.

Le noSQL fonctionne sur le principe de ces entités, appelées documents. Au contraire d’un modèle SQL, où les informations qui décrivent mes livres sont réparties de manière abstraite dans des tables, le modèle noSQL intègre toutes ces données de manière linéaire, d’un seul bloc, si vous voulez. Cela donne des entités beaucoup plus concrètes :

    Livre :
      Titre : PROGRAMMATION EN PHP4
      Auteur : Leon Atkinson
      Couverture :
        Couleur : Marron
        Image :
        Position : ...
      ...
      Pages :
        Page 1 :
          Texte : "Le PHP, c'est sympa et tout et tout..."
        Page 2 :
          Texte : "Mais parfois, c'est prise de tête aussi..."

Voici un autre livre :

    Livre :
      Titre : CREATIVE RECORDING TWO
      Sous-titre : Microphone and Recording Techniques
      Auteur : Paul White
      Couverture :
        Couleur : Violet
      Pages :
        Page 1 :
          Texte : "Enregistrer est un métier difficile..."
        Page 2 :
          Texte : "Mais je vais tout vous expliquer..."

Un oeil averti verra tout de suite que le premier livre n’a pas de sous-titre, alors que le deuxième en a un. Il verra aussi que sur le deuxième, il n’y a pas d’image, alors que le premier a une image, qu’il faudra positionner sur la couverture. Imaginons que je prête mon livre a un ami, il me suffit d’ajouter le champ “prêt : Robert”. Je peux même indiquer son adresse dans le document.

C’est là en général, qu’on attrape des boutons, et que tout le monde se met à hurler dans une cohue indescriptible : “Mais on va se répéter ! On va avoir des informations en double ! Et si je prête DEUX livres à Robert ? Je vais devoir enregistrer DEUX FOIS don adresse ? C’est contraire à tout ce qu’on nous a appris !”

Ben oui. C’est le principe du noSQL. Et nous, on a tous appris le SQL. C’est pour ça que cela nous choque.

Le noSQL part du principe qu’en regardant mon objet modélisé, je puisse presque le reconnaitre à l’oeil nu. Je dois y voir toutes les données associées. Le noSQL, c’est un peu la déclinaison du XML en base de données. (Je ne vais pas entrer dans les détails techniques, mais MongoDB utilise un système JSON pour stocker et accéder aux données. C’est très léger et rapide.)

Je ne suis pas un pro du noSQL (et pas même du SQL tout court), et la discussion pourrait être bien plus poussée, mais cette courte introduction permettra, je l’espère, à certains d’y voir plus clair, et d’aller découvrir ce puissant langage.

Le site de MongoDB

Hébergement MongoDB (propose un pack gratuit)

Accéder à MongoDB depuis son Mac

[Edit]

Voici un lien vers MongoLab.com, un site qui propose d’héberger vos bases de données MongoDB, et qui propose une formule gratuite plus intéressante que MongoHQ (à l’heure où je rédige ce mail) : jusqu’à 240 Mo de stockage gratuit, contre 16 Mo chez MongoHQ.

Ceci ne prend pas en compte la qualité du service, que je n’ai pas encore testé. De plus, l’inscription chez MongoLab est du type beta fermée - toujours à l’heure où j’écris ces lignes.

Pow! un serveur rails auto-suffisant

Grand bidouilleur devant l’Eternel, je suis toujours à l’affut des dernières nouveautés technologiques.

L’équipe de 37signals, qui nous a pondu rails, a lancé il y a quelques semaines un petit serveur “zero-configuration” pour une utilisation avec Ruby on Rails. D’une simplicité d’utilisation déconcertante, il permet de faire vivre autant de “serveurs” que vous avez d’applis rails sur votre machine, chacun vivant dans son microcosme, sans interférer avec les autres.

L’intérêt numéro un étant de fournir à l’équipe de développement un environnement auto-suffisant et préconfiguré, qui sera identique sur chaque poste.

Installation

Il suffit de taper dans le terminal :

curl get.pow.cx | sh

Euh… c’est tout.

Création d’un serveur

Se rendre dans le dossier ./pow :

cd ~/.pow

puis créer un lien symbolique vers votre application rails :

ln -s /chemin/vers/monappli

Ce qui rendra votre application disponible à l’adresse http://monappli.dev/ !

Et PHP ?

Alors, je me suis mis à rêver… quid d’un tel serveur en PHP ? Est-ce que ça existe ? Est-ce que c’est possible ? Cela rendrait le développement de mes applis tellement plus simple !

Plus d’infos sur http://pow.cx/