Et la suite des articles sur Devoxx France 2015 continue. Après un premier retour général et un retour sur la journée du mercredi 8 avril, voici un retour sur la journée du jeudi 9 avril. Au programme : machine learning, régulation numérique, JSON…et bien plus encore.

Conférence : Machine Learning et régulation numérique

Par Guillaume Laforge (Restlet) et Didier Laforge (SFEIR)

machine learning image

Le machine learning est déjà présent sans que l’on en soit conscient: messages de spam, les recommandations. Netflix: Success Story grace à leur algo. Facebook: avec sa timeline.

A partir d’un ensemble d’observation, il faut essayer de trouver un modèle linéaire. On veut être capable de classer donc on cherche des modèles mathématiques.

Il y a une classe d’algo à utiliser quand on ne sait pas ce qu’on cherche (algo non supervisé) donc il faut essayer de segmenter.

  • Il faut essayer d’amener du sens -> construction de clusters (3)
  • Séparation de source l’algo non supervisé. ex: isoler le bruit de fond.
  • La visualisation est donc très importante -> permet de mieux tuner. Il faut bien visualiser les données pour bien essayer de les comprendre.
  • Essayer de voir différemment pour trouver des corrélations.
  • Mais attention aux corrélations. Il faut donc faire attention en faisant des observations. Ce qui est facilement déductible n’est pas intéressant.
  • Pré-traiter ses données (Exemple de Face Recognition), puis on recoupe pour retrouver les points caractéristiques (ex yeux, bouches peut dépendre de l’origine)
  • Normaliser / Centrer. Algo pour classifier (ex: essayer de trouver: c’est un point, un carre, un rond, etc…)
  • Algo Random forest: arbre de décision. C’est un algo qui marche très bien. Le plus connu: Back propagation, Réseau de neurones.
  • Algo de deep learning

Faut-il de l’intuition ?  La visualisation permet de donner la bonne intuition. A force de travailler, cela s’améliore.

  • Notion de notebook
  • Le big Data est en train de nous scorer. Exemple: les like sur facebook.  Exemple de la théorie du complot. Si on aime un article sur la théorie du complot, un autre est proposé, ainsi de suite. Au final, on peut finir par voir des complots partout.

=> Les slides : https://speakerdeck.com/glaforge/introduction-au-machine-learning-devoxx-2015

Quickie : Avro – la souplesse du JSON, les performances du binaire

Par Alexandre Victoor (Société Générale)

– Sous projet dans Hadoop (java, python et même .NET (à cause du hadoop sur Azur)). Connu dans le Big Data mais utile ailleurs comme pour les batchs.

– Le schema est un document json, cela ressemble à un schema XML.

– Peut générer du Java.

– Ecrit du json et du binaires (idem pour lire).

– On peut ne pas générer du code et donc ne pas être typé (plus souple).

– Permet d’écrire en masse. Itérateur, travail en mode lazy.

– OK, c’est bien mais mes structures de données peuvent évoluer

  • Donc pas de contrainte pour la serialization.
  • Donc pris en compte dès le départ.

– Spécifier le schema. Le writer schema est unique mais pas le reader donc c’est très souple. Entre 2 schemas, on ne peut pas changer le type d’un champs. L’outil permet de dire si 2 schemas sont compatibles ou non.

– Echange de messages entre applications

– Event sourcing. Astuce on stocke l’empreinte plutôt que le schema en lui meme. Il y a une implémentation JS.

– Protobuf à utiliser pour améliorer les performances.

=> Les slides : https://github.com/alexvictoor/AvroDevoxxFr

Quickie : Apprendre en s’amusant avec son compteur électrique

Par Cédric Finance

Spark photon envigeable pour remplacer le raspberry Pi, dans cette configuration.

Conférence : Un monde où 1 ms vaut 100 M€

Par Alexandre Victoor et Thierry Abaléa de la Société Générale

Temps important pour récupérer des infos de l’étranger. Il faut donc réduire au max les latences.

– Memory Layout

– Mesurer les micro benchmarks -> OpenJDK, JMH devient un standard

Java? pourquoi? Bon choix en finance des marchés. Bonne productivité -> TimeToMarket donc un bon compromis.

– Le multi-threading // pas toujours le meilleur choix.

  • Première archi : Event Loop
  • Deuxième archi : Queue SPSC

– Importance du mot clé volatile

– C’est difficile de trouver en regardant du code, quel est le code le plus rapide -> important de faire des micro benchmarks

– Outil : HdrHistogram -> n’impacte pas sur les performances.

– Nouveau défit: mettre de l’audit dans tout cela donc il faut travailler sur les logs.

  • Appender MMAP file: Chronicle Logback Appender

