Comment ne plus avoir de NullPointerException en Java ?

NullPointerException : l’erreur la plus courante dans un programme Java. On est tous à un moment ou à un autre tombé sur cette exception. Malheureusement, ce n’est qu’en production à 4h du matin qu’elle arrive. On corrige donc le bug suivant :

MonObjet monObjet = null;
…
monObjet.maMethode(); // => NullPointerException

Par un rapide :

if(monObjet != null) {
  monObjet.maMethode();
}

Ce correctif est tout à fait honorable, mais pourquoi ne pas essayer de ne plus avoir aucune exception de ce type ?

Il existe plusieurs méthodes validées par le compilateur pour l’éviter, et donc avant la mise en production. Aucune n’est nouvelle, certaines controversés, mais elles sont toutes étudiées dans la suite de cet article.

(Lire la suite…)

Quelques niouses (en) Ruby du mois de Juillet

C’est quoi cet article ? Facile ! Un résumé de l’actualité autour de Ruby du mois passé, pour les techos et les geeks pressés. Retrouvez moi sur ce blog pour des infos de techos à techos.

Pour les plus pressés, une seule chose à retenir pour cette brève : Ruby 1.8 et Ruby 1.9 ont été mis à jour, pensez à upgrader.

(Lire la suite…)

Quelques niouses (en) Ruby du mois de Juin

C’est quoi cet article ? Facile ! Un résumé de l’actualité autour de Ruby du mois passé, pour les techos et les geeks pressés. Retrouvez moi sur ce blog pour des infos de techos à techos.

Pour les plus pressés, une seule chose à retenir pour cette brève : Mettez à jour vos Rails 2.3 et 3.0.

(Lire la suite…)

La programmation haute performance n’est-elle réservée qu’à une élite de développeurs C++ ?

Récemment un papier d’étude de Google UK a été publié sur la performance des langages de programmation JAVA, Scala, C++ et Go (Loop Recognition in C++/Java/Go/Scala). Dans ce papier, les performances des langages sont comparées sur la base d’un algorithme de recherche de boucles dans un graphe (Algorithme de Tarjan).

Principalement basé sur la performance d’exécution d’instructions séquentielles (boucles), la gestion de la mémoire, le temps de compilation et le nombre de lignes de code écrites cette étude montre que pour arriver à des hautes performances en C++ les optimisations techniques (au niveau du langage) deviennent trop compliquées pour le résultat produit. Comme le dit Robert Hundt :

 

We find that in regards to performance, C++ wins out by
a large margin. However, it also required the most extensive
tuning efforts, many of which were done at a level of sophistication
that would not be available to the average programmer.

Cependant, cet article a été critiqué sur son use-case peu pertinent et sur la validité des résultats. Quand même, C++ est le ++ fort ! Bien qu’il ait été maladroit, ce cher Robert a soulevé un point très intéressant : la programmation haute performance n’est-elle réservée qu’à une élite de développeur C++ ? Le développeur moyen peut-il espérer développer des applications haute performance ?

(Lire la suite…)

L’open space m’a sauvé

Un responsable de département d’étude avait fait venir un consultant afin d’identifier les obstacles à une meilleure productivité pour son nouveau projet développé en agile. Après quelques échanges à la machine à café, il lui proposa : “le mieux est que je vous accompagne pour faire le tour des bureaux. Vous verrez qu’il y a sacrément du monde sur le projet Neutrino !”
(Lire la suite…)

A la recherche de nouveaux vaccins

Il y a peu, je participais à une réunion de travail impliquant une trentaine de personnes et j’ai fait une observation qui m’a intrigué. Avez-vous remarqué ce qui se produit lorsqu’un téléphone portable sonne au cours d’une réunion ?

  • La personne propriétaire du portable l’éteint rapidement
  • Tous ceux qui ne l’avaient pas encore fait vérifient leur portable et activent discrètement le mode silence.

Voilà un exemple de mesure préventive particulièrement efficace! Dans les entreprises où l’on respecte un certain standard de réunion, l’exception que constitue la sonnerie d’un portable ne se produit qu’une seule fois, pas deux. La première “infraction” protège le groupe de toute nouvelle occurrence. Elle agit en quelque sorte comme un “vaccin” sur le fonctionnement du groupe en réunion.

Quelles conditions faut-il réunir afin de créer d’autre vaccins de ce type au sein d’une équipe ? (Lire la suite…)

Rails += Tests

Si vous avez déjà créé une application Ruby on Rails, vous avez déjà dû voir un étrange répertoire : tests.

N’ayez pas peur, tout a été fait pour faciliter la mise en place de tests de bout en bout avec Rails.

Je vais donc vous donner les méthodes que j’apprécie et que je considère efficaces pour l’écriture de tests en Rails. Que vous soyez novices ou expert, j’espère pouvoir vous en apprendre un peu.

Tous les exemples donnés seront pour Rails 3, mais ils sont pratiquement tous compatible Rails 2.

Le code source des exemples est disponible sur ce github.

(Lire la suite…)

BigData : la fin des architectures basées sur les processus métiers?

Le BigData, une nouvelle (r)évolution pour les entreprises?

McKinsey a publié récemment un rapport sur l’avènement du BigData comme nouveau paradigme de compétition entre les entreprises.

L’analyse massive et le développement du capital informationnel (le BigData) deviendrait un nouveau levier pour la productivité, l’innovation et la croissance.

(Lire la suite…)

La bureautique Web, utilisable ?

La collaboration sur la base d’outils Web est très en vogue depuis la vague Web 2.0. Les réseaux sociaux sont devenus des outils d’échanges incontournables. Et l’usage de WebMails et WebCalendars est largement entré dans les mœurs, au moins pour un usage grand public.

La bureautique Web existe, quant à elle, depuis environ 5 ans. Dans les premiers temps, le développement d’une suite logicielle en JavaScript m’a paru une véritable prouesse technologique : je me souviens d’un effet « waouh » devant les premières version du tableur Google Spreadsheet. Mais on peut se demander si ces outils sont réellement utilisables dans un contexte professionnel : je vous propose quelques éléments de réponse dans ce billet.

(Lire la suite…)

Le story-board comme référentiel projet ?!

Si vous avez lu le whitepaper IHM d’OCTO vous êtes certainement familier avec la notion de story-board, un des livrables des chantiers Ergonomie de nos projets. Le story-board, outil de travail de l’ergonome pour proposer des idées et concepts est un livrable qui se place en entrée de la création graphique (habillage des écrans).

Si nous en restons là le stoy-board est sous-exploité. Or il peut être bien plus important et structurant dans nos projets jusqu’à être un référentiel projet à part entière.

Comment ? Pourquoi ? Des exemples ? C’est tout l’objet de cet article, partager les usages détournés, prolongés des story-boards et en particuliers sur nos projets mobiles où la part d’ergonomie est cruciale et où le story-board est essentiel.

(Lire la suite…)