<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3244191734190455702</id><updated>2012-02-16T22:09:42.547-05:00</updated><category term='serialisation'/><category term='serializable'/><category term='Pattern and Practices'/><category term='serialversionuid'/><category term='serialization'/><category term='POJO'/><category term='programmation'/><category term='java'/><category term='ajax'/><category term='Plain Old Java Object'/><category term='random'/><category term='génie logiciel'/><title type='text'>Journal du programmeur</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://journalduprogrammeur.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://journalduprogrammeur.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jpgravel</name><uri>http://www.blogger.com/profile/15364119484029139355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_jyWFGwn4k64/S70V7Ud_ZLI/AAAAAAAAAEc/6eIpx0U4reA/S220/jpg-201004.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3244191734190455702.post-5649173498323297121</id><published>2009-06-14T05:50:00.000-04:00</published><updated>2009-06-14T07:04:20.963-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programmation'/><category scheme='http://www.blogger.com/atom/ns#' term='POJO'/><category scheme='http://www.blogger.com/atom/ns#' term='Plain Old Java Object'/><title type='text'>Sortie de Pojo Maker</title><content type='html'>Je viens de publier la première mouture de &lt;a href="http://pojomaker.sourceforge.net/"&gt;Pojo Maker&lt;/a&gt;, mon second projet SourceForge. Ce petit utilitaire permet de créer des objets java avec une simple ligne de commande. Pour l'utiliser, c'est assez simple. Il suffit de mettre quelques paramètres à la ligne de commande et les objets sont créés selon la structure de répertoire du package configuré. Par exemple:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pojomaker --package-name=net.sf.projet.entities --connection=jdbc:derby:dossier_bd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Créera la structure de dossier suivante dans le répertoire en cours: net/sf/project/entities. Les fichiers de classes seront enregistrés dans ce dossier et auront comme nom de package net.sf.project.entities (je crois que c'était évident).&lt;br /&gt;&lt;br /&gt;L'application offre quelques fonctionnalités intéressantes. Entre autre, les colonnes en lecture seules se voient créées avec un mutateur protected, ce qui empêche qu'on ne modifie une colonne auto incrémentée lors de l'exécution.  De plus, si une colonne de type varchar est détectée, une verification sera faite au moment de l'exécution pour savoir si on dépasse la capacité du champs de base de données et une constante est créée pour indiquer la taille maximale du champs. Quand un dépassement est détecté, selon le paramètre saisi à la ligne de commande, un avertissement est envoyé à la console de débogage, une exception est lancée ou  le dépassement de capacité n'est pas vérifié, selon le cas.&lt;br /&gt;&lt;br /&gt;J'ai fait ce programme dans l'esprit de &lt;a href="http://btb.sourceforge.net/"&gt;Bridge to Babylone&lt;/a&gt;, mon premier projet SourceForge. Je prévoir que les deux projets seront parfaitement alignés d'ici quelques semaines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3244191734190455702-5649173498323297121?l=journalduprogrammeur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://journalduprogrammeur.blogspot.com/feeds/5649173498323297121/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/06/sortie-de-pojo-maker.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/5649173498323297121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/5649173498323297121'/><link rel='alternate' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/06/sortie-de-pojo-maker.html' title='Sortie de Pojo Maker'/><author><name>jpgravel</name><uri>http://www.blogger.com/profile/15364119484029139355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_jyWFGwn4k64/S70V7Ud_ZLI/AAAAAAAAAEc/6eIpx0U4reA/S220/jpg-201004.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3244191734190455702.post-2658678077207906175</id><published>2009-02-11T19:07:00.000-05:00</published><updated>2009-02-11T22:11:00.905-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='serialversionuid'/><category scheme='http://www.blogger.com/atom/ns#' term='serialization'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='programmation'/><category scheme='http://www.blogger.com/atom/ns#' term='serialisation'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='serializable'/><title type='text'>SerialVersionUID</title><content type='html'>Qu'arrive-t-il quad on implémente l'interface Serializable en Java? Qu'arrive-t-il quad un étend une classe qui elle-meme implément Serializable? C'est simple, si on ne fait pas attention, le compilateur nous rappelera sans cesse d'ajouter un champs serialVersionUID avec ce doux message:&lt;br /&gt;&lt;blockquote&gt;The serializable class MaClasse does not declare a static final serialVersionUID field of type long&lt;/blockquote&gt;Il y a deux façon que je connaisse de se débarrasser du message en question. Soit on ajoute l'annoation &lt;span style="color: rgb(0, 0, 153);"&gt;@SupressWarnings&lt;/span&gt;(&lt;span style="color: rgb(0, 102, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;serial&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"&lt;/span&gt;) ou encore on obéit et on met en place le champs demandé.&lt;br /&gt;&lt;br /&gt;Dans la documentation de l'API de Java, on recommande au programmeur de déclarer ce champs de façon privée. Si ce champs n'est pas déclaré, le compilateur se chargera d'en générer un d'office. Ce numéro peut varier d'un compilateur à l'autre ou suite à une modification mineur de la classe qui ne touche pas ses champs internes. Ce changement causera alors une exception si on tente de désérialiser un objet qui avait été sauvegardé avec une compilation précédente. On désire évidemment éviter cette situation. Voilà pourquoi il vaut mieux que le programmeur contrôle ce champs et modifie sa valeur quand c'est vraiment nécessaire.&lt;br /&gt;&lt;br /&gt;Suite à quelques recherches, j'ai remarqué deux écoles de pensées. La première consiste à commencer la numérotation à 1 et avancer selon les besoins et selon les classes. J'ai rencontré cet situation dans plusieurs exemples sur le Web. Alors que si on regarde dans les source de Sun, la valeur est immense :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(102, 51, 102); font-weight: bold;font-family:courier new;" &gt;public final class &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;Copies &lt;/span&gt;&lt;span style="color: rgb(102, 51, 102); font-weight: bold;font-family:courier new;" &gt;extends&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; IntegerSyntax&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="color: rgb(102, 51, 102);font-family:courier new;" &gt;&lt;span style="font-weight: bold;"&gt;implements&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;PrintRequestAttribute, PrintJobAttribute {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="color: rgb(102, 51, 102); font-weight: bold;font-family:courier new;" &gt;private static final long&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;font-family:courier new;" &gt;serialVersionUID&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; = -6426631521680023833L;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;La seule explication possible c'est que ce numéro est généré aléatoirement et est unique pour chaque classe ou version de classe. Je me suis creusé la tête un moment pour arriver à ce genre de numéro. Je me suis même fait un programme pour le faire à ma place. Jusqu'à ce que e trouve un site extraordinaire: &lt;a href="http://www.random.org/"&gt;www.random.org&lt;/a&gt;. Ce site offre un service de génération de nombre aléatoire basé sur un principe physique appelé bruit atmosphérique. Pour les besoins de ma cause, le fait que ce générateur soit de classe cryptographique n'était pas son plus grand avantage. Son service me permettrait de créer une page web qui générerait des numéro de série automatiquement. Il ne me restait plus qu'à copier-coller la ligne ainsi générée dans mes classes sérializable.&lt;br /&gt;&lt;br /&gt;Je partage donc ma trouvaille avec vous. C'est à la fois un petit utilitaire pour Java et ma première expérience Ajax. N'hésitez pas à faire vos commentaires.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://btb.sourceforge.net/download/SerialVersionUID.zip"&gt;Générateur de serialVersionUID&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3244191734190455702-2658678077207906175?l=journalduprogrammeur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://journalduprogrammeur.blogspot.com/feeds/2658678077207906175/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/02/serialversionuid.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/2658678077207906175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/2658678077207906175'/><link rel='alternate' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/02/serialversionuid.html' title='SerialVersionUID'/><author><name>jpgravel</name><uri>http://www.blogger.com/profile/15364119484029139355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_jyWFGwn4k64/S70V7Ud_ZLI/AAAAAAAAAEc/6eIpx0U4reA/S220/jpg-201004.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3244191734190455702.post-171697311705746711</id><published>2009-01-20T01:19:00.000-05:00</published><updated>2009-01-19T22:19:33.026-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pattern and Practices'/><title type='text'>Patterns and Practices</title><content type='html'>Je viens d'un monde Microsoft... J'ai travaillé pendait cinq ans sur la plateforme .Net et je dois avouer que le C# me va comme un gant. Cependant, j'ai toujours caressé l'idée de planter mes crocs dans le Java. En 2007 j'ai eu la chance de me faire offrir un emploi dans cet univers, avec une bonne augmentation de salaire en prime. J'ai fait le saut.&lt;br /&gt;&lt;br /&gt;Afin de rentabiliser l'investissement de mon nouvel employeur, je me suis afféré à parcourir le web à la recherche de l'équivalent des "Patterns and Practices" de Microsoft, une espèce de "Sun Microsystem Enterprise Library". Je n'ai pas trouvé un équivalent mais bien des équivalents, des tas de librairies éparses et différentes. En gros, j'ai découvert que :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;le monde Java est gigantesque;&lt;/li&gt;&lt;li&gt;le monde Java est éparse et peu cohérent;&lt;/li&gt;&lt;li&gt;la majorité des bonne librairies actuellement disponible en .Net sont une refonte d'excellentes librairies de Java.&lt;/li&gt;&lt;/ol&gt;Je n'ai pas encore trouvé l'équivalent de la &lt;a href="http://msdn.microsoft.com/en-us/library/cc467894.aspx"&gt;Microsoft Enterprise Library&lt;/a&gt;. Cependant, voici quelques bribes de savoir que j'ai pu récolter. Ce sont des outils, des librairies ou des approches du génie logiciel supporté par une application java.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; est un formidable environnement de programmation supporté par RedHat et IBM.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://commons.apache.org/components.html"&gt;Apache Commons&lt;/a&gt; est un ensemble de composants cohérents supportés par une organisation sérieuse.&lt;/li&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; est un ensemble de processus ombrelle, on parle ici d'une tentative remarquable de rassembler ce qui se fait de mieux dans le monde Java en terme de génie logiciel. Ce projet est chapeauté par le groupe Apache.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javaee/"&gt;J2EE&lt;/a&gt; c'est la librairie d'entreprise de Java. Pleine de fonctionnalités et pas toujours facile à comprendre pour le néophyte.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://glassfish.dev.java.net/"&gt;GlassFish &lt;/a&gt;est un système de serveur d'application open source. Beaucoup de fonctionnalités et très complexe.&lt;/li&gt;&lt;/ul&gt;Ce sont les éléments les plus notables de ma recherche. Globalement, je vous recommande chaudement de vous pencher sur Maven. Si vous êtes du monde Java et que vous êtes passionné de bonnes pratiques et de génie logiciel, vous devez conaître Maven, c'est une must.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3244191734190455702-171697311705746711?l=journalduprogrammeur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://journalduprogrammeur.blogspot.com/feeds/171697311705746711/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/01/patterns-and-practices.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/171697311705746711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/171697311705746711'/><link rel='alternate' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/01/patterns-and-practices.html' title='Patterns and Practices'/><author><name>jpgravel</name><uri>http://www.blogger.com/profile/15364119484029139355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_jyWFGwn4k64/S70V7Ud_ZLI/AAAAAAAAAEc/6eIpx0U4reA/S220/jpg-201004.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3244191734190455702.post-6090183743867021000</id><published>2009-01-18T19:50:00.000-05:00</published><updated>2009-01-19T22:23:03.857-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='génie logiciel'/><category scheme='http://www.blogger.com/atom/ns#' term='programmation'/><title type='text'>Mon premier blog</title><content type='html'>C'est mon premier blog à vie. Passé la trentaine, ça fat maintenant sept ans que je suis sorti de l'école d'ingénierie. Je suis spécialisé en génie logiciel et je suis passionné par tous les aspects de la programmation. Je programme depuis que j'ai 14 ans.&lt;br /&gt;&lt;br /&gt;Depuis mes premiers pas, je suis passé par tout plein de langages tels que qbasic, c++, pascal, vb4-5-6, le sublime c# et depuis deux ans Java. Je programme au travail mais aussi à la maison où je m'affère à atteindre mon idéal de ce qui devrait être un bon programme via des projets personnels et depuis peu, un projet sur SourceForge.net.&lt;br /&gt;&lt;br /&gt;Je cherche à travers ce blogue à exprimer mon point de vue sur la pratique du génie logiciel et à partager mes trouvailles. J'espère suciter de bons débats basés sur vos commentaires, qu'ils soient positifs ou négatifs. Mon but étant de m'améliorer (et non d'épater la galerie) et de trouver d'autre personnes qui come moi n'ont pas assez du 8 à 5 barbant avec ses budgets et ses dates de livraisons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3244191734190455702-6090183743867021000?l=journalduprogrammeur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://journalduprogrammeur.blogspot.com/feeds/6090183743867021000/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/01/mon-premier-blog.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/6090183743867021000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3244191734190455702/posts/default/6090183743867021000'/><link rel='alternate' type='text/html' href='http://journalduprogrammeur.blogspot.com/2009/01/mon-premier-blog.html' title='Mon premier blog'/><author><name>jpgravel</name><uri>http://www.blogger.com/profile/15364119484029139355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_jyWFGwn4k64/S70V7Ud_ZLI/AAAAAAAAAEc/6eIpx0U4reA/S220/jpg-201004.png'/></author><thr:total>0</thr:total></entry></feed>
