Parce qu’un dessin parle toujours plus

system-search Il est parfois bien délicat d’arriver à mettre en parole toute l’effervescence de notre réflexion, surtout quand il faut l’expliquer à une personne d’un autre corps de métier. Pour y parvenir, on arrive souvent à la conclusion, qu’un schéma parle plus. Et il faut croire que les éditeurs de logiciel l’ont compris, car j’ai très rarement vu une solution de création de schéma travaillée et gratuite (voir libre!), enfin jusqu’à aujourd’hui.

Lire la suite de Parce qu’un dessin parle toujours plus

Quand on vous dit que Linux peut tout faire

utilities-terminal Linux c’est génial, on peut tout faire avec vous dira n’importe quel utilisateur du pingouin, moi le premier. Surtout grâce à sudo qui permet de d’exécuter des applications sous un autre compte utilisateur (généralement des choses réalisables seulement en root), sans avoir à changer de session. Ca permet d’éviter de taper par erreur rm -Rf /*[1] par erreur.
Mais ca va plus loin maintenant avec les distributions modernes, la preuve en image.

Lire la suite de Quand on vous dit que Linux peut tout faire

  1. cette commande lancée avec les droits root efface tous les fichiers de votre système []

Applications web: l’avenir du logiciel?

system-run Après l’effet de mode du « web 2.0″ passé, on commence à voir émerger clairement une nouvelle tendance sur le web: De vrais applications, qui ont une finalité de service au même titre qu’un logiciel standalone[1]. Il est loin le temps où le HTML régnait en maître sur la toile et que le partage d’information texte était finalement sa seule finalité[2].

Lire la suite de Applications web: l’avenir du logiciel?

  1. Application standard installée sur les systèmes d’exploitation []
  2. Mais qui reste encore aujourd’hui la plus importante on est d’accord []

On n’a pas fini de jouer à la hotline

help-about Toi aussi tu es l’informaticien de la famille? Toi aussi toute ta famille pense que tu peux résoudre n’importe quel problème informatique simplement en clignant des yeux? Et bien sûr pour le prix d’un sourire, mais c’est pas comme si les dépannages informatiques coûtaient cher. Et tu as beau leur expliquer que tu n’utilises plus windows, et que tu ne sauras certainement pas régler le souci, rien n’y fait!

La seule vrai solution à ce problème, c’est malheureusement de s’exiler. Ainsi il devient possible de sortir l’argument imparable: Il faudrait que je sois devant l’ordinateur, là comme ça, je vois pas. Bon bien sûr, on vous dit que vous jetterez un œil quand vous passerez pour les vacances, mais dans l’effervescence générale et pour peu que vous restiez une poignée de jour, le supplice peut être éviter.

Mais voilà Windows a brisé des familles, amputé leur fils prodigue et ils viennent de le comprendre! Voilà qu’ils nous préparent un Windows 7 avec certaines fonctionnalités assez surprenantes dont le fameux: Problem Step Recorder.

En quelques mots, plus d’excuse pour ne pas regarder le problème de l’oncle Bob qui quand il lance Internet Explorer, se lance 18 fenêtres en même temps avec des filles légèrement vêtues qui ne plaisent guère à votre tante. Il pourra vous le prouver sur le champ capture d’écran à l’appui.

On dit merci Billou! (bon en fait maintenant c’est Steve mais Billou ca sonne quand même mieux).

Déclaration de guerre à IE6

system-software-update Tous les développeurs web le connaisse et on cherche même des solutions pour l’émuler tellement ce navigateur ne veut pas quitter la scène du web, la faute à windows xp, où il est installé de série.

Et même si tout le monde est d’accord sur le fait qu’il coûte à tout le monde de s’adapter à ce navigateur, personne n’a jamais rien tenté, jusqu’à ces derniers jours. En effet Wired relayait l’information hier, certains sites influents norvégiens, puis suédois, danois ont lancé une déclaration de guerre par l’intermédiaire de message à l’intention des utilisateurs de IE6 pour leur signaler que leur navigateur était obsolète.
Une belle initiative répertoriée sur ce wiki.

Voici quelques screen des messages:
image-13
image-12

A suivre de très près, et sait-on jamais, on pourrait voir la proportion d’IE perdre du terrain plus vite que prévu… l’espoir fait vivre ;)

Prenez le contrôle de votre CSS

applications-system Votre projet est en plein sprint, les releases de corrections s’enchainent et vous devez soumettre le résultat à chaque fois à votre client. Et pourtant il y a un mécanisme des navigateurs qu’on adore en tant qu’utilisateur mais qui gène parfois en tant que développeur, la mise en cache des CSS.

Quoi de plus frustrant d’avoir en premier retour de votre client Euh, pourquoi l’image est au milieu de l’écran? alors que vous venez de passer les dernières heures à la mettre au bon endroit en retouchant votre CSS. Bien sûr vous lancez rapidement le cri de guerre adéquat F5! et la magie opère enfin.

Mais ne serait-il pas plus plaisant que d’obtenir dès le premier clic, le bon résultat?
Il y a pour cela une astuce, que bon nombre connaisse, mais qui dans un contexte de développement professionnel, est souvent lourde à mettre en place: changer le nom de votre CSS pour forcer le navigateur à la recharger et ainsi laisser apparaitre vos modifications du premier coup.

Lire la suite de Prenez le contrôle de votre CSS

IE6 sur Mac OS X, quand Linux inspire Mac

applications-internet Tous les Linuxiens, en particulier les développeurs web ont du passer le pas un jour, installer une solution le permettant de tester leur page web dans ces magnifique navigateurs qui ralentissent l’avancée technologique du web, j’ai nommée IE6 et IE7.

Là où la virtualisation se banalise grâce à des logiciels comme VirtualBox, certains utilisent encore des émulateurs dont le célèbre ie4linux.

Et bien, l’alternative pour Mac OS X existe, preuve que la pomme a quand même bien fait les choses. Et pour l’installer rien de plus simple.

Lire la suite de IE6 sur Mac OS X, quand Linux inspire Mac

Expod: extraire ses mp3 de son ipod

ipod-icon S’il y a bien une option qui manque à iTunes, c’est bien de pouvoir récupérer les mp3 une fois dropé dans son ipod.

Une fois de plus, ce manque est corrigé par un tiers par l’intermédiaire de Expod, seulement en version mac pour l’instant ce petit soft a le mérite de faire son travail et de le faire bien.

Une fois lancé, rien à faire de plus, il reconnait votre ipod connecté comme un grand:
image-9

Ensuite, on sélectionne les mp3 qu’on veut récupérer et on arrive sur une boîte de dialogue qui nous propose le format de nom de fichier qu’auront nos futurs fichiers mp3 via les tags de ces morceaux:
image-10

On choisit le répertoire de destination et l’affaire est dans le sac. Reste à voir, si ce logiciel évolue, en permettant surtout un support Windows voir Linux

Uploadez en Symfony

accessories-text-editor Quand on utilise un framework PHP aussi propre et bien pensé que symfony, on a souvent envie de continuer ce beau travail en ajoutant notre code de la meilleur des façons pour conserver la logique de l’application, MVC, héritage, composition…

Mais ce n’est pas toujours simple. Voici un petit exemple qui concerne un passage obscur de la documentation officielle des formulaires dans symfony, l’upload de fichier.

Pour commencer, il faut souvent définir dans la définition de notre formulaire le widget et le validator correspondant. Dans notre exemple, on prendra un champ nommé avatar, imaginons un classe Profil:

public function configure()
{
    $this->widgetSchema['avatar'] = new sfWidgetFormInputFile();
    // Un upload étant rarement obligatoire, 
   // le cas de l'avatar est un bon exemple, on le rend facultatif ici
    $this->validatorSchema['avatar'] = new sfValidatorFile(array('required' => false)) ; 
}

Maintenant on a bien notre formulaire qui s’affiche correctement. Le problème, si on n’upload pas de nouvel avatar, à la prochaine sauvegarde, le champ avatar sera remis à sa valeur par défaut, fonctionnement tout à fait normal en l’état.
Pour éviter ceci, voici la fonction à rajouter, toujours dans notre classe de notre formulaire Profil, c’est en fait une surcharge de la méthode save:

public function save($con = null)
{
    // On test si le champ avatar a été renseigné dans le formulaire
    if ($file = $this->getValue('avatar'))
    {
      // Si oui, on sauvegarde le fichier
      $filename = 'nomDuFichier';
      $extension = $file->getExtension($file->getOriginalExtension());
      $file->save(sfConfig::get('sf_upload_dir').$filename.$extension);
    }
    else
    {
      // Si non, on récupère la version actuelle dans l'objet Père (ici profil), 
      // que l'on insère dans le tableau de valeur du formulaire
      $this->values['avatar'] = $this->getObject()->getAvatar();
    }
 
    // Puis on lance la sauvegarde normal de la classe mère
    return parent::save($con);
}

Et voilà, nous sommes restés dans la logique métier de symfony, en surchargeant l’existant et surtout en permettant de garder notre action identique, les modifications ayant été apportées dans le modèle.

Un terminal mac os x plus sexy

utilities-terminal Quand on vient de l’univers Linux vers le monde merveilleux de la pomme, on est vite en manque de notre cher terminal, celui qui permet de faire tout ce qu’on veut rapidement et sans se heurter à une interface peu bavarde parfois.

Mais quel choc quand on a le malheur de lancer le terminal mac dans sa configuration de base:
image-30

Assez tristounet, aucune couleur et le panel de configuration est peu enclin à nous aider efficacement. Et pourtant, quand on sait que mac os x est construit sur une base unix, il serait dommage de se priver d’un terminal qui pourrait se révéler très utile, surtout pour un développeur comme moi.

On va donc se lancer dans un petit tuning de terminal.

Lire la suite de Un terminal mac os x plus sexy

PHVsPjxsaT48c3Ryb25nPndvb19hZHNfcm90YXRlPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTEuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMi5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8zPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0zLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8zPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGN1c3RvbS5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9hcmNoaXZlczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9ob21lPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2xvZ288L3N0cm9uZz4gLSBodHRwOi8vd3d3LmFtaWNhbGVtZW50LXdlYi5uZXQvd3AtY29udGVudC93b29fdXBsb2Fkcy8zLWxvZ28ucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFudWFsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tLzwvbGk+PGxpPjxzdHJvbmc+d29vX25hdl9leGNsdWRlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fcmVzaXplPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3J0bmFtZTwvc3Ryb25nPiAtIHdvbzwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIFR5cGViYXNlZDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDEwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29fdXBsb2Fkczwvc3Ryb25nPiAtIGh0dHA6Ly93d3cuYW1pY2FsZW1lbnQtd2ViLm5ldC93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby5wbmc8L2xpPjwvdWw+