=> Slides :http://fr.slideshare.net/ThierryAbalea/un-monde-o-1-ms-vaut-100-m-devoxx-france-2015

Conférence : http/2: A deux c’est mieux!

Par Jean-Francois Arcand (Async-io.org) et son accent québecois !

 Undertow et jetty supporte http2.

Conférence : Why postgres SQL deserve noSQL fan respect

Par Quentin Adam (Clever Cloud)

– enum: Pas de cout en postgres -> Eviter 6 flags boolean.

– Toujours utiliser un timestampTZ (donc avec timezone)

– Fonction temporelle de pgSQL

– Le count est 1 catastrophe en Cassandra idem en Geolocalisation.

– On peut créer des index sur des actions. Donc important quand on fait toujours le même type de requête (prépare le calcul du Hash).

– Possibilité de faire du schema less mais en conservant ce qui existe (xx comme atomicité)

– Boot strapping

« Pourquoi alors s’emmerder à faire du NOSQL? Postgres 9.4 sur Linux »

– Contrainte de la database sur 1 système donc cela va tuer les ORM. L’ORM limite beaucoup. ORM -> ca t’emmerde dans ta base, empêche la vitesse de stockage  et donc d’évoluer rapidement.

  • jdbc driver -> il ya des trous dedans -> Alors la réponse est ArrayToJSON
  • ArrayAggregation. On parle en SQL mais on récupère du JSON -> Donc c’est une autre démarche.

– on doit être libre de choisir son datastore.

– pgSQL ne supplante pas Mongo:

  •  atomicité of change inside JSON (pas possible avec pgSQL en ce moment)
  •  pas de concurrent insert. Ce qui est un avantage en pgSQL peut être un problème dans un autre contexte.

– Sharding & Replica

– High Availability

 « Choisir un datastore est un vrai boulot d’architecte complet. »

–  Il y a un plan de dev chez CleverCloud de test gratuit. Donc qq chose de libre pour éviter les produits.

– Join et outer join marche très bien sur les json. Il faut donner un numéro de version pour les json, c’est mieux.

Conférence : Les tests exploratoires

Par Mathilde Lemée (Freelance)

– Utile pour les tests en environnements distribués.

– Les tests exploratoires ne sont pas pour la conformité, c’est plus pour le risque.

Tested= checked + Explored

– Perte de temps au début. Il ne faut pas d’apriori donc quand on expérimente. on « timebox » (brique de 1 à 3 heures)

– On prend des notes pour essayer de reproduire des scénarios d’echecs.

Given When Then

  • Explore (target)
  • With (resources)
  • To Discover (infos)

– Bien spécifier ce que l’on recherche.

– Difficile d’explorer quand on a codé. Il faut poser des questions et surtout gérer les cas ou l’on a des réponses du type « Je ne sais pas ».

– Pas de planification structurée car cela tue la créativité.

– Voir aussi les impactes réseau, mémoire.

– Attention à tester sans regarder les logs. Donc nécessaire d’observer.

– Plus on est attentif sur l’aspect visuel, moins on les trouve. Exemple de bonne idée: Changer les cookie à la main.

– Comment détecter l’anormal quand on ne connait pas le normal donc savoir utiliser dès le début.

– Pb -> Ne s’arrête jamais car on a toujours quelque chose à chercher.

– Appliquer les heuristiques: To many, few, 0 , etc…

– Difficile à appliquer sur l’aléatoire. Donc dans ce cas, faire ce qui marche toujours et trouver les intervalles qui ne marchent jamais. Sinon faire aussi des tests aléatoires

– Regarder ce qui se passe dans la console Firebug. Ce n’est pas normal d’avoir beaucoup d’erreurs dans la console.

– Il faut casser les habitudes. Aire des test sur le back, forward, multi onglet.

– Essayer de « Gamifier » pour être créatif, jeux des what-if?.

– Les faire plutôt à la fin mais pas complètement. Faire comprendre que ce temps là est bien nécessaire et donc doit être prévu.

– Pas vraiment d’outillage.

 – Il faut historiser les explorations

 – Bien sûr lorsqu’on trouve un bug, il faut automatiser un test dessus ensuite.

Tools In Action : App Engine Managed VMs et Fluent-http, un mariage heureux

Par David Gageot (Freelance)

  • Au début utilisation dans les Coding Story. Mais mise en place chez de plus en plus de clients.
  • Gère less CSS -> Prise à la volée less et Coffee
  • En mode debug -> Hot Reload. Le browser est rafraîchi automatiquement sans installer quoique ce soit.
  • Pour une migration Jersey, on gagne en nombre de lignes.
  • AppEngine ne supporte pas le http failure mais c’est possible via Docker.