Sonar devant le Java User Group de LausanneFreddy Mallet
Voici les planches (comme dirait un bon ami québécois) de ma présentation d'hier soir au JUG de Lausanne. Merci aux collaborateurs d'Octo pour l'organisation de cette soirée !
Présentation de Sonar 2.0 et plus généralement de l'évolution du métier de développeur au JUG Genève. Bonne ambiance, bonne participation, bon feedback !
Histoire d’une technique pour faire des trous d’épingles ou la difficile gestion d’un problème de sécurité. La découverte d’une attaque sur les pare-feu à état m’a amené à devoir gérer les problèmes de la correction et de la divulgation de la faille. Le but de cette présentation est de faire un retour sur l’expérience acquise dans la gestion d’une telle problématique.
Présentée lors du MobileOne 2019 par Benoît AUDOUARD, responsable projet myCANAL chez Canal+ et Julie ROLLIN-MOUSTÉOU, Senior Product Manager chez Fabernovel.
Sonar devant le Java User Group de LausanneFreddy Mallet
Voici les planches (comme dirait un bon ami québécois) de ma présentation d'hier soir au JUG de Lausanne. Merci aux collaborateurs d'Octo pour l'organisation de cette soirée !
Présentation de Sonar 2.0 et plus généralement de l'évolution du métier de développeur au JUG Genève. Bonne ambiance, bonne participation, bon feedback !
Histoire d’une technique pour faire des trous d’épingles ou la difficile gestion d’un problème de sécurité. La découverte d’une attaque sur les pare-feu à état m’a amené à devoir gérer les problèmes de la correction et de la divulgation de la faille. Le but de cette présentation est de faire un retour sur l’expérience acquise dans la gestion d’une telle problématique.
Présentée lors du MobileOne 2019 par Benoît AUDOUARD, responsable projet myCANAL chez Canal+ et Julie ROLLIN-MOUSTÉOU, Senior Product Manager chez Fabernovel.
Slides de la présentation de Sonar 2.0 sur les 7 péchés capitaux au GenevaJUG le 23 février 2010.
La sortie de la version 2.0 de la plateforme Open Source Sonar est l'occasion de revenir et d'échanger sur l'un des plus jeunes métier du monde: Développeur logiciel. Après de nombreuses générations d'autodidactes, de passionnés, qu'est qu'être développeur professionnel aujourd'hui, quels sont nos responsabilités et nos défis ?
Le principal héritage légué par un développeur et plus globalement par une équipe de développement est son code source. La principale qualité attendue d'un code source est est sa capacité à permettre d'accueillir le changement à moindre coût. Quels sont donc les critères d'évaluation de cette qualité du code source ?
Présentation faite par Freddy Mallet
www.sonarsource.com
www.genevajug.ch
Slides de la présentation de Sonar 2.0 sur les 7 péchés capitaux au GenevaJUG le 23 février 2010.
La sortie de la version 2.0 de la plateforme Open Source Sonar est l'occasion de revenir et d'échanger sur l'un des plus jeunes métier du monde: Développeur logiciel. Après de nombreuses générations d'autodidactes, de passionnés, qu'est qu'être développeur professionnel aujourd'hui, quels sont nos responsabilités et nos défis ?
Le principal héritage légué par un développeur et plus globalement par une équipe de développement est son code source. La principale qualité attendue d'un code source est est sa capacité à permettre d'accueillir le changement à moindre coût. Quels sont donc les critères d'évaluation de cette qualité du code source ?
Présentation faite par Freddy Mallet
www.sonarsource.com
www.genevajug.ch
Au cours des 10 précédentes années, nous avons eu des sessions de Devoxx FR et plusieurs versions dont certaines majeures de Java.
L’objectif de ce talk est de revenir rétrospectivement sur certaines annonces et sur certaines des nombreuses évolutions de Java, notamment récentes afin d’en profiter dans nos applications. Au-delà des évolutions syntaxiques et dans les API, ce sera aussi l’occasion de justifier la migration vers des versions plus récentes de Java.
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...
Beaucoup d’applications utilisent encore Java 8 mais Java a beaucoup évolué depuis notamment avec la diffusion de deux versions LTS.
L’objectif de ce talk est de revenir sur certaines de ces nombreuses évolutions de Java, notamment récentes afin d’en profiter dans nos applications. Au-delà des évolutions syntaxiques et dans les API, ce sera aussi l’occasion de justifier la migration vers des versions plus récentes de Java.
Slides de la session du 26 et 27 janvier 2016. Les sessions ont couvert les "buzzwords" du moment, une introduction a TypeScript, une session de live coding en Swift ainsi qu'un workshop NativeScript.
Introduction aux algorithmes génétiquesJUG Lausanne
Nous allons vous proposer de dépoussiérer vos livres de biologie et de revêtir votre plus belle blouse blanche.
Avant de rentrer dans le vif du sujet, nous allons faire un tour rapide des différentes méthodes d'optimisation mathématiques et ce avec la garantie qu'aucune formule mathématique ne sera utilisée.
Puis sans ouvrir un débat entre le créationnisme et le darwinisme, nous allons présenter la genèse des algorithmes génétiques, leur promesse et le schéma général de la théorie.
Chaque petit rouage de l'algorithme sera ensuite expliqué de manière imagée sans entrer dans trop de détails techniques.
Enfin nous passerons à la partie la plus palpitante en se prenant pour des apprentis sorciers, grâce à plusieurs démonstrations concrètes de ce qu'il est possible de faire sans avoir un doctorat en génétique.
Speaker
C'est en 2006, lorsqu'il implémente le jeu de la vie de Conway en TopPascal que Wadeck Follonier est pris de passion pour l'algorithmique.
Cette passion prendra plusieurs formes par la suite, que ce soit en intelligence artificielle appliquée aux jeux vidéo, en un intérêt croissant dans la théorie des jeux ou de manière générale en résolution de problèmes.
Professionnellement, il occupe actuellement le poste de Security Software Engineer chez CloudBees sur le projet open-source Jenkins.
Développer un moteur d'exécution symbolique en partant de rienJUG Lausanne
Session du 10 Janvier 2018
En chaque développeur a sommeillé un jour ce rêve d'écrire son propre compilateur pour un language de domaine ou voir même pour créer un nouveau language de programmation. Or le développement d'un analyseur de code ressemble étrangement au développement du front-end d'un compilateur. Durant cette session, Freddy présentera les différentes étapes du développement d'un analyseur de code jusqu'à la capacité à exécuter symboliquement tous les chemins d'exécutions. Ce concept avancé d'interprétation abstraite est un pré-requis à la détection des bugs et vulnérabilités les plus profonds dans tous les languages.
Quizz en ligne
20 minutes pour jouer ensemble et mettre à l'épreuve nos connaissances des principales failles de sécurité applicatives et notre capacité les détecter des bugs dans du code Java et JavaScript. Speaker
Freddy est le créateur de la plateforme SonarQube et est co-fondateur de SonarSource. Après de nombreuses années de développement en Java, il joue désormais le role de Product Manager pour les analyseurs de code SonarSource.
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidJUG Lausanne
Session du 28 Septembre 2017
Android fournit une API Java pour la facturation d'achats in-app, permettant aux développeurs de vendre des fonctionnalités supplémentaires directement depuis l'application. Ce mécanisme est très souvent utilisé dans les jeux pour acheter des crédits donnant accès à du contenu supplémentaire, des bonus, etc ... Mais l'intégration du paiement est souvent mal comprise: on ne peut pas faire confiance au code tournant sur le smartphone. Ainsi, toutes les vérifications et l'obtention du contenu doivent s'effectuer côté serveur. Comme ce n'est pas très clair dans la documentation de Google, beaucoup de jeux continuent de faire la gestion côté client.
Nous allons exploiter une véritable application Android du Playstore pour obtenir des crédits gratuits. Et constater à quel point il est facile d'en faire son reverse engineering et d'identifier les validations effectuées côté client. Puis grâce au framework de hooking Xposed, nous allons écrire un hook tenant en une seule ligne de code Java permettant de contourner le paiement. Enfin, nous verrons comment patcher le bytecode de l'application (afin d'y injecter le hook) pour être ensuite capable de la distribuer très facilement.
Pour conclure, des recommandations pratiques seront données pour se prémunir de ce genre de problème en utilisant Angry Birds comme exemple.
Speaker
Jeremy Matos (@SecuringApps) a travaillé dans le domaine de la sécurité logicielle depuis plus de 10 ans en Suisse Romande. Avec une formation académique de développeur, il a conçu et participé à l'implémentation d'une solution innovante d'authentification forte mobile.
Il a également effectué des revues de code et des audits sécurité pour des sociétés dont l'utilisateur interne était l'ennemi ou craignant pour leur réputation.
Il fournit désormais des services en sécurité applicative au sein de sa propre société. Il a présenté l'année dernière au Crypto Village de la DefCon un nouveau vecteur d'attaque contre les messageries mobiles chiffrées appelé Man In The Contacts.
Il enseigne également la sécurité logicielle et les technologies blockchain pour des formations d'ingénieur en Suisse et en France.
Meetup : https://www.meetup.com/JUGL-the-Java-User-Group-of-Lausanne/events/242895293/
YouTube : https://youtu.be/mSYuM-PrCaw
Exemple d'IOT et ML avec Android, Cassandra et SparkJUG Lausanne
Je vais vous présenter un exemple d'objet connecté et comment analyser ses données. L'objectif est de voir comment collecter les données depuis un capteur du smartphone, stocker ces données dans Cassandra et enfin, analyser ces données pour prédire notre activité avec Spark.
Une démonstration sera faite pour monter la solution en temps réel.
Speaker
Amira LAKHAL est Java Champion et développeur chez Actyx. Elle est passionnée par l’agilité et les langages fonctionnels. Elle s’intéresse aussi aux problématiques de Big Data et diverses solutions de stockage des données volumineuses. Elle a animé des conférences sur la base NoSql Cassandra. Elle aide aussi à la mise en avant des femmes dans l’IT.
Meetup : https://www.meetup.com/JUGL-the-Java-User-Group-of-Lausanne/events/237954272/
YouTube : https://youtu.be/QIhK8OSamKM
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...JUG Lausanne
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - February 2011
Alan Perkins (Coverity), Chris Chedgey (Headway Software), Bogdan Czwartkowski (Parasoft), Freddy Mallet (Sonar), Henri Tremblay (XDepend)
3. Les 7 péchés capitaux ...
Appliqués au code source
Aucune convention de codage
Beaucoup de duplications
Peu de couverture par les tests unitaires
Absence de commentaires
Beaucoup de bugs potentiels
Complexité par composant importante
Design spaghetti
4. La mission divine de Sonar
Lutter contre l'axe du mal ... car le code source le vaut bien !
5. Niveau d'armement actuel
5/7, les infidèles n'ont qu'à bien se tenir
OK : Aucune convention de codage
OK : Beaucoup de duplications
OK : Peu de couverture par les tests unitaires
KO : Absence de commentaires
OK : Beaucoup de bugs potentiels
OK : Complexité par composants importante
KO : Design spaghetti
6. Rappel de bon sens
Un projet de qualité est :
Un projet géré sous
contrôleur de version
Un projet qui compile
(Intégration continue)
Un projet avec une
traçabilité technique /
fonctionnelle
Un projet qui n'a pas
succombé à l'un des 7
péchés capitaux
9. Peu de couverture par les tests (3/7)
Junit, TestNG, Surfire, Clover, Cobertura
10. Absence de commentaires (4/7)
JavaNCSS 2 est en route
Ratio de méthode publiques hors setter/getter
avec javadoc
Ratio de classes/interfaces publiques avec
javadoc
Densité de commentaire
11. Beaucoup de bugs potentiels (5/7)
Findbugs
if (listeners == null)
listeners.remove(listener);
Sun java : JDK1.6.0, b105,
sun.awt.x11.XMSelection
lines 243-244
13. Design spaghetti (7/7)
?
Les produits références du marché
SonarJ
XDepend
Structure101
Quelques librairies
JDepend
Architecture Rules
Macker
14. Sonar à coeur ouvert
Sonar Maven Plugin
Source
Code
Cobertura
1
JavaNCSS
Surefire
PMD
Checkstyle
Changelog
Changelog
XML
Files
Sonar
DB
4
Aggregator
& Analyser
5
1-
mvn sonar
2-
http://sonar
2
3
Sonar web interface
15. De quoi demain sera fait ?
Agrégation des projets techniques par
application, service, département...
Ré-écriture de JavaNCSS
Amélioration du moteur de règles
Couverture de PHP
Mécanismes de gestion des autorisations
...
16. Les atouts
Facilité de mise en oeuvre :
mvn org.codehaus.sonar:sonar-maven-plugin:1.7:sonar
Vue consolidée sur l'ensemble du parc
applicatif
Suivi temporel des indicateurs
Gestion centralisée de la qualité (règles,
seuils)
Client web
Activité de la communauté