dimanche 17 avril 2011

JavaOne 2011 in Moscow. Review.

La semaine dernière j’étais en Russie, à Moscou, à la conférence JavaOne organisé par Oracle.

J’ai eu deux jours du plaisir technique. Entouré par les gens passionnés par la technique, j’ai pris une bonne dose de motivation.

La conférence se déroulait au centre de Moscou, au bâtiment épique de l’académie de science de la fédération russe (Российская Академия Наук - РАН) connu aussi sous le nom « Les Cerveaux » :)

Quelques points/événements clés que j’ai retenus à l’issue de la conférence sont présentés ci-dessous suivis de photos de ma collection.

Les nouveautés dans Java 7 présenté par une personne charismatique - Danny COWARD: join/fork mécanisme pour les traitements parallèles (map-reduce) ; le sucre syntaxique avec l’opérateur « Diamond » (<>) qui va faciliter la lecture du code qui utilise les génériques; le support de String dans l’opérateur switch ; les clauses catch avec la possibilité de préciser multiples exceptions.

Les standard Java EE 6 : avec l’API Servlet 3.0 (les appels asynchrones, configuration avec les annotations, le fichier web.xml est optionnel, l’utilisation du fichier web-fragment.xml pour les composants auto-configurable dans le contaneur, etc.), le support native de getsion de dépendence (DI) avec l’arrivé de la notation @Inject.


La présentation de Vladimir IVANOV (Oracle, Saint-Petersburg) sur la diagnostique et tuning du GC. J’ai noté un outil visualvm pour le profiling de performance des applications Java. Après la présentation, j’ai parlé avec cet ingénieur d’Oracle sur l’utilisation de Soft, Weak et Phantom références dans Java.

Une petite salle de repos pour les geeks :)

Et bien sûr, La Place Rouge avec le Kreml’.

Pour conclure, Oracle est motivé pour supporter le monde Java. L’organisation de la conférence est excellente, rien à reprocher. Merci Oracle pour ce JavaOne 2011.



dimanche 20 mars 2011

Integration tests with JUnit and Spring


Récemment dans le framework Spring j'ai trouvé une classe très utile pour faire des tests d'integration avec la base de données - AbstractTransactionalJUnit4SpringContextTests.
Cette classe contient plusieurs méthodes utilitaires pour tester le code qui interagit avec la BD. Voici la liste des méthodes que j'ai utilisé pour créer les tests d'intégration très élégante - faciles à implémenter et lire:
Je vais décrire la stratégie la plus facile à écrire une classe de test d'intégration est la suivante:
  1. Ecrire une classe de tests qui hérite de AbstractTransactionalJUnit4SpringContextTests
  2. Définir une méthode setUp avec l'annotation @BeforeTest. Cette méthode va utiliser executeSqlScript pour préparer la base de données en y injectant les données qui sont nécessaires pour l'exécution de votre méthode de test. Attention, à ne pas utiliser les ";" à la fin des lignes avec SQL. Les lignes qui se terminent par le ";" seront ignorés par Spring.
  3. La méthode de test qui va faire des "asserts" sur le nombre des lignes insérées dans les différentes tables impactés par les opérations DAOs. Pour faire ces asserts la méthode countRowsInTable est la plus appropriées.
  4. Pour que la base de données reste dans son état initial, il faut supprimer maintenant toutes les données qui ont y été ajoutées par deux étapes précédentes. Pour cela, il suffit de créer une méthode tearDown annotée par @AfterTest, dans cette méthode vous pouvez appeler la méthode généreusement offerte par Spring - deleteFromTables.
Regardez les fonctionnalités complètes de cette classe sur le site officiel de Spring ici.

samedi 29 janvier 2011

Démarrage d'un nouveau projet. Retour d'expérience

Récemment j’ai participé au démarrage d’un projet en Java. Nous avions la chance de prendre les décisions sur la création de l’usine de logiciel pour assurer la qualité du produit pour le client.

Je ne vais pas décrire toutes les étapes et tous les concepts que nous avons mis en place. Mais, je vais me limiter de présenter les outils que je n’ai jamais utilisés avant.

Wiki

