Trees : application d’analyse de cycle de vie participative (Part 1/2)

Pour ce sprint "seed", il s'agit de pouvoir présenter et décrire un produit fini en fonction de ses constituants, puis de considérer récursivement les constituants comme des produits. Objectif : décrire tout produit fini comme une arborescence vers ses matières premières les plus élémentaires. Cette analyse, dite analyse par attributs, est utilisée particulièrement dans le domaine de l'éco-conception. La stack est composée des trois éléments principaux suivants : Neo4j, Spring Boot et React.

Insérer un code personnalisé dans un job Talend avec tJava

Dans cet article, nous allons voir comment insérer du code java dans un job Talend afin d’étendre ses fonctionnalités. Talend open studio est une plate-forme d’intégration de données, basée sur le langage java. C’est un outil qui permet de répondre à toutes les problématiques liées au traitement de données : ETL (Extraction, Traitement et chargement de données), EAI (Echange de données Inter-Application) et synchronisation de données. L’avantage des solutions talend réside dans leur facilité de prise en main, leur souplesse, leur flexibilité et un excellent résultat graphique des jobs grâce aux interfaces des composants.

Fluentlenium

Comment automatiser les tests d'IHM d'une application web ? En utilisant Selenium bien sûr ! Cependant, ce dernier n'est pas toujours simple à prendre en main. Pour faciliter son utilisation, il existe une bibliothèque java (française) : Fluentlenium. Seule contrainte, écrire ses tests en java. Celle-ci s'intègre simplement avec JUnit, TestNG, etc et permet d'utiliser AssertJ entre autre. L'exemple fournit par le site présenté dans ce post intègre JUnit et AssertJ. Il est possible d'utiliser d'autres bibliothèques pour ceux qui le souhaitent.

Java 8: Collections, Stream et opérations IO par l’exemple. Déboguer les streams

 

Ce billet aborde par la pratique le nouveau design pattern de gestion des collections en java 8 : Stream.

En java 8, le design iterator est abandonné au profit d'une meilleure conception basée sur le Stream.

Nous pouvons dire brièvement, qu'en java 8, la programmation impérative est remplacée par la programmation déclarative (penser au langage  SQL).

Les exemples démos choisis sont des opérations sur les répertoires et fichiers avec des assertions sur le nombre de lignes et sur les contenus de ces fichiers.

Nous donnons aussi une manière de déboguer les streams.

Voici les ingrédients utilisés dans ce blog: Java 8, Stream, l'api AsssertJ pour le test Junit.

Utiliser les tests fonctionnels avec Behat dans tous vos projets web

A.                Installation de Java

 

Pour pouvoir utiliser Selenium qui nous permettra d’utiliser le navigateur voulu lors des tests, il faut préalablement avoir la versoir 7 de Java installé. Afin de connaître la version installée sur votre poste, lancez la commande suivante :

java --version

Si vous n’avez pas JRE 7 au minimum vous pouvez le télécharger à cette adresse :

http://www.oracle.com/technetwork/java/javase/downloads/java-se-jre-7-download-432155.html

Une fois installé, il faut ajouter la variable JAVA_HOME dans les variables d’environnement :

  • Clic droit sur ordinateur -> propriétés
  • Paramètres système avancés
  • Variables d’environnement
  • Dans les variables système choisissez « Nouvelle »
  • Entrer le nom JAVA_HOME
  • Entrer le chemin vers le fichier bin du dossier Java
  • Appliquer les changements

Pratiquons le Design Pattern Delegate (ou Façade) : Démos avancées

 

Le design pattern delegate ( ou façade ) est un pattern très utilisé et facile à expliquer.

Deux démos, une simple et une seconde très avancée, vous permettent de pratiquer sereinement ce design sans difficulté.

Ainsi, les ingrédients de ce blog sont divisés en deux parties:

  • La première partie, contenant une démo simple, n'exige aucun prérequis (mis à part un peu de java 8).
  • La seconde partie, contenant une démo très avancée, nécessite de connaître un peu spring-batch et en particulier son FlatFileItemReader (retrouvez un article sur le sujet ici).

Spring-Batch (Part III) : Comment lire ou parser efficacement divers fichiers CSV avec RecordSeparatorPolicy?

 

L'objet de ce billet est de vous présenter les "best-practices" afin de lire les divers de formats de fichiers csv du simple à l'exotique.

Le reader de spring-batch doit être configuré (et uniquement si possible 🙂 ) pour gérer des formats particuliers de fichiers csv.

La démarche reste identique pour les autres formats de fichiers.

Comme il est difficile de traiter tous les cas pour un blog, la démo ci-après se focalise sur ce fichier csv:

Spring-Batch (Part II): Validation and Skip Policy. Ou comment gérer les données non valides dans un batch?

Après la première partie sur les tests unitaires du reader de Spring-Batch, nous passons à la validation des données input.
Ce second volet exige un minimum de connaissances sur spring & spring-batch.

Nous tentons de relever plusieurs défis majeurs correspondants aux attentes en production:

  • identifier avec précision le numéro de la ligne invalide (non traitée par le batch lancé la veille),
  • générer un rapport exploitable du déroulement du batch (exécutée la nuit),
  • porter en base les erreurs rencontrées en traçant correctement leurs causes exactes,

Nous nous posons la question de la validation des lignes lues par le Reader et aussi comment définir une politique d'éviction (skip) de ces lignes non valides.

En franglais, c'est la question validate & skip policy dans les batchs.

Ce sont deux notions bien distinctes mais fort bien liées.

Date Java8: Exemples de manipulation des dates en java 8

L'un des changements importants en java 8 est l'introduction de nouvelle Api (JSR 310) pour la gestion des dates.

La nouvelle api datetime introduite dans java 8 s'est inspirée de Joda-Time (cette dernière est très utilisée dans les projets).
Ceci dit, l'api java.time de java 8 est différente de Joda sur certains détails.

A ce propos, l'auteur de Joda-Time (Stephen Colebourne) a participé à la réalisation de la  JSR 310.

En effet, la pratique de l'api java.util.Date (donc pour les version java <8) a mis en évidence que son design est assez déroutant, voire peu intuitif, sur certains points:

  • les années des dates démarrent de 1900,
  • les jours commencent à 1, les mois à 0,
  • pas thread safe,
  • sans parler de la gestion du lenient.

La nouvelle api java date & time est donc guidée par ces trois axes:

  • domain driven design (voir site oracle pour plus de précisions),
  • immutabilité renforcée pour garantir thread safe,
  • séparation des calendriers et chronologies.

L'objet de ce blog est de vous donner quelques concepts avancés par des exemples sans rentrer dans la théorie.

Notez donc que ce billet n'est pas structuré comme une introduction à l'api java.time.

JBehave, BDD et test d’acceptation/acceptance: Démo pratique en 20 min

blog_jbehave_bdd_titre1  blog_jbehave_jira_titre1b blog_bdd_titre2

 

Nous nous intéressons dans ce billet à l'utilisation des tests d'acceptation et le concept BDD (Behaviour Driven Development) implémenté par le framework JBehave.

Nous le pratiquons au cas particulier d'une entreprise morale ayant plusieurs établissements souhaitant ajuster automatiquement l'effectif global en fonction du turn-over effectif dans ses divers établissements (simpliste pour que le billet reste accessible).

Notre démo traite le scénario suivant avec un langage (naturel) d'acceptation proche de celui de la maîtrise d'ouvrage (MOA).

Voici donc les étapes du scénario inspiré de mon article sur design pattern observer.