net negative programmers

  Comme Helga le décrit très bien dans son blog, les programmeurs contre-productifs existent, et je les ai rencontrés. J’ai même eu l' »opportunité », une fois, de voir un projet partir en vrille du fait d’un manque certain de compétences (j’en reparlerai plus tard, sans doute). Même s’il est bon de savoir qu’ils existent, il est quand même mieux de savoir les éviter.

Publicités

Décidement

Encore une fois, Jean-Michel Billaut nous en apprend beaucoup sur la Chine, et sa vision de la France. Et encore une fois, comme lui :

  Je pense que je vais me mettre aux langues rares… Quelqu’un connaît-il un bon moyen pour apprendre la langue de Confucius ? (on line, sur CD, voir un bouquin – mais pas la peine de demander à l’Education Nationale …)

Heureusement, pour ça, il existe quelques sites intéressants. Et de battre en brèche mon argument précédent. Dans tout ça, il y a quand même quelque chose qui me fait un peu peur. Manifestement, à l’échelle mondiale, l’Europe est destinée à rester, au XXIème siècle, une espèce de continent musée, car (dixit le représentant de l’alliance France-Chine)

A court terme nous avons un problème avec les Japonais. Qui va prendre le leadership en Asie ? A long terme – 30 ans à 50 ans – nous avons un problème avec les USA. Qui va diriger le Monde ? Avec l’Europe et la France nous n’avons pas de problèmes… Pas d’antagonisme, pas de désaccord. Vous êtes gentils…

Et mes enfants, ils seront quoi ? Gardiens du musée de l’habitat Hellemmois ?

64K limit in javac

    Je suis tombé sur un article de DevV : Getting Around the Java Compiler’s 64K Limitation (merci, Juha). Je dois dire que je suis pour le moins surpris de voir un tel conseil

:

Say you’ve got a class called GlobalDefinitions, and its number of class members exceeds the 64K. Create a new class called GlobalDefinitions1 and move 80 percent of your data members from GlobalDefinitions to GlobalDefinitions1.

Est-ce que c’est parce que DevX paye pour de tels conseils qu’ils existent ?

Google et les blogs

Comme tout le monde l’a remarqué, Google a modifié sa gestion des blogs. Parmi le concert de louanges, je retiens néanmoins Laurent, qui, lui, n’y voit pas un bienfait évident :

plutôt que de s’adapter au contenu qu’il doit indexer, ou de tirer la leçon de ses effets pervers sur leWeb, Google va convaincre la blogosphère d’adapter ses liens de manière à lui éviter d’avoir à les prendre en compte.

  Le pire, c’est que c’est déja fait : le blog de Google nous dit que les principaux outils de blog se sont déja équipés de tels outils. Et si je ne veux pas que mes commentaires soient nofollow ? Comment je fais ? Personnellement, et bien que ce blog soit encore jeune, j’ai eu, au début, une avalanche de spams pour jouer au pocker au Texas (depuis Lille, malin quoi). J’ai naturellement installé un anti-spam (Spam-Karma qui marche très bien).

Au lieu de mettre en place ça de manière uniforme, que font les bloggeurs, ils choisissent de se taire façe au spam, ou, plus simplement, de ne plus être visibles. Bref, ça me révolte. il va sans dire que, chez moi, aucun lien n’aura jamais de rel=no-follow, sauf peut-être Google, pour sa réflexion à courte vue. Eh oui, avec ça, les blogs qui n’automatisent pas ce nofollow vont donner à leurs liens beaucoup plus de poids, et j’imagine très bien les blogs de chez blogger créés dans un but, comment dire … commerçant (pas d’inquiétude, il y a un nofollow (tiens, je devrais mettre un truc dans ma feuille de style pour que les liens ayant cet attribut apparaissent différement, ce que tout le monde devrait faire, d’ailleurs, avec par exemple un surlignement spécial)) ne pas l’activer pour vraiment maximiser le gain de visibilité. M’enfin, tant que personne ne spamme delicious …

Pour ceux que ça intéresse

