Blog myBlog = BlogFactory.getWordPressBlog();
Vie du blog
Billets concernant la vie du blog (mises à jour, pauses en raison de vacances).
Te Deum
16/03/11
Oyez ! Oyez !
Ce mercredi 16 mars de l’an de grâces 2011, vers 11h, ma femme et moi avons fini l’implémentation que nous préparions depuis 9 mois :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class HuitiemeMerveilleDuMonde implements Bebe { @Override public String getNom() { return "Courtine"; } @Override public String getPrenom() { return "Aliénor"; } @Override public Sexe getSexe() { return Sexe.FILLE; } @Override public double getTaille() { return 48.0d; } @Override public double getPoids() { return 3.060d; } } |
Selon la formule consacrée, « la mère et l’enfant se portent bien », et se remettent tranquillement de leurs émotions à la maternité. Pour sa part, le père est aux anges, et a hâte de retrouver tout le monde demain !
Notre petite Aliénor en image :
Seule petite ombre au tableau : l’implémentation dans sa version 1.0 va sans doute souffrir de bugs à corriger, tels que des appels intempestifs de « réveillerPapaEnPleineNuit()« , « refuserDeDormir()« , etc.
Le temps de pouponner bébé corriger ces quelques bugs, je risque d’être à nouveau un peu distant de ce blog dans les prochaines semaines.
Revue de presse…
6/02/11
L’emménagement s’est bien passé, et la nouvelle Freebox est arrivée beaucoup plus vite que prévue. Cependant, nous sommes toujours occupés à finir les petits travaux d’installation qui ne me laissent pas beaucoup de temps pour écrire, en particulier à cause des préparatif pour l’implémentation d’ici un mois de l’interface suivante :
1 2 3 4 5 6 7 8 9 10 11 12 | public interface Bebe { public String getNom(); public String getPrenom(); public Sexe getSexe(); public double getTaille(); public double getPoids(); } |
A défaut d’avoir le temps d’écrire un article de fond, voici donc en vrac une revue rapide de ma veille de ce mois de janvier…
LibreOffice vs OpenOffice
C’est finalement LibreOffice qui a sorti le premier sa version 3.3.0, ce à quoi Oracle a répondu quelques jours plus tard avec la même version de sa suite. Après un test rapide de ces deux versions, la différence de fonctionnalités n’est pour l’instant pas flagrante. OpenOffice étant beaucoup plus agréable graphiquement, je vais donc rester sur la suite d’Oracle en attendant la suite des évènements…
Hudson vs Jenkins
Deuxième fork, encore une fois avec un produit d’Oracle, encore une fois pour des différents sur la gouvernance du projet. C’est la solution d’intégration continue Hudson qui a été forkée par sa communauté (et son fondateur, Kohsuke Kawaguchi). Comme pour OpenOffice, Oracle décide de poursuivre de son côté le développement d’Hudson, avec le soutien de Sonatype. Pour ma part, j’ai décidé de « switcher », et de suivre le projet Jenkins.
Play Framework
La version mineure 1.1.1 de Play Framework est parue ! Mais la grande évolution, c’est la version 1.2 prévue pour mars. Jusqu’à maintenant, lorsqu’on voulait ajouter une librairie à un projet Play, il fallait la mettre dans le répertoire « lib », et donc commiter celui-ci avec le reste du projet.
Habitué aux projets Maven, où les dépendances sont gérées dans un unique fichier de configuration (et donc où les binaires de ces dépendances ne sont pas mis en gestion de configuration), je n’appréciait pas ce fonctionnement de Play, malgré ses autres qualités.
Or, avec la version 1.2 qui arrive, on va avoir un fonctionnement similaire à celui de Maven, où on va pouvoir définir des dépôts et lister les dépendances dans un fichier de configuration.
Paris JUG
Lundi 28 février aura lieu à la cité universitaire le 3ème anniversaire du Paris JUG : au programme, « siffler en travaillant » ! Et tant qu’on est dans l’annonce d’évènements Java, les 26 et 27 mai auront lieu au Grand Rex le « What’s Next Paris?« .
Software craftmanship
Le « software craftmanship », c’est le concept à la mode (avec les TDD, Scrum, et autres DevOps). Sur ce sujet, je tenais à signaler le dernier billet de Nicolas Martignole, auquel j’adhère totalement.
Voeux de silence
9/01/11
Comme de coutume, je vous souhaite à tous mes meilleurs voeux pour 2011 !
Et je profite de ces voeux pour expliquer le titre de ce post : depuis maintenant plus de 15 jours (et certainement pendant au moins tout le mois de Janvier), je vais délaisse ce blog. En effet, nous avons profité de cette fin d’année 2010 pour déménager dans un appartement un peu plus grand mais un peu plus loin de Paris (heureusement encore accessible par les transports en commun). Outre l’attente de notre nouvelle Freebox qui oblige à suivre l’actualité par Galaxy-S interposé, la priorité des soirées est consacrée au déballage des cartons et à l’aménagement…
Afin de bien commencer l’année, voici deux bons « bêtisiers » de fin d’année trouvés récemment :
Perles complémentaires
Comme j’aime bien le concept du bêtisier, voici un petit complément d’extraits de code que j’ai eu l’occasion de lire cette année.
Un tout nouveau design pattern, le « Don’t miss this exception ! » :
1 2 3 4 5 6 7 | try { // code... } catch (SQLException e) { e.printStackTrace(); LOGGER.error("Exception :" + e.getMessage()); LOGGER.error("SQL Exception", e); } |
Toujours dans la gestion d’exceptions, voici le « quoi qu’il arrive, c’est pas moi mais la base de données » :
1 2 3 4 5 | try { // code... } catch (Exception e) { throw new SQLException(e.getMessage()); } |
Passons maintenant à la suite de la série « réinvention de la roue carrée« , avec l’obtention de la date du jour au format français « jj/mm/aaaa » :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public static String getCurrentDate() { Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DATE); String yearStr = Integer.toString(year); String monthStr = Integer.toString(month); String dayStr = Integer.toString(day); if (monthStr.length() < 2) { monthStr = "0" + monthStr; } if (dayStr.length() < 2) { dayStr = "0" + dayStr; } return dayStr + "/" + monthStr + "/" + yearStr; } |
Je vous épargne la méthode « getCurrentHour() » de ce même projet, basée sur le même concept. De même, je ne copierai pas ici la méthode « validateDate()« , dont le but est de vérifier qu’une chaîne de caractères représente une date valide dans ce même format (elle fait 62 lignes…).
Fin de mise en place du blog
18/07/10
Petite pause dans ma série de tutoriels Talend (qui n’est pas terminée), afin d’annoncer la fin de la mise en place de ce blog sous WordPress.
Un des deux problèmes que j\’avais a été résolu, par l’installation du plugin « WP-Syntax Editor Integration Plugin« . Avec celui-ci, plus de problème de disparition des attributs de mes morceaux de code.
Concernant, la ponctuation française, je n’ai toujours pas trouvé mon bonheur… Donc si quelqu’un connaît le nom d’un tel plugin, qu’il n’hésite pas à me le signaler.
Quelques jours après la mise en ligne de ce nouveau blog, j’ai été confronté à un nouveau problème, que je n’avais pas sur Dotclear… les spams pourriels ! Les robots sont visiblement friands de blogs WordPress. J’ai opté pour la méthode la plus simple, avec mes excuses pour le désagrément des (quelques) vrais commentateurs de ce blog : le CAPCHA. J’ai au passage encore une fois été impressionné par le fonctionnement de WordPress. Le CAPCHA s’est automatiquement intégré au site sans que j’aie besoin de modifier à la main le moindre fichier du thème ! Et depuis, je n’ai pas constaté de nouveau problème de ce type.
Mais la plus grosse mise à jour date de ce week-end : il s’agit du changement de mon serveur web !
Quand Talend m’évite un travail fastidieux
10/07/10
Au cours des différents articles de ce blog, j’ai souvent parlé des outils de Talend, dont je suis fan car ils rendent bien des services dans le travail informatique.
Aujourd’hui, j’ai l’occasion de vous présenter un cas d’utilisation plus personnel, où ces mêmes outils m’ont permis d’éviter un travail bien ennuyeux. Je vous ai présenté récemment la procédure de migration que j’ai utilisée pour passer de Dotclear à WordPress.
Cette procédure n’a pas été au bout des choses et il me restait un certain nombre de petits ajustements à effectuer :
- Migrer les liens
- Migrer les réponses aux commentaires du plugin Comback 2.0
- Supprimer les acronymes de mes anciens billets (ils sont maintenant automatiquement ajoutés par le plugin Acronyms)
- Corriger les liens internes entre les anciens billets : ils ne sont plus valables
Mis bout à bout, ces différentes actions sur 65 billets constituent un travail non négligeable… et d’un intérêt proche de 0. C’est à ce moment que Talend intervient, car il m’a permis d’automatiser ces différentes tâches.
S’agissant d’un cas d’étude simple, je pense qu’il peut constituer un bon tutoriel sur un cas d’utilisation réel de cet outil. Voici donc la première partie de ce tutoriel.
La suite >
Convaincu par WordPress 3
7/07/10
Comme vous pouvez le constater, j’ai finalement décidé (de manière accélérée) de finaliser ma migration vers WordPress, malgré les première réserves que j’avais pu noter durant la migration difficile, en particulier celle concernant le manque d’intégrité de la base (qui je l’espère, sera revue prochainement).
En effet, malgré ces défauts, il m’aura suffit de 2 jours pour être séduit par WordPress 3.0 :
Migrer de Dotclear 2 a WordPress 3
5/07/10
Comme je le disais dans mon billet précédent, en parallèle de mon installation de la version 2.2 de Dotclear, j’ai décidé de tester WordPress.
Cependant, si je dois migrer, j’aimerais ne pas perdre tout l’historique des billets de ce blog. J’ai donc décidé en premier lieu de vérifier qu’il était possible d’importer le contenu d’un blog Dotclear.
Je ne détaille pas l’installation en local des deux moteurs sous EasyPHP en version 5.3, pour vérifier au passage les éventuelles incompatibilité (je suis devenu un peu paranoïaque depuis cet épisode) : elle ne pose aucun problèmes pour ces deux moteurs.
La suite >
Migration du blog vers Dotclear 2.2
2/07/10
Depuis hier, la version finale de Dotclear est disponible.
J’attendais cette version avec impatience, en particulier pour sa compatibilité avec PHP 5.3 dont j’avais parlé il y a peu (afin d’avoir une véritable compatibilité et non un « hack » non officiel).
Je me suis donc empressé de la tester (en local tout d’abord), avec une bonne surprise : la migration se déroule sans aucune difficulté, soit en utilisant l’outil de mise à jour automatique, soit en écrasant la version précédente par la nouvelle (la version distribuée ne contenant pas le fichier de configuration de connexion, cette opération manuelle a le bon goût de garder les paramètres existants).
Deuxième bonne surprise, pas de régression sur les quelques plugins que j’utilise ! Après ces quelques vérifications d’usage et une sauvegarde complète (base de données comprise), j’ai procédé à la migration réelle du blog, sans aucun problème !
Dotclear et PHP 5.3
7/06/10
Un problème n’arrivant jamais seul (pour reprendre un proverbe connu), ce billet est la suite de mes mésaventures avec la montée de version de mon serveur dédié vers Ubuntu 10.04.
Après avoir reconfiguré l’ensemble des serveurs, je tente d’accéder à la page d’accueil du blog… et c’est le drame ! La page s’affiche bien, mais les billets ont disparus. Ceux qui sont passés sur le blog dans la journée du mercredi 2 juin ont pu se rendre compte de ce phénomène.
Les billets qui n’apparaissent pas, ça m’a fait penser à un problème de connexion avec la base de données. Ce qui est curieux, c’est que lorsque Dotclear ne parvient pas à se connecter à la base, on n’arrive pas jusqu’à la page d’accueil mais sur une page d’erreur spécifique. Une connexion à l’interface d’administration me confirme d’ailleurs que j’ai accès à une partie de la base : j’obtiens le titre des billets mais pas leur contenu.
Première piste : mes données seraient corrompues suite à la restauration de la base. Quelques requêtes SQL en ligne de commande me permettent d’infirmer cette hypothèse : j’accède bien au contenu des billets.
Je me rabat donc vers une piste PHP (ou une librairie comme php-mysql), suite à la lecture des logs web qui contiennent une grande quantité d’avertissements de type “Warning : Parameter n to myfunction expected to be a reference”. Ces messages me mettent la puce à l’oreille, et un “php -version” m’indique “5.3.2”, alors qu’Ubuntu 9.10 fonctionnait avec PHP 5.2.X.
Dans PHP 5.3, une liste d’évolution est incompatible avec les versions précédentes. Heureusement, je ne suis pas le premier à avoir eu ce problème et une solution non officielle est disponible sur le forum de Dotclear. Elle a été soumise par Dsls dans les réponses 11 et 14, et fonctionne sans problèmes. Il faudra ensuite vérifier vos plugins (et leur appliquer une procédure de migration s’ils ne fonctionnent plus après cette montée de version de PHP).
Sortons maintenant notre appeau à trolls (mais j’assume) : cette évolution de PHP qui oblige toutes les applications à changer une partie de leur code avec des contournements obscurs (transformation d’objets en tableaux, entre autres choses…) me paraît vraiment curieuse.
Autre déception : cette version de PHP est officielle depuis maintenant presque un an (sortie le 30 juin 2009) ! Je trouve regrettable qu’il n’y aie pas un patch officiel de Dotclear (la version corrigée est la 2.2 qui n’est encore qu’en version béta).
Malgré cette déception, j’apprécie Dotclear (en particulier parcequ’il s’agit d’un projet francophone). Cependant, je me demande si je ne vais pas dans un futur plus ou moins proche migrer vers WordPress. La communauté de ce dernier est en effet beaucoup plus nombreuse. Conséquence : le nombre de fonctionnalités (modules), de thèmes, et la vitesse des mises à jour sont beaucoup plus importants. S’il a été un concurrent pendant longtemps, j’ai de plus en plus l’impression que Dotclear est à la traine (la page des modules et des thèmes évolue très peu), et les modules Dotclear sont la plupart du temps des adaptations de fonctionnalités qui existent sur WordPress.
Je pense que j’attendrai la sortie de la version 2.2 pour me décider (si elle ne tarde pas trop).
Retour
31/05/10
Tout d’abord, je présente toutes mes excuses aux (quelques) lecteurs qui ont essayé d’accéder au blog depuis 5 jours : je viens de m’apercevoir que le serveur MySQL était tombé, rendant le blog indisponible. Et comme j’ai maintenant un serveur dédié, personne ne l’a remis en route avant ce soir…
Ensuite, le voyage de noces (au Canada) est malheureusement terminé, et je reprends donc le travail… et le blogging !
Mais avant de reprendre l’écriture de billets techniques, j’adresse ici un grand remerciement (avant les plus traditionnelles cartes de remerciements envoyées par la poste) à toutes les personnes ayant contribué à nous offrir un magnifique mariage. En particulier à la chorale ! Et pour clore ce billet, voici l’enregistrement du Sicut Cervus de Palestrina qui a suivi l’échange de nos consentements (enregistré avec le H4n Handy Recorder dont j’ai déjà eu l’occasion de parler).

