gatling

Le 17 novembre dernier avait lieu une soiré JUG Nantes sur Gatling, présentée par Rossi Oddet. Vous avez besoin de faire des tests de charge sur votre application web et vous ne savez pas comment faire ? Ou bien vous avez testé JMeter et vous en avez encore des cauchemars ? Gatling est sûrement ce qu’il vous manque… Voici un rapide compte-rendu de la session.

lambda

Martin Odersky, professeur à l’école polytechnique fédérale de Lausanne et concepteur du langage Scala, donnera à partir du 18 septembre 2012 une formation intitulée Functional Programming Principles in Scala. Les cours seront mis en ligne sur la plateforme d’enseignement Coursera et s’étaleront sur 7 semaines. L’accès est gratuit et ouvert à tous. La programmation fonctionnelle […]

Suite à la publication de cette article, un deuxième billet a été publié, cette fois-ci en utilisant Groovy Si vous avez suivi un peu l’actualité d’Ippon de ces derniers mois, vous avez dû constater qu’il y a deux technologies qui me plaisent particulièrement en ce moment : PrimeFaces, une bibliothèque de composants JSF moderne et […]

Ippon a lancé il y a un peu plus d’une semaine un jeu qui a eu un beau succès:

http://blog.ippon.fr/2011/11/30/jeu-ippon-recrute-deuxieme-edition/

Un excellent retour sur ce jeu a été fait par Sébastien Prunier, et nous allons d’ailleurs nous baser sur sa solution pour la suite de ce billet. En effet, la dernière partie du jeu consistait à faire un algorithme de “brute force” afin de déchiffrer un mot de passe. Certaines personnes ont cru, à tort, qu’il s’agissait juste de faire une boucle “while” et de tester tous les cas possibles: cela rendait le déchiffrable impossible, à moins d’avoir beaucoup de temps disponible… Bien entendu il y avait une astuce, que pas mal de monde (dont Sébastien) a trouvé: étant donné qu’il s’agissait de trouver les lettres d’un pseudo-Sudoku, il n’y avait que 9 lettres possibles, qui ne répétaient pas, soit 9! possibilités (9! = 9*8*7*6*5*4*3*2*1 = 362 880 possibilités).

Le code de Sébastien permet ainsi de trouver la bonne combinaison en 80 secondes (sur mon MacBook):

https://github.com/sebprunier/IpponRecrute/blob/master/src/main/java/fr/ippon/rh/support/ForceBrute.java

Cependant, on peut faire plus performant: pour être exact, “probablement plus performant”, car tout dépend de vos données (plus le résultat se trouve “loin” dans notre jeu de test, plus la parallélisation va nous faire gagner du temps).

Nous allons pour cela voir plusieurs méthodes différentes: Node.js, Scala, Java “pur” et Spring.

Le but de cet article est  de présenter brièvement Scala et de regarder comment il s’inscrit dans l’écosystème de la JVM.

Java, une impasse évolutive ?

Le langage Java semble avoir atteint ses limites évolutives (Java: Evolutionary Dead End). Il est désormais délicat d’y ajouter de nouvelles fonctionnalités sans complexifier d’avantage le langage et la rétro-compatibilité. Suite à de nombreux ajouts Java est devenu compliqué, il suffit de feuilleter le livre ‘Java Puzzlers’ pour s’en rendre compte. La programmation concurrentielle en Java, malgré des efforts louables (java.util.concurrent), est loin d’être l’outil le plus adapté. Cette forme de programmation sera nécessaire dans le futur car les applications devront profiter au maximum des multiples processeurs (The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software).