La formule était plutôt sympa - enfin j’espère - car il s’agissait d’une co-présentation avec David Morin (de Cityzen Data). Vous pouvez retrouver le support de ma présentation.
Soirée #bigdata au @nantesjug, c’est parti !
Pour rappel, le pitch était le suivant :
]]>Il y a 2 ans, la mode était de faire du _Big Data_, désormais il faut faire du _Smart Data_… Mais concrètement, à quoi est-ce que cela peut bien servir ?
A travers les expériences de deux entreprises, **Dictanova** (Damien Raude-Morvan) et de **Cityzen Data** (David Morin), nous essayerons de vous présenter des exemples concrets d’utilisations du Big Data et répondre par exemple aux questions suivantes :
* Quelle infrastructure mettre en place pour gérer de gros volumes de données ? Quels sont les écueils à éviter ? Les offres de type XaaS sont-elles pertinentes ?
* Comment passer du simple “hello world” en Map/Reduce à un véritable traitement métier ? Comme modéliser un enchaînement de jobs avec Oozie ? Comme obtenir des primitives de plus haut niveau que Map/Reduce ? Cascading, Spark, Tez ?
* Une fois les données stockées, comment effectuer de l’analyse sur ces dernières ? Comment utiliser des langages de requêtage comme Pig ?
* Comment gérer le changement dans son modèle de données ? Modèle de données avec Avro ? Avec Parquet ou encore Thrift ?
* Comment assurer la supervision de jobs en production sur un cluster Hadoop ?
Ainsi le 29 septembre dernier, j’intervenais au Nantes Java User Group pour la première session de rentrée.
Je viens de mettre en ligne le support de ma présentation sur Metrics, ainsi que le code d’un project d’exemple qui met en oeuvre la trio Metrics + Graphite + Grafana.
Au Nantes Jug : Codehale Metrics
Pour rappel, le pitch était le suivant :
]]>En 2014, un développeur Java est plutôt habitué à évaluer la “qualité” de son code - avec SonarQube ou des processus de peer review.
Mais lorsqu’on lui parle de la “production”, il est souvent désarmé : les métriques qu’on lui propose ne correspondent à rien de connu et il n’a pas assez d’informations pour guider ses améliorations.
Dans ce quicky, j’essaierais de vous présenter la solution que j’utilise : le framework Codehale Metrics.
Ce dernier vise à permettre au développeur de créer des indicateurs techniques ou fonctionnels. Il propose de nombreux choix d’intégration avec vos frameworks préférés et permet un export des métriques dans de nombreux formats.
Je suis heureux de vous annoncer qu’une rencontre des utilisateurs et contributeurs nantais de Debian aura lieu le 12 mars à 19 h.
Elle se déroulera au 1er étage du bar Le Flesselles, situé au 3 allée Flesselles, au centre-ville de Nantes. Il est facilement accessible depuis l’arrêt de tram Commerce (moins de 2 minutes à pied).
Afficher une carte plus grande
Ce rendez-vous sera l’occasion de se rencontrer entre nantais (et au dela :) autour du système d’exploitation universel qu’est Debian GNU/Linux.
L’objectif est de partager des informations, des connaissances, tout cela de façon conviviale autour d’un verre.
Bien sûr, nous ne sommes pas sectaires, et accueillons avec grand plaisir l’ensemble des personnes souhaitant venir troller débattre avec nous !
Si vous avez un sujet à présenter / débattre durant cette soirée, n’hésitez pas à contacter drazzib_AT_debian.org et thomas_AT_vinc-net.fr Nous sommes preneurs d’idées pour cette 1ère session mais également pour de prochaines rencontres !
Afin de faciliter l’organisation de cette rencontre, merci de vous inscrire sur cette page.
]]>J’ai découvert récemment une nouvelle fonction de Git qui permet de ré-écrire l’historique d’un projet afin de la séparer en plusieurs morceaux.
Pour prendre un exemple concret, imaginons que je dispose d’un dépôt Git qui contient un certain nombre de sous-répertoires. Après quelques mois d’utilisation, je me rends compte, que l’un de sous-répertoire représente désormais un projet à part entière et j’aimerais donc le détacher dans un dépôt séparé.
Comment puis-je faire cela tout en gardant l’historique des fichiers dans le répertoire ?
J’ai donc la structure suivante :
XYZ/
.git/
D1/
D2/
D3/
Que je souhaite transfomer vers la structure suivante :
XYZ/
.git/
D1/
D2/
D3/
.git/
Depuis la version 1.7.11 de Git, un outil complémentaire (contrib) est disponible qui permet d’automatiser presque entièrement cette tache. Il s’agit de git subtree.
NB: Sur Debian, le script n’est pas installé par défaut, mais est cependant disponible dans /usr/share/doc/git/contrib/subtree/git-subtree.sh
Voici donc un exemple d’utilisation de git subtree :
# export INIT_REPO=<path-to-init-repo>
# cd ~
# cd $INIT_REPO
# git subtree split -P <dossier> -b <branche>
Attention:
# export NEW_REPO=<path-to-new-repo>
# cd ~
# mkdir $NEW_REPO
# cd $NEW_REPO
# git init
# git pull $BIG_REPO <branche>
# git remote add origin <git@github.com:user/repo.git>
# git push origin -u master
# cd $INIT_REPO
# git rm -rf <dossier>
Attention : cette procédure va conserver l’ensemble de l’historique dans le dépôt Git initial. Ceci ne permet donc pas directement de gagner de l’espace disque.
Il est donc possible grace à git subtree de refactorer un dépot. La conservation de l’historique est un élément essentiel de cette méthode qui permet de repenser son ou ses projets sans perdre d’informations précieuses.
Si vous souhaitez obtenir plus d’informations sur la commande git subtree, je vous invite à consulter les liens suivants :
]]>J’ai en fait plusieurs objectifs :
Depuis la présentation de Code Story Saison 3 à la mi-septembre au Jug Summer Camp à La Rochelle, j’ai commencé à jouer sérieusement avec le framework Vert.x combiné avec le language fonctionnel Scala.
Je vous propose donc d’installer ce couple diabolique afin de voir ce qu’il est possible de faire avec :)
L’installation de Vert.X est très bien décrite sur le site officiel, mais je vous propose ici un résumé des instructions.
Les pré-requis sont assez simples :
Sous Linux l’installation de Vert.x se résume à cela (en temps de root) :
# cd /opt/
# wget http://dl.bintray.com/vertx/downloads/vert.x-2.0.2-final.tar.gz
# tar xvzf vert.x-2.0.2-final.tar.gz
# ln -s vert.x-2.0.2-final/ vertx
# chown -R [VOTRE USER] vert.x-2.0.2-final/
La commande vertx est disponible dans le répertoire /opt/vertx/bin/. Je vous recommande d’ajouter la commande vertx dans votre PATH comme ceci :
$> export VERTX_HOME=/opt/vertx/
$> export PATH=$VERTX_HOME/bin:$PATH
Pour vérifier que l’ensemble fonctionne correctement :
$> vertx version
2.0.2-final (built 2013-10-08 10:55:59)
Créer un fichier server.js avec le contenu suivant
1 2 3 4 5 |
|
Il suffit ensuite de l’exécuter avec la commande vertx run
$> vertx run server.js
Le module Scala pour Vert.X permet, comme son nom l’indique, d’utiliser des scripts dans le language Scala au sein de Vert.X. Il autorise ces scripts à accéder a l’API de Vert.X (HTTP, EventBus, DNS, etc…).
Même si la version 1.0 de l’extension Scala pour Vert.x est disponible depuis peun, je souhaitais profiter des dernières modifications et suivre le développement au jour le jour. Je me suis donc mis en tête de récupérer les sources et de construire une version cutting edge :)
Il faut récupérer le repository GIT du mod-lang-scala. On peut ensuite utiliser Gradle pour le construire et l’installer localement.
$> git clone https://github.com/vert-x/mod-lang-scala.git
$> cd mod-lang-scala/
$> ./gradlew clean install
Une fois le build Gradle exécuté, le module scala pour vertx est alors installé dans votre ~/.m2/repository/
Il faut ensuite déclarer ce module dans la configuration de Vert.X. Pour cela, il faut éditer le fichier conf/langs.properties et ajouter deux lignes supplémentaires :
1 2 3 4 5 |
|
Au premier lancement d’un script .scala, Vert.X ira récupérer le module nécessaire dans votre ~/.m2/repository/.
Créer un fichier server.scala avec le contenu suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Essayons maintenant de lancer ce nouveau script Scala avec Vert.X
$> vertx run server.scala
UPDATE: En cas de problème avec la version cuting edge de ce module, il est possible de revenir à la version stable de ce dernier. Pour cela, il suffit d’éditer le fichier conf/langs.properties pour indiquer que l’on souhaite utiliser la version 0.1.0 du module:
1
|
|
Toutes les fonctionnalités de Vert.X ne sont pas encore complètement supportées par le module Scala, mais le module HTTP et Event Bus étant présents, il y a déjà moyen de s’amuser un peu !
Le lancement officiel (avec de nouvelles règles du jeu) est prévu à partir du 14 octobre.↩
Plus que 7 jours avant le début officiel de la conférence annuelle des développeurs Debian aka DebConf. Il s’agit de la 13ème édition de cette conférence, mais c’est surtout le 20ème anniversaire du projet Debian ! En tant que membre de ce projet depuis quelques années, je suis toujours impressionné par la capacité de cette communauté à construire le système d’exploitation universel depuis plus de 60 pays et avec 1000 développeurs !
Je vais donc profiter de ces quelques jours en Suisse, entouré de geeks en puissance, pour essayer de me remettre à travailler sur Debian.
]]>Prendre un tableau et un papier pour modéliser ses données, c’est ce que nous faisons régulièrement.
Cependant à chaque fois nous devons traduire notre modèle en _MCD_ pour l’insérer dans un _SGBD_.
La promesse des bases de données orientées graphe c’est d’être **veleda ready** ! Plus besoin de convertir notre modèle !
Cette présentation aura lieu au NantesJUG le 14 mai 2013 à 19h. Elle sera animée par moi-même, Benoit Simard ainsi que Cédric Fauvet.
Nous vous parlerons de Neo4j, une base données NoSQL orientée graph écrite en Java, ainsi que des concepts qui gravitent autour.
On vous montrera comment réaliser un système de recommandation simple et efficace basé sur les données de GitHub.
Update: Le support de la présentation est disponible en ligne.
]]>Basée sur le même modèle que les réunions mensuelles du Nantes JUG, cette journée permet de prendre les dernières nouvelles du monde Java et des outils technologiques liés. Comme d’habitude, on en apprendra autant sur les projets/technologies durant les conférences qu’en discutant à la pause café :)
Plusieurs intervenants de renoms sont programmés : Emmanuel Bernard - Hibernate - JSR 303, Alexis Moussine-Pouchkine - projet GlassFish, Tugdual Grall - eXo Platform, Julien Dubois - co-auteur de Spring par la pratique 1 et 2, Florent Benoit - membre de l’expert group EJB 3.1… et encore j’en passe bien d’autres…
Comme j’ai réussi à me libérer ce vendredi et que Ippon Technologies me sponsor pour le déplacement, je vais me faire un plaisir d’y faire un tour ! Vivement vendredi !
]]>Je pense qu’ils ont affecté plusieurs dizaines de personnes à des taches de préparation/conception pour sortir l’ensemble de ces “projets”. Il faut avouer également que c’est aussi une très bonne manière de faire un peu de promotion sur des chaînes de télé/radio à peu de frais :)
Voila la liste que j’ai pu établir :
Google YouTube : Les vidéos de YouTube disponibles en version “texte” (caractères ASCII) - soit disant pour réduire la bande-passante utilisée : http://youtube-global.blogspot.com/2010/03/textp-saves-youtube-bandwidth-money.html
Google : Échange de nom entre la ville de Topaka (TX, USA) et Google : http://googleblog.blogspot.com/2010/04/different-kind-of-company-name.html
Android : application Google Animals permettant de comprendre ce que raconte son animal de compagnie : http://www.google.co.uk/intl/en/landing/translateforanimals/
Google Books : un bouton “View in 3D” disponible permettant de voir les textes des bouquins en 3D : http://booksearch.blogspot.com/2010/03/3d-books-google-books-now-offers.html
Google Docs : stocker n’importe quoi dans Google Docs : http://googledocs.blogspot.com/2010/03/upload-and-store-anything-in-cloud-with.html
Google Street View : comme dans Google Books, ici ce sont les prises de vues des rues qui sont disponible en 3D : http://photofla.me/img/henco/googlestreetview3d.png
Google Code : création de la librairie de programmation Google Annotations Gallery (GAG), pour “structurer” ses commentaires @AnimalsHarmedDuringTheMaking @WrittenWhile(“surfing Chatroulette”) - génial : http://code.google.com/p/gag/
RFC 5841 : TCP Option to Denote Packet Mood - encore mieux que le IP over Avian Carriers : http://www.rfc-editor.org/rfc/rfc5841.txt
Google Chrome : extension permettant d’avoir un retour sonore des actions effectuées dans le navigateur : https://chrome.google.com/extensions/detail/kkfibincabhfblmkmhcabnlghmncdcaf/
Et j’en oublie sûrement beaucoup d’autres !
Update : Wikipedia dispose d’une page dédiée qui liste l’ensemble des Google’s hoaxes.
]]>Je dois dire que j’ai été agréablement surpris par la qualité de l’intervenant : des explications simples, une très bonne maitrise des sujets, et une forte interaction avec le public. Ainsi, cette présentation était accompagnée de nombreuses démonstrations, ponctuées de “clap, clap, clap” ou de “bouuuhh” suivant le succès de chacune d’elle :) Didier était accompagné de Salvador Diaz (freelance) sur la partie GWT2.
Photos : http://picasaweb.google.com/diaz.salvador/NantesJUG
Pour ceux qui n’étaient pas présents à cette présentation, voici mes notes :
“Le Cloud, rien que le Cloud.”
Objectif: mettre à disposition les technologies utilisées par Google en interne pour en faire profiter les gens… et bien sûr monétiser ces technologies .
IaaS : Location d’infrastructure (serveur, bande passante)
PaaS : Location de plateforme (container J2EE, stockage)
SaaS : location de service (application verticale) “De la machine au software, louer ce dont on a besoin”
Chrome!
Support de HTML5
Les applications RIA oui, mais uniquement avec des standards
ROA Ressource Oriented Application
1 ressource = 1 url
REST http://www.pompage.net/pompe/comment-j-ai-explique-rest-a-ma-femme/
Pour les applications “single pages bootstrap” (ex: gmail), on utilise le # dans l’URL pour indiquer la ressource à utiliser
A écouter : http://lescastcodeurs.com/
Google App Engine est une plateforme d’hébergement d’applications Java, sur les serveurs de Google.
Une partie de l’API Java standard est disponible, ce qui rend potentiellement hébergeable beaucoup d’application Java existantes.
Plugin Eclipse fournit par Google : http://code.google.com/intl/fr/eclipse/
Philosophie NoSQL: stockage dans BigTable Accès par l’api JDO
Déploiement “One-Click” 1000 déploiement autorisé par jour (large !)
Pub google :
Réalité :
Il est possible de donner une limite de facturation par jour (genre 2$ par jour)
Il faut intégrer AppEngine (le Cloud Computing en général) dans nos choix d’architecture.
Exemple évident : campagne marketing, avec mini-site dynamique.
Problématique “complexe” sans le Cloud Computing :
SDC : ouvrir un port 80 de façon indéfini vers google : un simple tunneling HTTP
Diagramme de l’intégration de SDC dans la stack Google AppEngine :
La persistance avec JDO (Laurent Gérin: “JDO, ca ne marche pas” :)
Le support de XMPP
Didier Girard: Comme pour l’ensemble des API non J2EE, il faut utiliser les bons patterns pour permettre le changement de provider le jour venu
Google Web Toolkit est un ensemble d’outils de Google permettant de développement d’applications riches (RIA) via notamment un compilateur Java vers Javascript.
Plugin Eclipse fournit par Google : http://code.google.com/intl/fr/eclipse/
Didier Girard recommande GWT Designer ($ 79 / an)
GWT fait de la compatibilité au cas par cas pour chaque browser (!= de la vision OpenWeb !) Par exemple GWT 1.7 est désormais compatible avec IE8.
GWT ne fait pas “encore” du OpenWeb car ce n’est pas actuellement possible : support de IE6 & co…
Diagramme des traitements GWT :
Remarque sur la pauvreté des composants GWT natifs
Choix #1 utiliser une des librairies de composants complémentaires (SmartGWT, GWT-Ext, …)
Didier Girard : Oui, c’est bien mais ca dépend de la durée de vie de l’application Pour une livraison dans 3 mois : oui Mais pour une application avec une durée de vie de +5 ans : faire ses propres composants personnalisés
A lire : http://www.slideshare.net/hbraun/gwt-jug-stuttgart
Nouveautés de GWT2
Utilisation d’un plugin dans votre navigateur préféré pour le debug (et plus UN navigateur intégré par platforme)
RunAsync : permet de charger des parties d’une application GWT “on-demand”, plutôt que de charger toute l’application dès l’affichage initiale dans le navigateur (sinon, on arrive vite à des applications avec UN fichier javascript > 800Ko) Voir article
UIBinder : encore un nouveau langage de définition d’interface en XML… pfff… (qui n’est d’ailleurs même pas le même que celui d’Android)
Meilleur support de HtmlUnit pour les tests unitaires
Google Android est à la fois :
un système d’exploitation (basé sur Linux) pour appareils mobiles
des applications de bases pour le téléphone
un SDK pour le développement d’application complémentaires
Plugin Eclipse fournit par Google : http://developer.android.com/sdk/eclipse-adt.html
Création d’un compte sur le Market Place : 2 minutes montre en main + 25$
On peut directement publier des applications qui sont accessibles depuis un téléphone Android [clin d’oeil au processus de validation présent sur le “Store” de la marque à la pomme :]
Diagramme de la stack Android :
Objectif: réunir en un seul lieu l’ensemble des éléments d’une conversation (une “Wave”) : email, chat, documents, gadgets Pour l’instant cet outil reste en “beta semi-ouverte”.
Une Wave est statefull : on le retrouve dans l’état précédent à chaque ouverture de session
Les Gadgets sont également statefull : on peut conserver une HashMap d’infos
Les “robots” sont un élément important de Wave. Ils reçoivent l’ensemble des éléments de la Wave et peuvent réagir aux événements. L’ajout d’un “robot” peut automatiquement déclencher l’ajout d’un ou des Gadgets.
http://picasaweb.google.com/diaz.salvador/ParisJUG#5404449358120409650
http://picasaweb.google.com/diaz.salvador/ParisJUG#5404449858554874354
Développeur = innovateur
AppEngine ou Android : un bon moyen de déployer son application, son idée, sa petite révolution avec une retour direct des utilisateurs (réduction potentielle des intermédiaires)
Enjoy!
]]>L’April a pour objectifs de :
Promouvoir le logiciel libre dans toutes les sphères de la société ;
Sensibiliser le plus grand nombre aux enjeux des standards ouverts et de l’interopérabilité ;
Obtenir des décisions politiques, juridiques et réglementaires favorables au développement du logiciel libre et aux biens communs informationnels ;
Favoriser le partage du savoir et des connaissances.
Adhérer maintenant à l’association April pour soutenir le logiciel libre.
]]>C’était prévisible : Google Androïd vient de sortir sous une licence libre. Il est donc librement téléchargeable même si pour l’instant il ne faut pas s’attendre à pouvoir l’installer sur n’importe quel téléphone. Pour le moment, c’est plutôt l’aspect “librement modifiable” qui risque d’intéresser beaucoup de geek et de faire émerger une communauté de développeurs.
Une question importante : face au roulo-compresseur Google, quel sera le devenir du projet OpenMoko ? On pourrait penser que leur stratégie va désormais s’orientée vers une mise en avant de leur plateforme matériel libre - les schémas de conception du téléphone sont sous licence libre. Peut-être vont-ils mettre la partie logiciel et système d’exploitation au second plan.
Via un mail sur la liste de discussion “linux-mips”, Maxime Bizon (salarié de Freebox SA) a publié un ensemble de patch permettant de supporter les CPU Broadcam 63xx. Ce processeur est notamment utilisé dans le boitier ADSL de la Freebox mais également de la NeufBox.
Ces patchs sont déjà intégrés dans la distribution Linux orientée embarqué : OpenWRT. Un grand bravo à Florian Fainelli pour la réactivité !
]]>Pour cette nouvelle vidéo, il a parcouru 42 pays en 14 mois et le résultat est vraiment bluffant : beaucoup de paysages, de cultures et d’humour !
Afin de mieux profiter de cette vidéo - en “haute définition” - vous pouvez cliquer sur le logo Viméo (en bas à droite).
]]>