Tout d’abord c’est – Redmine – un wiki d’entreprise. C’est un outil dont j’ai entendu parler depuis longtemps et j’ai l’utilisé un tout petit peu sur un projet sur lequel j’étais tout seul. Dès le démarrage du projet nous avons commencé à utiliser Redmine et nous avons réussi à motiver les développeurs de l’utiliser au quotidien. D’après ce que j’ai vu, les gens qui ont fait leur première page sur le Wiki y reviennent et l’utilisent plus régulièrement que ceux qui n’ont jamais écrit là-dedans. Je pense que cela s’explique par le fait d’être un auteur. Un auteur cherche en permanence d’améliorer son œuvre : ajouter une description d’un truc technique complexe, jouer avec la mis en page (surligner les informations importantes). Nous avons commencé par le plus simple. La page principale de notre wiki centralise et met à porter de main les informations sur l’infrastructure du projet :

  1. Le chemin vers le repository SVN
  2. URL, login et mdp pour les serveurs Hudson et Sonar.
  3. IP, login et mdp pour les bases MySql de test
  4. Le raccourci vers le répertoire du projet sur un serveur de fichier
  5. URL , login et mdp vers le serveur Nexus
  6. IP d’une passerelle SMTP utilisée
  7. Les HowTo’s sur la configuration d’Eclipse, Maven, Tomcat, etc.

Ces informations sont nécessaires tout au long du projet et sont utilisées par tous les membres de l’équipe. Désormais, je n’entends plus dans l’openspace les questions du genre : « C’est quoi le IP et le mot de passe du serveur MySQL ?» ou « Comment t’as fait pointer ton Maven en local vers le serveur Nexus ?». Toutes les réponses sont dans le Wiki. J’ai l’impression que les développeurs deviennent plus autonomes et par conséquent plus productif, ils savent où il faut chercher l’info.

L'intégration du Mylyn dans Redmine permet créer un boucle complet de la gestion technique du projet: Eclipse -SVN - BugTracker - Suivie du projet. Cette fonctionnalité n'est pas encore adaptée par notre projet, car cela nécessite la forte discipline et la rigueur des développeurs.

Un petit plugin textile de Redmine pour colorer le code source dans les pages wiki :


Vous remplacez le nom de la classe (xml, java, C#, python, etc) et les mots clés presents dans le texte seront coloré comme dans un IDE. Très pratique et très joli.

Tomcat 6.0 manager sous Ubuntu ne marche pas

Dans l'objectif d'automatiser le déploiement du war sur le serveur Tomcat 6.0, nous avons utilisé le plugin tomcat du maven. Voilà comment j'ai réussi:

  1. Installer l'application manager : sudo aptitude install tomcat6-admin
  2. Modifier le fichier $VOTRE_TOMCAT_INSTALL/conf/tomcat-users.xml comme suit, faites attention qu'il faut bien le rôle "manager"
  3. Redémarrer le serveur: sudo /etc/init.d/tomcat6 restart
  4. Mon erreur c'étais que je n'ai pas précisé le rôle admin. Et j'avais tout le temps l'erreur HTTP 403.

mardi 28 décembre 2010

Petit Bilan Annuel


Apres une longue période de silence, j’ai pris le temps d’écrire une petite article décrivant mon bilan annuel. Un bon exercice pour un peu formaliser les événements clés durant cette année.

L’année 2010 a été très dynamique. Les missions à Paris, Lannion, Kiev étaient très enrichissantes du point de vue professionnel et personnel.

A Paris j’ai pu participer au développement d’un gros projet informatique dans une équipe très motivée. J’ai pu voir le processus d’industrialisation à l’intérieur de l’usine de logiciel. C’est une expérience sublime.

Encore une fois, j’ai compris que le réussit du projet ne dépend pas du tout de la méthodologie mais surtout des individus qui y participent.

Une belle époque à Lannion… Les projets de télécoms pour FT. J’ai fait ma connaissance avec beaucoup de gens très sympathiques. La plage magnifique de Tréstraou à Perros-Guirec me manque beaucoup.

Kiev. Tout d’abord c’est un vrai plaisir de travailler dans ton pays natal. J’ai pu voir mes parents et mes amis 2-3 fois par mois. Pour ceux qui ont travaillé à l’étranger ça compte beaucoup. Les projets en mode off-shore. C’était compliqué.


2010 en images



Perros-Guirec, Tréstraou Paris, Parc André CitroenKiev, Pechersk, vue sur Mere-La Patrie


2010 c’était aussi une année sous le Mac. Je suis devenu un passionné des produits Apple. J’ai vendu mon âme au diable de Steve Jobs.

2010 c’est aussi une année des départs massifs de Teamlog. J’ai vu partir beaucoup de mes collègues chercher la chance ailleurs. Triste.

Parlons de technique. Cette année j’ai travaillé beaucoup avec les produits de Microsoft, surtout avec la plateforme .NET/C#. Les outils que je vous recommande fortement sont : Resharper - refactoring, dotTrace – mesurer les performances, Visual SVN for Visual Studio.

Et le futur… Continuer dans la technique. Apprendre python et italien.

Codez avec passion dans l’année 2011 !

samedi 1 mai 2010

Horaire de bus. Paris/IdF. Android

Bus Stop - une application qui peut vous bien faciliter la vie avec les bus en région Ile de France.
Cette application vous permet de connaitre en temps réel dans combien de temps passera votre bus préféré.



L’application est développée en Java pour le plateforme Android. L’auteur est un gars passionné par la technique et qui avait pas mal de souci avec des horaires de bus.

Pour l’installation je vous invite à consulter le site de l’application : http://spaceinvade.rs/

mardi 27 avril 2010

Teamlog/Open Paris. La nostalgie.

La terrasse du Ponant, la fin de la journée. Les bâtiments et constructions modernes cohabitent avec le ciel et les nuages. Harmonie...

Le parc d'André Citroën. Sans commentaire.


Toujours au Ponant, 8-ème étage, l'open space de l'équipe Siam. Les fênetres se donnent directement sur le parc d’André Citroën.



Sur deux photos vous pouvez distinguer les contours de la Tour Eiffel. Cela nous a challengé d’écrire le code de qualité, pour qu’il soit aussi beau, comme la Tour Eiffel à Paris :)

