Rien de bien neuf… sauf…

Finalement, je suis incapable de mettre à jour le blog. Devenu trop exigeant envers son contenu, j’en suis réduit à signaler toutes les fins du mois que je ne l’oublie pas.

Qu’ai je fait de beau ce mois-ci ?
J’ai tenté un rendu HD de mon ancien modèle de theodolite en stéréoscopie sur mon ordinateur. Ça a fait 2 semaines de rendu non-stop sur un i5. C’est effectivement de la 3D, mais c’est cher payé. (http://www.youtube.com/watch?v=Xy4eNSSAc1g)

Sur le plan prog, j’ai appris à utiliser AspectJ. Pour éviter d’avoir des méthodes comme celle-ci :
String method1 (String a, int b) {
log.info (this.getClass (), "début methode method1 (" + a + ", " + b)");
//...code
log.info (this.getClass (), "fin methode method1 (" + a + ", " + b)");
}

faites ceci :

before () : pointcut (within mon.package) {
log.info ("début de la méthode " + thisJointPoint.getTarget () + "." + thisJointPoint.getMethod ()");
}

after () : pointcut (within mon.package) {
log.info ("fin de la méthode " + thisJointPoint.getTarget () + "." + thisJointPoint.getMethod ()");
}

Le weaver AspectJ va recompiler toutes vos classes pour passer par cet intermédiaire, et cela ne nécessitera aucun effort de votre part.
Pour jouer avec sous eclipse, allez voir cette page : http://www.eclipse.org/aspectj/

Sinon, je tente le GWT. Depuis la liberation des données RATP me vint une idée d’appli… je reste discret là dessus pour l’instant…ratp

Ma découverte du mois : javassist

Vous qui êtes fâchés (à juste titre) avec Java pour toutes ces raisons :
– vous ne supportez plus sa rigidité (créer des classes partout)
– vous ne supportez plus son manque d’optimisation (hé non, ça n’existe pas les pointeurs de fonction)
– vous qui ne comprenez pas qu’il vous engueule à chaque classe ou type inexistant
– vous auriez bien aimé avoir des init statiques comme en C++
– vous en avez marre des fichiers xml à tire-larigot

j’ai une lib à vous proposer si par malheur vous étiez payés à faire du java…

javassist permet de compiler jit (just in time) vos propres classes si leur code n’est pas connu par avance.
Un des cas les plus courants est celui où un utilisateur charge un fichier de script et que l’on souhaite faire un wrapper en Java (c’est à dire appeler ces fonctions comme si elles étaient en java et en masquant les appels intrinsèques)…

Je vous en propose un ci-dessous :

Invoker

Parler avec des rébus (enfin, avec des « :paintbrush – :paint + (:pear – :harp) »)

rebus

On peut tout à fait écrire des phrases en substituant des mots par d’autres syntaxiquement proches. On peut même s’amuser à faire des équations sur les mots comme en chimie.
Ce prog (écrit pour un test de recrutement que j’ai échoué…) vous propose de transformer votre phrase avec des substitutions. Et remplace certains mots clés par des images ! Donc, ça donne logiquement un rébus.

Je vous laisse l’essayer à cette adresse : http://libe.toile-libre.org/puzzle/rebus/rebus-min.php

1+1+1+1+1+1+1+1+1+…

FindLowestOne

Je ne poste certes pas beaucoup ici mais ce blog peut se vanter de parler de tout et de vraiment rien.

En l’occurence il s’agit de trouver une réponse à la question suivante : « Quel est le plus petit nombre naturel tel qu’il soit impossible de le calculer sous la forme d’une expression mathématique composée de neuf 9 ? » ou de huit 15, ou de 4 quatre, ou de ce que l’on souhaite.

J’ai codé un programme qui résoud ce problème de deux manières :
– Un algo qui va faire toutes les possibilités d’expressions mathématiques
– Un algo qui parcourt les entiers naturels.

Au delà de trois termes, le premier algo est inutilisable car beaucoup trop long. En effet pour 9 termes il faut 60 jours à mon intel i5 pour avoir une réponse (je l’ai pas tenté, heureusement, juste prédit).

Le second algo est un exemple court et intéressant de ce que l’on appelle une I.A. (intelligence artificielle).
On cherche un meilleur coup en mettant une valeur à chaque coup possible, et en anticipant les ratés (un coup qui s’avère bon au départ mais qui au final n’entraîne aucun résultat).
En effet il se sert d’heuristiques et de stratégies pour arriver à ses fins : savoir par exemple que (n + n) / n = 2, n – n = 0, n / n = 1.

Ainsi, la réponse à notre question est rapidement trouvée… 114 !

Voici le lien pour essayer l’appli par vous même : http://libe.toile-libre.org/puzzle/findlowestone/findlowestone.php