Il se trouve que je suis plutôt un nerd I am nerdier than 77% of all people. Are you nerdier? Click here to find out! . Ca doit plutôt coller avec mon geek-code (que je ne peux plus déterminer localement, parce que j’ai supprimé le javascript, mais j’ai trouvé un script PHP sur le web) que voilà : Version: 3.1 GCS d+ s++: a C++$ UL-- P- L+ E- W+++ N+(++)>$ o K--? w+ !O !M V PS+ PE- Y+ !PGP !t !5 !X R(+)@ tv+ b++(+++)@ DI D+ G+ e+++ h---- r+++ y+++ Vous pouvez accessoirement le décoder . Et, dans le même genre, je dois aussi pouvoir retrouver mon nomic code. Ah, non, c’est mon degré de pureté nomic, pour lequel je suis à environ 38 %. Et c’est déja un assez bon score.

Why JSP and JSTL are used ?

Imaginez : vous avez un gros paquet de code. Vous faites un refactoring important dessus. Grâce à Eclipse/NetBeans/Idea, le code est bien modifié, et toutes les classes Java compilent. Mais qu’en est-il des JSP incluant des tags JSTL évaluant ces classes Java ? Nada ! Et, comme elles ne sont pas compilées, il faut lancer Tomcat et afficher les pages pour s’en rendre compte ! Ca vallait bien la peine de réinventer le développement grâce à la méthode XP et aux outils de refactoring pour en arriver là ! Si quelqu’un connaît un outil de propagation (ou au moins, donnant des indices sur un refactoring nécessaire) des changements de JSP et JSTL, qu’il l’écrive.

Think about NullObject

  Quand on parle de exception handling, les problèmes de NullPointerException ne sont jamais loin. Dans ce cas, le pattern NullObject est vraiment utile (bien que je ne m’en sois jamais servi). Avec du code bien organisé, le Java Null Proxy est un très bon choix. Autrement, associer à chaque classe une sous-classe singleton null-object peut aider, et pas seulement en supprimant tous les tests de nullité.

continuations on the web : managing back and next in Struts

Hier, j’ai lu avec beaucoup d’intérêt l’article de DeveloperWorks Use continuations to develop complex Web applications.

J’ai été illuminé par le concept des continuations et son utilisation pour stocker l’état d’une application web. Cependant, ces continuations soulèvent des questions importantes pour moi comme : comment pourrais-je implémenter facilement une application basée sur les continuations s’intégrant bien dans, par exemple, Struts.

Je réalise maintenant que toute mon illumination pour résoudre le problème « complexe » du précédent/suivant n’est qu’un jeu de l’esprit. En fait, la solution est triviale, quand on (en l’occurence moi), se souvient qu’une application web n’est jamais MVC, mais conversationnelle. Mais, pour m’en souvenir, la solution est simplement, pour un formulaire, de mettre dans la session de l’utilisateur, dans une clé nommée d’après le formulaire une valeur, qui sera détruite lors du traitement de ce formulaire. Si la clé n’est pas présente, aucun traitement de formulaire ne sera fait. Le principal avantage est que ce traitement peut être fait dans une paire d’actions abstraites, permettant un traitement facilité des formulaires, avec par exemple une AbsstractFormDisplayAction, et une AbstractFormReceiveAction. Le truc est de rendre ces classes non visibles, ou non impactantes, sur les sous-classes. Pour ça, la AbsstractFormDisplayAction doit passer la clé utilisée à la JSP, qui pourra la placer dans un champ bien connu du formulaire. Cela permettra à la AbstractFormReceiveAction de lire cette valeur du formulaire, et ainsi de vérifier si la clé existe dans la session. Cependant, quand plusieurs fenêtres du navigateur partagent la même session, les choses deviennent encore un peu plus complexes (pensez aux deadlocks). Heureusement sur le web les choses sont simples : la AbsstractFormDisplayAction va associer à la clé, si ça n’est pas encore fait, une List, et créer dans cette liste un ID. Cet ID sera également passé à la JSP, et inséré dans le formulaire avec un bon nom. Ainsi, la AbstractFormReceiveAction pourra vérifier dans la liste si cet ID est présent, et sinon …. Quoi ? Afin de rendre cette implémentation efficace, les actions de formulaires devraient avoir toutes un forward, par exemple « formNotSubmitted », que la AbstractFormReceiveAction pourrait utiliser.