samedi 10 avril 2010

SSIIs où on aime la technique

Au début du mois de février, suite à ma décision de quitter Teamlog (actuellement OPEN), j’avais commencé à chercher une entreprise qui pourrait répondre à mes attentes professionnelles : faire des produits de haute qualité, utiliser les technologies modernes, être proche des communautés OpenSource et travailler avec les gens passionnés par l’informatique.

Dans ce post je voudrais partager les résultats de mes recherches des « bonnes » SSII dans la région parisienne. Les « bonnes » cela veut dire les sociétés intéressantes tout d’abord du point de vue technique.

J’ai vu en tout 7 entreprises (SSII).

Voilà la liste des SSII qui me semble être très attractifs pour les gens techniques :
1. SFEIR
2. Ideo Technologies

SFEIR – bien sûr, acteur très marquant dans le monde Java à Paris. Partenaire de Google, SpringSource et Microsoft, sponsor de JUG Paris – évènement incontournable pour les passionnés Java. SFEIR est certifié ISO 9001, utilise les approches d’industrialisation des développements. Ils participent aux phases de beta-testing de différents frameworks OpenSource(comme GWT pour Google). Et finalement, Didier GIRARD, le CTO de SFEIR - l’évangéliste technique connu dans le monde de geeks à Paris, attire beaucoup de personnes à rejoindre SFEIR.

IdeoTechnologies - une petite SSII qui m’a impressionnée. Ils étaient très professionnels lors de notre communication. Je sentais le respect vers les « techos » en discutant avec les différents gens d’Ideo.
CTO – passionné par la technique. Lors de mon entretien technique nous avons parlé de l’héritage en Hibernate, j’ai appris qu’on peut générer le PDF à partir de JavaScript. Ca fait plaisir de voir les directeurs qui gardent les mains dans le code, qui parlent avec passion de différences entre les modèles Java et JavaScript !

Ideo a une activité R&D assez intéressante. Ils sont des commiteurs principales de la bibliothèque SweetDEV™ RIA
Cette bibliothèque des composant AJAX est utilisée par leurs clients dans le secteur financière. Un modèle business très intelligent. Les clients utilisent le produit, investissent dans son évolution. Le produit devient mature et attirent des nouveaux utilisateurs/clients qui contribuent aux développements du produit à leur tour. Et ainsi de suite.

Si vous connaissez d'autres SSII qui ont le même d'état d'esprit, vous pouvez les rajouter dans les commentaires.

vendredi 9 avril 2010

DropBox : disque dur intelligent à distance

DropBox est une application qui permet de partager et synchroniser le contenu numérique.

Pout tous ceux qui travaillent sur plusieurs ordinateurs l’application DropBox pourra bien simplifier la vie.



Un cas d’utilisation classique d’utilisation de DropBox. Vous avez commencé la rédaction d’un rapport sur votre PC Windows à bureau. Vous voulez continuer votre travail chez vous. Avant de partir un simple « glisser-deposer » dans le répertoire DropBox et votre document va apparaître sur votre Apple Mac OS à la maison. Plus besoin des clés USB ou d’envoie par mail.

