Chargement...
A l’initiative d‘Irmou, j’ai décidé de faire le 1MPTS (un mois pour tout savoir). Le soucis c’est que comme je déménage… je n’ai pas eu l’accès au net pendant un moment… je vais donc essayé de rattraper le temps perdu
.
Venant d’un monde plus orienté PHP/Python/Ruby, j’ai envie de faire partager avec vous mes 6 premiers mois d’expérience “pro” en Java. De l’extérieur, je trouvais la communauté Java assez strict et remplit d’acronyme (J2EE, JPA, EJB3, WAR) mais une fois passé ce “langage” imposé surement par les téchnicos-commerciaux de chez Sun/Oracle, on se rend compte que Java n’a pas beaucoup a envié a d’autre langage “hype”.
Même si le langage reste très strict et fortement typés, certains outils ont réussi a le rendre flexible dans les méthodes de développement.
Si je dis que c’est une évolution de Ant, je vais me faire trucider et créer une guerre de religion
. Cet outil m’a permis de plus facilement structurer mes programmes. Déploiement automatique, test unitaire, Maven crée un squelette qui permet facilement de gérer tout le “cycle de vie” d’une application. Le système de dépendance (repris par Ivy) est plus qu’appreciable
. Le genre d’outil que j’affectionne particulièrement. Une ou deux lignes de code et tout fonctionne parfaitement, peut importe la plateforme
Je sais que le Google Web Toolkit ne fait pas partit intégrante d’une application Java mais il faut avoué que sur ce coup là, Google a fait fort. Plus qu’un outil de transcodage Java->JavaScript, les différents design pattern (comme MVP) qui sont proné dans GWT m’ont permis de faire un bon spectaculaire dans ma manière de coder.
N’étant pas particulièrement fan des fichiers de conf en XML et n’étant pas habitué a Spring, je trouve que Guice a toutes les fonctionnalités pour faire de l’injection de dépendance en Java, simple et efficaces
.
Il est toujours bon de développer avec une boussole, savoir où on va. Sonar permet d’avoir des indicateurs de qualité de code. Un petit “mvn sonar:sonar” sur un projet maven et zou ! On a une ribambelle d’indicateurs et le résultat des tests unitaires dans une interface vraiment très pratique.
Si vous ne connaissez pas le concept de “MDA“, ce n’est pas bien grave. Sculptor vous permet de définir votre “model” et de générer toutes les parties de codes rébarbatives au possible.
Génération de code EJB3, JPA, Spring et même GoogleAppEngine
. Une fois correctement maitrisé, il vous fera économiser de nombreuses heures
Vous avez un regard terrifié ! Les yeux en sangs, vous venez de voir 12 000 lignes de codes sans commentaire dans une classe statique. Vous demandez des explications ! Pourquoi ? Pourquoi tant de haine ?
Voici les “réponses” les plus fréquentes.
Lorsque l’on voit les possibilités apportées par CSS3 comme on peut le voir sur smashingmagazine… ça donne envie !
Mais voilà… certaines fonctionnalités ne sont supportés que par le moteur Gecko, d’autre dans webkit et on se retrouve vite a se rendre compte que de toute façon, ce n’est pas supporté par InternetExplorer 9 voir même 10 ou 11.
Si on se plonge un peu dans l’histoire du web on se rend vite compte que les problèmes de CSS remonte a cette rivalité “Internet Explorer” vs “Firefox” qui a engendré pas mal de cauchemard. Cette compatibilité était réellement nécessaire car souvent les “div” n’étaient pas affichés au même endroit. Le design partait en “sucette” et le site devenait vite complètement illisible.
De nombreux “framework css”, “css hack & tricks” ont vu le jour pour essayer de faire en sorte que notre bon code CSS ne soit pas aussi compliqué que la compilation d’un code source C natif sur plusieurs processeur.
Lorsque vous achetez un jeu PC vous regardez bien les “specifications techniques”. Souvent vous pouvez lire “ce jeu requiert une carte graphique compatible DirectX10″ ou encore “le support des shaders 2.0″.
Certaines personnes n’ont pas envie de changer de carte graphique voir même d’OS pour avoir tout en “high details”.
Certains jeux ne se lancent pas si vous n’avez pas les “prérequis” mais d’autre se lanceront en mode “dégradé”. Les joueurs peuvent donc s’amuser avec leurs jeux en ayant pleinement conscience qu’ils n’ont pas “tout”.
Au final, pourquoi ne pas faire pareil pour le web ? Pourquoi ne pas dire aux utilisateurs “Vous n’aurez pas tout en high detail sur IE. Si vous le voulez utiliser Chrome” ?
Bien sûr la condition est de faire en sorte que le site reste utilisable et que la navigation n’est en rien géné sous IE. En prenant l’analogie avec les jeux vidéos, les jeux restent utilisable et fluide même sur des cartes graphiques moins bonnes !
Un bord arrondis, un petite ombrage bien placé, ces choses ne changent en rien la navigation. Faites donc votre site pour tout les navigateurs et rajoutez plein de CSS3 pour rendre le site plus beau et plus kawaï
.
Internet fait à présent parti de notre vie. Facebook, Twitter, Msn, les mails, il est de plus en plus rare de recevoir une “carte postale” de voir un album photo qui n’est pas en ligne ou encore de chercher dans un annuaire papier un numéro de téléphone. Pourtant le développement d’internet a des avantages mais aussi beaucoup d’inconvénient.
Internet a clairement changé notre mode de fonctionnement pour nous simplifier la vie, mais qu’en est-il des personnes qui ne peuvent pas s’adapter au monde numérique ?
Je vous vois venir “ils ont qu’a s’adapter !”. On a souvent l’image d’octogénaire qui vont encore a la banque pour savoir combien de sous ils ont sur leurs comptes alors que 3 clics sur Internet nous permettent de le savoir. Ils n’encombreraient pas les fils d’attentes ! Sans compter qu’en plus, ils veulent papoter !
Vous seriez très surpris de voir que dans le cadre d’un projet que j’ai eu l’occasion d’entrevoir au centre de recherche où je travaille, de nombreux octogénaires n’ont aucun problème avec l’outil informatique. Ils se sentent même d’ailleurs frustré d’avoir des interfaces “restreinte” car au final, ils se considèrent comme des utilisateurs normaux.
L’image du 3ème age complètement largués par l’outil informatique est ARCHI FAUSSE.
Vous, moi, n’importe qui !
Beaucoup de choses peuvent impacter notre capacité a utiliser les outils informatiques.
On se rend vite compte que d’ici 30 a 40 ans, ces problèmes n’auront pas disparu pourtant l’utilisation d’Internet sera encore plus présente d’ici là. Et dans 40 ans c’est nous qui auront peut être des soucis de cet ordre.
Cela fait bientôt… longtemps que je dev
. Ouh là ! Bien plus de 10 ans ! Je prend un coup de vieux là d’un coup mais fort est de constaté que ma mentalité a pas mal évolué avec le temps.
J’ai envie aujourd’hui de vous faire partager un certain nombre de choses dont je me rend compte en même temps que je commence a perdre mes cheuveux
.
Ahhh la jeunesse, la fac ! Quel nostalgie !
Je me souviens a chaque fois que j’avais une idée d’amélioration dans un programme, je reprogrammais TOUT. Repartir d’un projet vide et tout refaire pour atteindre le code “ultime”, celui qui sera maintenable et rapide à la fois.
Mais voilà… en prenant de l’age. Il n’y a plus maman pour faire les courses, la vaisselle, la lessive et du coup il y a forcément moins de temps pour dev. Alors forcément, si j’ai quelque chose qui marche, j’ai pas très envie de réinventer la roue (surtout carré). Lire la suite »
Scrutator ? C’est quoi ?
A la base, c’était juste un petit bot irc qui surveillait le chan #funradio pour savoir ce que disait mes potes, histoire de ne pas perdre un seul lien “croustillant”.
Mais voilà… il a pris de l’ampleur, multi chan, multi serv (la V2) et la CATASTROPHE. Bots sur plusieurs machines qui communique pas trop entre eux. Ils partent pas des chans, mise à jour difficile, et quand il y a un bug, PATATRAC, ils l’ont tous !!!
J’ai donc ressortis il y a un an et demi, une idée que j’avais eu chez Linbox/Mandriva lors de mon stage. Faire un “agent” a qui l’on donne des ordres et qui, si il n’a pas le code pour l’executer, le télécharge a la volée. Une sorte d’import “on the fly”.
Voilà ! J’y suis ! Il est terminé http://github.com/xblaster/scrutator.
J’ai enfin mon système de robot qui peut se mettre à jour a la volée basé sur python twisted. Les premiers tests sont très concluant. Je commence a implementer le protocole IRC puis viendra surement Twitter, Facebook et autre.
Certains de mes amis pensent que c’est possiblement Skynet car à terme j’aimerais que tout soit décentralisé. Que les bots s’échangent le code directement entre eux avec un système de confiance par clé GPG
. Une sorte de réseau de surveillance incassable. Dans la pratique ça serait possible… il me manque juste encore du temps.
Si vous voulez m’aider, n’hésitez pas à me contacter et à forker mon git
Voilà le résultat de quelques petits tests que j’ai effectué.
Ceci est un petit java web start où on apprend à une application a quoi ressemble des pommes, des poires des maisons (ou autre) en les dessinant.
Après 3 ou 4 symboles de chaque, vous pouvez lui demander de deviner ce que vous avez dessiné en lui proposant un nouveau dessin.
Enjoy
.
Derrière, rien de bien miraculeux, juste un petit réseau de neurones très basiques au final…
Une partie de mon nouveau travail consiste à réfléchir et à mettre en place des systèmes pour faciliter le traitement des données. Réseaux de neurones, systèmes expert, statistiques, etc.
C’est un monde merveilleux
. Je dessine un “1″ et l’ordinateur trouve tout seul grâce a son apprentissage que j’ai bien dessiné un… et bien oui, haha… un “1″. INCROYABLE ! Mais comment a t-il trouvé cela ? Parce qu’il s’est basé sur un jeu de test.
En fait toute intelligence artificielle repose plus ou moins sur une base de connaissance ou une modélisation plus ou moins humaine de la problématique.
Imaginons que je veuille avoir un système prédictif sur le potentiel d’une personne a commettre un délit aux États-Unis. Mon intelligence artificielle va se basé sur l’historique, sur un jeu de test existant pour apprendre. L’IA va s’adapter et va très vite se rendre compte que statistiquement, quand on est noir on arrive plus souvent en prison. Résultat ? L’IA va peut être dire (et cela serait presque légitime) que lorsqu’on est noir, on a plus de chance de commettre un délit et d’aller en prison.
Au final ce n’est pas parce qu’il est noir ou parce qu’il a vécu dans une banlieue qu’il est devenu criminel mais c’est surtout par son vécu, ses parents, ses amis… mais cela n’est pas modélisable.
Chose promise… chose promise !!!
Je viens de faire un petit “proof of concept”.
Qu’est-ce qui est plus difficile que de faire un petit moteur 2D en full javascript/canvas ?
Un petit moteur 2D en full javascript/canvas avec un moteur physique !
Il n’y a aucune bidouille et le rendu est entièrement fait par votre navigateur préféré. Je note qu’a part Google Chrome, les autres s’en sortent assez rapidement très très mal.
Pour la réalisation, j’ai tout simplement intégré JBox2D dans un module GWT.
Il faut être clair c’est rapidement “TRES LENT” et soumis a encore quelques petits glitches, cependant cela montre que “c’est possible” sans trop se prendre la tête.
Pour ceux qui sont intéressés, je pourrais fournir le code source.
Edit:
Un 2eme exemple avec “spawn” des caisses avec la souris.