Graine de kawa.
16
DEVOXX
Filed under: conférence | Tags: | novembre 16th, 2011
Je crois bien que l’année prochaine c’est la bonne pour aller à DEVOXX :
15
E-Réputation : GreenIvory lance la version Do It Yourself de VoiceObserver
Filed under: Carpentier Xavier | Tags: | mars 15th, 2011
Ne laissez pas aux internautes le pouvoir de détruire votre marque.
GreenIvory (ma boite ;-) sort VoiceObserver en version Do It Yourself. J’ai participé au développement du produit, je me suis occupé de mettre en place Facebook connecte (avec GWT).
Le produit est vraiment bien, mais c’est un peu subjectif.
Pour le voir par vous même ou simplement pour en savoir plus, allez sur :
- le site web du produit : http://www.voiceobserver.com/
- la description du produit : http://www.greenivory.fr/actualites/2029-e-reputation-greenivory-lance-la-version-do-it-yourself-de-voiceobserver.html
- ou sur le blog de GreenIvory : http://blog.greenivory.fr/
Amusez-vous bien !
6
Gestion de stock GAE – « Server side »
Filed under: Cloud Computing | Tags: Gestion de stock (3), Google App Engine (6), Java (9) | mai 6th, 2010
Les APIs sur le « Server side » ne sont pas évidentes à définir. J’étais partie sur du JPA pour la persistance et Guice comme framework d’injection de dépendance (vous savez le fameux @Inject), ça me paraissait assez judicieux.
Sauf que je dois faire des compromis. JDO est mieux adapté à GAE. Guice n’est pas totalement supporté sur GAE et pour Spring je n’ai pas encore vraiment chercher les infos.
Donc je prend le postula de partir sur du DAO classique (Interface/classe Implémentation). Pour l’injection de dépendance on verra plus tard. Il y a une solution détourné avec Guice : importer les sources, modifier le try/catch d’une exception et l’embarquer.
6
Formation Hibernate – Jour 2 et 3
Filed under: Hibernate | Tags: Hibernate (2), Java (9) | mai 6th, 2010
Jour 2 : de la théorie à Go Go !
LAZY LOADING et FETCH
Jour 3 : Encore de la théorie : Le cache
A utiliser avec parcimonie, mais peut être utile quand on a déjà une application qui tourne. Alors il faut l’utiliser pour optimiser l’application après, longtemps après la 1ére mep ! voir ici
19
Formation Hibernate – Jour 1
Filed under: Hibernate | Tags: Hibernate (2), Java (9) | avril 19th, 2010
8h15 : je ne connait pas l’heure à laquelle la formation commence. J’entre dans la salle pour y trouver le formateur, seul, avec 4 PCs à configurer à lui tout seul. Il me dit que la formation est à 9h00. Mais il ne refuse pas mon aide pour brancher et démarrer les postes ;-) !
Hibernate et le Mapping Objet/Relationnel
Olivier Hanny, notre formateur, nous a fait le 1/3 du tour de la question ;) :
- Qu’est-ce que la persistance ? Définitions de l’ORM…
- Granularité Objet = Class (Table, idem select *) <> Granularité BDD = Column
- Alternatives à Hibernates : JPA (Spécification dont Toplink est l’implémentation de référence, Hibernate en est aussi), JDO, etc.
Puis il est rentré dans le détail de la configuration : hibernate.cfg.xml, … avec des TPs à la clé !
Pour conclure, dans l’après midi, sur des notions théoriques de modélisation/configuration (Objets vs Tables : one-to-many, many-to-one, one-to-one et tout ça en uni et/ou bidirectionnelle)
Bref, une journée théorique, mais aussi pratique. Le matin je me suis bien débrouillé en TP mais l’après-midi, il est vrai, que j’ai un peu trainé la patte. Beaucoup de notions pour un lundi, mais dans l’ensemble c’est très enrichissant et surtout utile !
J’ai hâte d’être à demain pour comprendre un peu mieux cette histoire du : « quand tu mets un LOG ça marche et quand tu l’enlèves, ça plante…;-) ». Il nous a donné une explication rapide (non-initialisation des objets détecté par Hibernate) mais je ne crois pas avoir tout compris…
Si vous voulez en savoir plus sur le contenu de la formation, cliquez-ici ! La formation est organisé par la société Orsys, et je trouve les supports de formation tout simplement géniaux.
26
GAE SDK 1.3.2 Release
Filed under: Cloud Computing, Python | Tags: Google App Engine (6), Java (9), Python (4) | mars 26th, 2010
Google vient d’annoncer une nouvelle version de sont GAE SDK (1.3.2), nouvelle méthode et accroissement de capacité pour les éléments suivant :
- Blobstore API
- URLFetch API
- Mail API
- Task Queue API
23
Gestion de stock « in the cloud »
Filed under: Cloud Computing | Tags: Gestion de stock (3), Google App Engine (6), Java (9) | mars 23rd, 2010
Gestion de stock de littérature…
Comme pour le site de mon association, un ami me demande de réfléchir à une solution de gestion de stock de livre, mais cette fois-ci pour son association.
J’ai plein d’idées ! Voici les technologies que je voudrais tester : Google App Engine (Java), GWT ou GXT, Play!Framework, Vaadin, … il y’a tellement de chose bien à faire avec ces différentes technos, pour la partie front-office…
Ensuite je pensai utiliser le JPA de base (celui fournit par Google App Engine) pour ce qui est du mapping objet / BigTable, ou Siena (persistance à la python), Spring comme conteneur léger…
Et PDFJet pour la sauvegarde des rapports dans un format pdf, seul outil entièrement supporté par GAE pour la création de PDF, pour le moment ;-) !
Enfin tout ça reste quand même à étudier. Je dois d’abord établir un petit modèle de donnée léger et qui colle bien avec la solution de stockage de chez Google.
Ensuite je ferais le trie des frameworks, outils et autres machins bien sympa a connaître ! De quoi avoir une petite expérience sur ces sujets. Et surtout faire du dév, concevoir, créer, rêver, refaire le monde quoi !
Tout en répondant au besoin, bien sûr :-| !!!
Je ferais peut-être un petit tour au niveau des langages dynamiques supportés par la JVM : Groovy (avec Gaelic), Scala, et autre ? Histoire de faire du zèle…
Après il faut voir les performances de tout cet ensemble de super nouvelles technologies ?!
Je vous détaillerai mes choix au fur et a mesure de mes recherches et de la réalisation.
_____________
* GWT : Google Web Toolkit, IHM écrit en Java, traduit en Javascript et compréhensible quasiment par tous les fureteurs (browser, exit IE5 et 6)
* GXT : GWT + ExtJS, la super librairie js
* Play!Framework : enfin le framework Java purement orienté Web, full-stack et qui ne « hack » pas les protocoles déjà bien établis : HTTP ;-)
16
Google App Engine SDK 1.3.1…
Filed under: Cloud Computing, Python | Tags: Django (2), Google App Engine (6), Java (9), Python (4) | février 16th, 2010
Google améliore son datastore (curseur, résultat de requête > 1000 lignes, etc.) et fournit un outil de test dans sa dernière release (1.3.1) pour son offre de cloud « gratuite » nommé Google App Engine pour les langages Python et Java !
J’attends les retours d’expérience de la part de la communauté app-engine-patch avant de l’intégrer dans mon projet de site associatif. Il faut jouer la carte de la sagesse dans ces cas là, Wait & See !
Pour plus d’information :
http://googleappengine.blogspot.com/2010/02/app-engine-sdk-131-including-major.html
http://blog.xebia.fr/2010/02/15/revue-de-presse-xebia-147/#GoogleAppEngineSDKAmliorations
12
Maven 2 au ChtiJUG et dans Lescastcodeurs !
Filed under: Maven | Tags: Java (9), Maven (2) | février 12th, 2010
« On ne présente plus Maven ! »
Et pourtant, je m’aperçois que beaucoup (moi y compris) ont du mal avec ce super outil !!
Maven est un outil de build né de l’expérience acquise sur le marché des outils de build comme Makefile, Ant etc. Il en reprend les fonctionnalités principales en y ajoutant d’autres presque indispensables : test automatique, génération de rapport et j’en passe et des meilleurs.
En juin 2009, Arnaud Héritier (commiter chez Apache Maven) est venu nous présenter le projet Maven 2 au ch’ti JUG. Je souhaite vous faire part de ce que j’en ai retenu. Histoire de rallier quelques développeurs Java à la communauté utilisatrice de l’outil.
D’abord pourquoi Maven ?
- Éviter les reconstructions manuelles
- Automatiser le maximum
- Standard de la chaîne de construction
- Gestion des dépendances (librairies, API, dependencyManagement, scope import)
- Découplage en différent module
- Maven n’est pas seulement un outil de construction, et pas seulement le remplaçant de Ant
Et pourquoi pas Ant ?
- Script trop long (grande taille de fichier) et trop complexe
- Faiblesse du point de vu de la maintenance
- Problème de lecture du à l’import d’autre script
Pourquoi l’utiliser en entreprise ?
- Standard de fait !
- Rationalisation du coût de construction
- Facilité de l’intégration continue
- Utilisation des fonctions de qualité de code
- Automatisation du processus de release (passage de tests, construction du WAR)
- Partager le paramétrage : juste descriptif, logique d’héritage avec le Pom parent
Mise en place de Maven :
- KISS : Keep It Simple, Stupid !
- Partir de rien !
- Éviter la « sur architecture » !
- Créer des référentiels (proxy) pour sécurisez : gestionnaire de proxy, pour éviter le problème réseaux lors de téléchargement de nouvelle librairies par les équipes de développement
- Utiliser Sonatype Nexus ou Frog Artefact (ou Apache Archiva) pour gérer le proxy
- Industrialiser au maximum
- Utiliser les plugins pour modifier le comportement de maven, oser créer des plugins
- Partager les modèles entres les équipes
- Utiliser les tests, et le reporting :
- JUnit, TestNG – tests unitaires
- Selenium, Cannoo – tests d’IHM
- Fitnesse, Greenpepper – tests fonctionnels
- SOAUI – Tests des webservices
- Démarche de qualité :
- Checkstyle – Uniformisation du code (Attention au différence entre règles IDE et règles Maven)
- PMD, Findbug, Clirr – Déceler les mauvaises pratiques
- Cobertura, Clover – Couverture de code par les tests
- Deux visions de démarche de qualité :
- Le contrôle : la construction ne passe pas si certain critère ne sont pas atteints
- Le reporting : site web ou serveur dédié, Exemple : Sonar ; ne casse pas le build par des contraintes
Les serveurs d’intégration continue :
- But : prévenir les bogues, améliore le cycle de développement en réduisant les corrections en phase de robustesse
- Intégration, test, contrôle de qualité
- Lancement de la construction à chaque commit possible ou paramétré avec un délai
- Les logiciels :
- Hudson : coder à la base pour le projet Glassfish, très en vogue et très intuitif, facile à mettre en œuvre. Pour le tester en local : java –jar hudson.war (déployer sur http://localhost:8080/)
- Bamboo : payant
- Teamcity de Jetbrain, « build incassable »
- Continuum : Apache, vieux produit pas très conviviale mais bien intégrer avec maven
- CruiseControl : vieux produit !
Comment planter son projet avec Maven ?
- En n’utilisant pas les conventions de Maven 2 (target, héritage, répertoires src…)
- En ayant trop de sous modules avec des version différentes (naissance de nouveaux projets involontairement)
- En ayant trop de modules dans le même projet : pénalise la performance
- En confondant dependencies et dependencyManagement
- En confondant plugins et pluginManagement
- En utilisant massivement antrun : empêche la réutilisation
- En utilisant à outrance les profils : rend dépendant de l’environnement
- En utilisant trop le reporting de qualité sur des projets déjà existant
- En mettant tout et n’importe quoi dans le POM
- En faisant des releases à la main
Comment réussir son projet avec Maven ?
- Utiliser l’héritage « naturel »
- Bien définir les dépendances, être minimaliste !
- Fixer les dépendances dans le dependencyManagement
- On peut utiliser aussi le plugin reactor pour ne compiler que ce qui as été modifié
Les concurrents de Maven :
- ANT + IVY
- Easy Ant
- Gant
- Gaddle
Remarque : ils utilisent tous une logique de scripting (la souplesse au prix du sacrifice de la standardisation).
Maven 2.1.0 et après :
- Sortie de Maven 2.2 : prochainement, avant ou pendant l’été (Java 5 obligatoire pour l’exécution de Maven)
- Maven 3 en cours de développement (Non, ne fuit pas !) :
- (car) Compatibilité ~ 100 % avec Maven 2
- Correction de l’écueil : encapsulation au IDE (Eclipse en particulier)
- Cycle de vie prédictible
- Refonte de la gestion des Artifacts (Mercury)
- Gestion http / WebDav
- Abstraction du descripteur de projet
- Migration du framework d’injection de dépendance Plexus vers Guice (de Google, se prononce « Juice »), ou XBeans (XBR ?)
La documentation :
- Definitive Guide (bientôt en français) : http://www.sonatype.com/products/maven/documentation/book-defguide
- Better Builds with Maven
- Maximum Maven : http://blog.xebia.fr/2009/04/30/maximum-maven/
Ne pas hésiter à créer s’est propre plugin Maven :
- http://dcabasson.developpez.com/articles/java/maven/introduction-maven2/
- http://blog.aheritier.net/les-nouveautes-de-maven-210/
- Plugin Maven pour Eclipse (m2eclipse) : http://docs.codehaus.org/display/M2ECLIPSE/Home
Connaissance général sur Maven :
- POM : Project Object Model
- Phase principales dans le cycle de vie de Maven = compile, test, package, install, deploy
- Convention de répertoire (source wikipedia) :
/src: les sources du projet/src/main: code source et fichiers source principaux/src/main/java: code source/src/main/resources: fichiers de ressources (images, fichiers annexes..)/src/test: fichiers de test/src/test/java: code source de test/src/test/resources: fichiers de ressources de test/src/site: informations sur le projet et/ou les rapports générés suite aux traitements effectués/src/webapp: webapp du projet/target: fichiers résultat, les binaires (du code et des tests), les packages générés et les résultats des tests
Personnellement j’utilise Maven 2 dans ma société et j’en suis très content, les deux seul soucis que je peut reproché à l’outil c’est qu’il est long à exécution et que le pom.xml peut devenir vite très complexe.
NEWS !
- Un livre en français vient de sortir sur le sujet chez Pearson : Apache Maven.
- Arnaud H. dans lescastcodeurs nous parle de Maven dans la rubrique « Les mains dans le cambouis » .
1
Django sur Google App Engine !
Filed under: Cloud Computing | Tags: Django (2), Google App Engine (6), Python (4) | février 1st, 2010
Trésorier adjoint d’une association qui n’est pas encore présente sur le WEB, je suis amené à créer leur site. L’idée est de construire une vitrine, avec comme services : la newsletter, l’agenda, la prise de contact, etc. Un grand classique dans le monde du Web me direz-vous.
J’ai étudier la question et les différentes possibilitées :
- CMS ou un moteur de blog parait être une solution adapter à ce genre de problème : Joomla, Drupal, WordPress ou Dotclear.
- Le développement maison, tout à la main comme un codeur fou ! :)
J’ai opté pour la deuxième solution. Malgré la lenteur de réalisation , elle donne plus de souplesse. Et en plus elle me permet de découvrir un nouveau langage et des nouvelles technologies : ça c’est cool !
Mon choix s’est porté sur Google App Engine (offre « gratuite » de cloud par Google) pour l’hébergement et Django pour le framework Web (Python) avec un projet « Patch » qui permettait d’associer les deux : app-engine-patch.