DropBox a une fonctionnalité de Public Folder et Public Link. Vous pouvez rendre un fichier dans votre répertoire Public de DropBox accessible via le protocole http à tout le monde ! Et tout cela, en un seul clique !

Très efficace et très pratique. Gratuit et fiable. DropBox est devenu presque un standard de-facto de synchronisation et de partage des fichiers.

Par contre, le contenu hyper sensible il faut mieux garder ailleurs.

lundi 1 mars 2010

Interviews techniques. Best practices pour les candidats

Suite à mon expérience avec le monde des SSII parisiennes, j’ai accumulé un certain nombre des idées et de remarques sur les entretiens techniques.

J’ai eu de la chance d’être présent sur les deux côtés des barricades : en tant que candidat cherchant des nouvelles missions et en tant que « conducteur » représentant l’entreprise qui voulait embaucher des spécialistes techniques.

Dans cet article je vais présenter mon expérience en tant que candidat.

Alors, vous êtes un candidat, l'ingénieur en informatique cherchant une nouvelle mission/poste.

Je vais laisser à côté le premier test technique que vous avez éventuellement passé avec le RH. Dans la plupart des cas, ce test est un QCM classique (la syntaxe du langage, possibilité du plateforme, les questions sur les bases de OOP). Ce test est nécessaire pour faire la première « brute » estimation de vos compétences. Ce test permettra d’éviter à l’entreprise de solliciter l’un de ces référents techniques ou architecte pour évaluer le niveau des connaissances de base du candidat.

Tout d’abord, pour réussir l’entretien technique il faut adapter une idée qu’une interview c’est un jeu. Pour vous ce jeu doit avoir 2 objectifs : répondre correctement aux questions et profiter de l’occasion pour parler avec une personne forte techniquement. En effet, les conducteurs des entretiens ce sont des personnes avec un bon niveau technique qui peuvent vous apporter beaucoup d’information nouvelle et intéressante. Notez toutes les questions sur lesquelles vous n’avez pas de réponse, n’hésiter pas à posez des questions à l’interwieur si le contexte est favorable (pas de contraintes de temps, par exemple). Cela montre que vous êtes toujours prêt à apprendre et curieux par rapport aux nouvelles technologies.

Si on vous pose la question et vous ne savez pas exactement la bonne réponse. Pas de panique. Essayez de réfléchir à la voix haute. Faites quelques hypothèses. Peut-être en cours de cette réflexion vous allez trouver la réponse ou la personne en face de vous pourrait vous indiquer la bonne direction. Mais, n’hésitez pas à dire fermement : « Je ne sais pas », si vous ne savez pas du tout où chercher la bonne réponse.
Très souvent on vous posera des questions pièges. Par exemple, « Quelle type de relations entre les objets préférez-vous : héritage ou agrégation/composition ? » Il n’y a pas une seule réponse correcte. Tout dépend du contexte particulier. Vous devez expliquer cela pour chaque type de relation en donnant un exemple.

Lors de vos réponses essayez de montrer votre culture technique, en s’appuyant sur les ouvrages, livres ou blogs des différents experts dans votre domaine.

N’hésitez pas à schématiser vos réponses ou vos réflexions. Les diagrammes UML simples ou juste des carrés avec des cercles suffiront. Les architectes adorent les schémas. :)

Après chaque entretien, faites des rétrospectives. Analysez vous-même vos réponses et le résultat de l’entretien. Notez bien les points que vous ne maîtrisez pas et réfléchissez comment vous pouvez les améliorer. Chaque entretien c'est un miroir qui reflète vos faiblesses. Oui, uniquement, les faiblesses. En informatique, il n y a pas une personne qui sait tout !

PS : L’article a été posté avec le support du café www.lacantochepaname.com, rue Réaumur.

lundi 18 janvier 2010

Podcasts pour les développeurs

Si vous êtes passionné par l’informatique et vous êtes prêt de rester « avec l’informatique » en dehors du travail, les podcasts peuvent vous aider à diversifier votre façon de faire la veille technologique. Personnelement, pour moi les podcasts est une meilleure solution pour profiter du temps que je passe en transport en commun.

Je voudrais mentionner dans cet article quelques podcasts informatiques que j’écoute régulièrement.

Si vous connaissez des autres podcasts intéressants, vous pouvez les rajouter dans les commentaires de cet article.