Skip to content

Blogs de Développeurs: Aggrégateur de Blogs d'Informatique sur .NET, Java, PHP, Ruby, Agile, Gestion de Projet

Forum Logiciel

Forum Logiciel : diffusion de connaissance et d’informations sur toutes les activités liées au développement d’applications informatiques en entreprise.

Agrégateur de flux

Retour sur le Docker Paris avec JĂ©rĂ´me Petazzoni

Zenika - mar, 09/16/2014 - 16:00

Le dernier meetup du Docker Paris s'est déroulé dans nos locaux parisiens, avec Jérôme Petazzoni de Docker Inc. Nous vous proposons de voir, ou revoir, son talk.

Docker en prod Jérôme nous a présenté plusieurs réponses aux grandes questions classiques associées au déploiement avec Docker. Télécharger les slides... Read Retour sur le Docker Paris avec Jérôme Petazzoni

Catégories: Blog Société

Coaching et Jeux pour l’innovation et l’intelligence collective

Qualitystreet - Jean Claude GROSJEAN - mar, 09/16/2014 - 14:33

« On peut en savoir plus sur quelqu’un en une heure de jeu qu’en une annĂ©e de conversation  » Platon L’innovation et l’intelligence collective sont aujourd’hui des enjeux forts des entreprises. Pour rĂ©pondre Ă  ces enjeux, l’utilisation d’une approche ludique dans des ateliers dĂ©diĂ©s auprès de grands collectifs… favorise l’appropriation des problĂ©matiques, encourage une rĂ©flexion collective…

The post Coaching et Jeux pour l’innovation et l’intelligence collective appeared first on QualityStreet - Blog Pro de Jean Claude Grosjean.

Catégories: Blog Individuel

Le 24 septembre, ParisJS fait sa rentrée chez Xebia !

parisjsLogo_transparentUne nouvelle saison de ParisJS s’ouvre avec la 34ème Ă©dition qui se dĂ©roulera chez Xebia le 24 septembre Ă  19h.

 

Au programme de ce techevent :

  • Chromecast, ses possibilitĂ©s et comment dĂ©velopper une application en 10 minutes par Marc Buils.
  • Les bases de donnĂ©es graph, principes gĂ©nĂ©raux et dĂ©monstration par l’exemple avec Gremlin dans un environnement JS, entre les mains de Jean-Baptiste Musso.
  • Monitoring avancĂ© très IoT : Jonathan Petitcolas nous montre comment suivre les constantes vitales de nos plantes vertes grâce à une solution Ă  base d’Arduino, JhonnyFive, Soket.io et D3.js.
  • WebGL, Ă©tat de l’art. Deux ans et demi après les premières spĂ©cifications, Xavier Bourry prĂ©sente un tour d’horizon de l’Ă©cosystème, son prĂ©sent et son futur.

 

Pour connaitre tous les dĂ©tails, s’inscrire et participer : meetup.com/Paris-js

Pour s’y rendre :

Xebia

156, boulevard Haussmann
Immeuble A – 7ème étage
75008 Paris

 

 

Catégories: Blog Société

Retour sur le Hackathon Xebia

http://www.gravatar.com/51b7d6d805de7b0525d2d8fbb7b4aa0ahttp://blog.xebia.fr/author/crochashttp://twitter.com/%40crochasPar Clément Rochas
Ce mois-ci se dĂ©roulait comme chaque premier mercredi du mois le XKE (Xebia Knowledge Exchange) chez Xebia. Une fois par mois la totalitĂ© des xebians se retrouvent au 156, Bvd Haussman pour partager leurs expertises lors d’une journĂ©e qui prend la forme d’une confĂ©rence. La session de ce mois de septembre Ă©tait très attendue par les Xebians car il s’agissait du hackathon interne annuel. Un hackathon, contraction de « hack » et « marathon », dĂ©signe un Ă©vĂ©nement de programmation informatique collaborative. Le concept du hackathon est nĂ© aux États-Unis Ă  la fin des annĂ©es 1990 et il se dĂ©mocratise depuis l’annĂ©e dernière; de nombreuses grandes entreprises françaises organisent ce type d’évĂ©nement.

Cette seconde Ă©dition hackathon en XKE nous permet chez Xebia de joindre l’utile Ă  l’agrĂ©able. C’est l’occasion pour nos consultants de travailler ensemble Ă  parfaire leurs techniques de dĂ©veloppement, d’Ă©changer avec d’autres consultants et de tester les dernières technologies.

Ce qu’on pouvait voir lors de cette journĂ©e La prise en main de la gestion des compĂ©tences par les consultants

Dans le but de faciliter la vie des commerciaux de Xebia, nous avons développé une application leur permettant de rechercher des compétences ou des Xebians. Cette application permettra aux consultants de mettre en avant leurs compétences mais aussi leurs envies.

XSkillz.png

 

La stack technique? AngularJS, Node.Js et NEO4J comme base de donnĂ©es. L’application est disponible sous github et dĂ©ployĂ©e avec Heroku. L’instance NEO4J est provisionnĂ©e par GrapheneDB via un plugin Heroku.

La gestion de la vie de xebia Mob programming

Nous avons en interne une application de gestion du XKE qui nĂ©cessitait un petit rafraichissement. L’occasion Ă©tait trop belle de tester le mob programming sur ce vaste chantier de refactoring. L’Ă©quipe s’est donc scindĂ©e en deux groupes de quatre dĂ©veloppeurs travaillant chacun avec une seule station de travail, le clavier passant de main en main rĂ©gulièrement. Une belle occasion de partager, de comparer ses techniques et de dĂ©battre pour amĂ©liorer le code.

Nous avons donc fait le choix de partir sur une API REST Java8 et un front AngularJS pour avoir une stack solide et offrant la possibilitĂ© Ă  tout le monde de « pull requester » sur le projet. Nous avons aussi mis l’accent sur les tests et le dĂ©ploiement continue dans le cloud : CloudBees pour le serveur et github pour le front.

Un service de feedback

Le XKE est une confĂ©rence qui permet pour beaucoup de Xebians de se prĂ©parer pour se prĂ©senter dans les grandes confĂ©rences françaises et europĂ©ennes. Nous attachons donc un intĂ©rĂŞt particulier Ă  la rĂ©colte de feedback. Une Ă©quipe a travaillĂ© sur l’automatisation cette rĂ©colte. Les choix techniques se sont tournĂ©s vers google script, y compris le backend. L’occasion de voir l’Ă©tendue des possibilitĂ©s de google apps.

Réduire le nombre de mails et organiser les débats techniques

Chez Xebia, les mailing lists techniques sont Ă©normĂ©ment utilisĂ©es et le nombre de mails envoyĂ©s chaque jour est tel qu’il est parfois difficile de suivre. Une Ă©quipe a donc choisi de travailler sur un service similaire Ă  stackoverflow qui permettra d’historiser les conversations et de les enrichir par un système de notation tout en gardant la possibilitĂ© de passer par sa boite mail.

La stack retenue pour ce projet ? Java 8 bien sûr avec SparkJava pour le serveur REST, et AngularJS pour le front.

Le streaming du XKE

Xebia-TV-logo-final.png

Le XKE est un moment riche en partage. Le partage du savoir Ă©tant un des axes majeurs de Xebia, il Ă©tait temps de rendre le contenu de cette journĂ©e visible Ă  l’extĂ©rieur. Les techniques de streaming devenant de plus en plus efficaces, c’est le moment pour Xebia d’avoir sa propre chaĂ®ne de TV pour proposer du contenu de qualitĂ© en direct ou en diffĂ©rĂ©. Vous en saurez plus très bientĂ´t…

 

Les technologies retenues pour ce projet sont AngularJS et NodeJS.

Un partenariat bĂ©nĂ©vole avec l’UNICEF

Une Ă©quipe de dĂ©veloppeurs s’est constituĂ©e pour travailler sur un projet en partenariat avec l’UNICEF. L’idĂ©e est de dĂ©velopper une application permettant Ă  la fois de simplifier la collecte de dons (actuellement papier stylo) et en mĂŞme temps de gĂ©rer les Ă©quipes. Les Xebians ont utilisĂ© leur expertise afin d’innover sur la problĂ©matique de la collecte de fond :

  • applications mobiles pour les Ă©quipes de terrains
  • architecture cloud
  • infrastructure bigData de collecte de donnĂ©es internes et externes
  • analyse de donnĂ©es et machines learning
Creuser des sujets d’actualitĂ©

Les sujets techniques d’actualitĂ©s sont le carburant des Xebians. Dans le cadre du hackathon deux thèmes ont Ă©tĂ© abordĂ©s cette annĂ©e :

  • Devops d’abord avec un projet d’outil de dĂ©ploiement continu basĂ© sur la notion de pipleline s’appuyant sur une usine logicielle (Git, Jenkins, etc.), CoreOS, Docker et un outil d’infra-as-code type Puppet, Chef, Ansible ou Salt.
  • Machine learning ensuite avec le prototype d’un outil d’analyse des tweets et des sentiments associĂ©s (nĂ©gatif, neutre, positif).

viking-scr.png

L’application Viking permet Ă  l’utilisateur d’entrer un ou plusieurs mots clĂ©s et de rĂ©cupĂ©rer une tendance. La tendance est dĂ©terminĂ©e après analyse des tweets correspondants aux termes recherchĂ©s. L’analyse se fait de façon continue et asynchrone et les donnĂ©es circulent de service en service par le biais d’un bus de messages. L’information est poussĂ©e jusqu’au web Ă  travers un websocket.

Mon sentiment sur l’Ă©vĂ©nement cette annĂ©e

La première heure de ce hackathon Ă©tait riche d’enseignements. Elle a prouvĂ© la maitrise de l’agilitĂ© de nos consultants. En effet dans la plupart des Ă©quipes, on a pu voir un fonctionnement agile : synthèse du but dans un elevator pitch, discussion et dĂ©bat des fonctionnalitĂ©s autour d’une story map, partage des tâches et crĂ©ation de binĂ´mes. Les Ă©quipes ont su organiser leur backlog, faire des points rĂ©guliers et efficaces malgré l’effervescence.

On a vu cette annĂ©e fleurir les hackathons au sein des entreprises : SociĂ©tĂ© gĂ©nĂ©rale, SNCF, Axa, Orange pour ne citer que ceux oĂą nos consultants Ă©taient prĂ©sents cette annĂ©e. Nous participons rĂ©gulièrement Ă  l’organisation de ces Ă©vĂ©nements comme pour Libon. C’est la preuve que les entreprises tentent aujourd’hui de renouer avec l’innovation. Le hackathon, hier rĂ©servĂ© aux startups, s’intègre aux stratĂ©gies d’entreprises.

De notre cotĂ©, nous rĂ©flĂ©chissons dĂ©jĂ  Ă  l’Ă©dition 2015 !

Capture-d’écran-2014-09-06-à-16.13.40.pngCapture-d’écran-2014-09-06-à-16.24.10.png

Catégories: Blog Société

Ippevent : Spring Integration le 25 septembre

Blog d’Ippon Technologies - lun, 09/15/2014 - 11:19

Spring Integration implémente dans Spring les Enterprise Integration Patterns qui visent à mettre en place une architecture découplée, légère, orientée messages et événements (Event Driven Architecture). Ainsi, différents protocoles peuvent être littéralement intégrés aux projets Spring sans pour cela créer de dette technique.

Cette session propose de vous prĂ©senter un ensemble d’abstractions de très haut niveau, pouvant s’articuler souplement autour de canaux et d’adaptateurs en plus des outils qui permettent de mettre en place le routage, le dĂ©coupage et l’agrĂ©gation des messages.

Speaker : Thomas Escolan

Cet Ippevent se tiendra le jeudi 25 septembre 2014, Ă  partir de 19 heures, Ă  Paris dans les locaux d’Ippon situĂ©s 47 Avenue de la Grande ArmĂ©e.

Catégories: Blog Société

[ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour !

Le blog de Patrick Guimonet - lun, 09/15/2014 - 10:31
    I notice everyday that email options in Yammer are not well known or used. Here is a quick summary. Je note chaque jour que les options de messagerie associées à Yammer ne sont pas bien connues, ni utilisée...
Catégories: Blog Individuel

Xebia participe Ă  la NSSpain 2014

nsspain

Cette annĂ©e, Xebia participe Ă  la NSSpain 2014 avec un talk sur les mĂ©triques de code. Ce sera l’occasion de prĂ©senter nos approches de qualitĂ© des dĂ©veloppements et d’Ă©changer avec de nombreux experts internationaux.

La NSSpain 2014, une confĂ©rence technique dĂ©diĂ©e au monde du dĂ©veloppement iOS et OS X, se tiendra comme l’annĂ©e dernière Ă  Logroño, dans la rĂ©gion de La Rioja en Espagne.

Cette Ă©dition aura lieu les 16, 17 et 18 septembre et aura parmi ses speakers Mike Ash, John Reid,  Matt Galloway, David Rönnqvist et beaucoup d’autres.

Xebia y participera avec un talk le vendredi 18 septembre. Le slot intitulĂ© "Be the quality you want to see: Code Quality Metrics" illustrera les techniques et les outils pour gĂ©nĂ©rer et analyser les mĂ©triques de qualitĂ© d’une base de code.

Si vous y participez en tant que spectateur, n’hĂ©sitez pas Ă  venir nous rencontrer sur place pour Ă©changer sur nos approches de dĂ©veloppement.

Catégories: Blog Société

La notion de don / contre-don à l’épreuve des startups

ekito people - dim, 09/14/2014 - 23:30

Depuis quelques annĂ©es, les articles de presse spĂ©cialisĂ©s, blogs et autres lieux d’expression des acteurs de l’entrepreneuriat et des startup faisant rĂ©fĂ©rence Ă  la sociologie maussienne font florès. Outre la tentation de « vernir »  son propos d’un label savant, la pertinence de cette rĂ©fĂ©rence semble faire sens pour beaucoup de commentateurs.

 

Donner-recevoir-rendre

En 1923-1924 dans l’AnnĂ©e Sociologique, l’anthropologue Marcel Mauss publie son « Essai sur le don . Forme et raison de l’Ă©change dans les sociĂ©tĂ©s archaĂŻques. » Comment ce texte ancien est-il aujourd’hui considĂ©rĂ© comme un cadre thĂ©orique pertinent de l’entrepreneuriat et tout particulier de l’Ă©cosystème startup ?

marcelmauss_2

A l’Ă©poque et Ă  l’aide d’exemples empruntĂ©s Ă  des sociĂ©tĂ©s diverses et mis en Ă©vidence par B. Malinovski dans son ouvrage « Les argonautes du Pacifique occidental » en 1922, l’auteur montre que le don est obligatoirement suivi d’un contre-don selon des codes prĂ©-Ă©tablis. Dons et contre-dons, articulĂ©s autour de la triple obligation de « donner-recevoir-rendre », crĂ©ent un Ă©tat de dĂ©pendance qui autorise la recrĂ©ation permanente du lien social.

Les trois actions : donner – recevoir – rendre, qui sont exercées en des lieux, des circonstances et des temps différents constituent au sein du marché, un système, par essence, jamais équilibré. Ce déséquilibre permanent représente le fondement même de l’échange social. Il place les acteurs dans une situation de réciprocité, d’endettement les uns vis-à-vis des autres. C’est le corps social dans son ensemble, par qui transite le don, qui est garant du fonctionnement du mécanisme.

   « Dans le don, il ne s’agit pas d’avoir pour avoir mais [...] d’avoir pour ĂŞtre »

Selon Marcel Mauss, le don est un phĂ©nomène commun Ă  toutes les sociĂ©tĂ©s humaines passĂ©es et prĂ©sentes. C’est une morale universelle et « Ă©ternelle » associĂ©e Ă  notre condition « d’animal politique ». Marcel Mauss fait une critique implicite des analyses classiques de l’Ă©conomie de marchĂ© et prend position pour ce type d’Ă©change naturel vers lequel, selon lui, nos sociĂ©tĂ©s tendraient Ă  revenir, contrairement aux idĂ©es dĂ©veloppĂ©es par l’Ă©conomie classique qui voient dans le troc la forme d’Ă©change naturelle, version simplifiĂ©e des Ă©changes marchands. « Le système que nous proposons d’appeler le système des prestations totales [...] constitue le plus ancien système d’Ă©conomie et de droit que nous puissions constater et con­ce­voir. Il forme le fond sur lequel s’est dĂ©tachĂ©e la morale du don-Ă©change. Or, il est exactement, toute proportion gardĂ©e, du mĂŞme type que celui vers lequel nous voudrions voir nos sociĂ©tĂ©s se diriger ».

Bien que participant du mĂŞme système de recherche d’intĂ©rĂŞt, le système du don/contre-don viserait prioritairement, non pas l’accumulation de richesse, mais prioritairement l’augmentation du prestige et de la renommĂ©e. « Dans le don, il ne s’agit pas d’avoir pour avoir mais [...] d’avoir pour ĂŞtre »

A la suite de Mauss de nombreuses Ă©tudes se sont penchĂ©es sur ces questions tentant de mettre en Ă©vidence que la logique du don se dĂ©marquerait radicalement de celle du marchĂ©. Parfois contestĂ©, ce “paradigme” fut structurant pour les Sciences Sociales jusqu’à aujourd’hui.

  Le don au cĹ“ur de l’Ă©cosystème startup

Quelles apports tirer pour l’entrepreneuriat modèle startup de ces thĂ©ories venues de l’anthropologie ? Il serait ainsi possible, dans le cadre d’un Ă©cosystème startup d’Ă©chapper, au moins partiellement, Ă  l’unicitĂ© du mode dĂ©veloppement entrepreneurial exclusivement financier. Lever des fonds ne serait pas alors suffisant et pourrait mĂŞme devenir un atout marginal, Ă  condition d’accumuler les Ă©changes et la rĂ©ciprocitĂ©  :

  1. La start-up vit dans un environnement social Ă  l’intĂ©rieur duquel elle doit, pour se dĂ©velopper, rechercher des synergies avec l’ensemble de ses partenaires. Or l’aide et l’entraide permettent une valorisation collective et personnelle, grâce Ă  l’image sociale très positive du “modèle” startup. Entreprendre dans cet Ă©cosystème serait pour les porteurs et ceux qui les aident (individus ou organisations), participer au « bien commun » de la crĂ©ation d’innovation, de valeurs et d’emploi et d’imagination du futur. En d’autres termes, la valorisation de entrepreneuriat innovant est en soi une rĂ©compense symbolique, non seulement pour les porteurs de projets, mais Ă©galement pour tout le système d’accompagnement qui en dĂ©coule.
  2. La dĂ©marche du partage dĂ©sintĂ©ressĂ© basĂ© sur la confiance est l’une de clĂ©s pour garantir sa survie et sa croissance ainsi qu’un système d’échange avec d’autres acteurs : programmes de coaching, partenariat actifs, participation des dirigeants Ă  des rĂ©seaux, accĂ©lĂ©rateurs, pĂ©pinières, associations de soutien, etc. La vox populi constate que les startup s’ouvrant Ă  leur environnement, pratiquant l’association dĂ©sintĂ©ressĂ©e et basant leurs relations sur la confiance, se dĂ©veloppent plus vite et deviennent naturellement plus rĂ©sistantes.

Entreprendre dans l’Ă©cosystème startup, finalement, pourrait ne pas ĂŞtre principalement et uniquement un projet Ă  vocation Ă©conomique mais l’accomplissement personnel et social des acteurs du système…

The post La notion de don / contre-don Ă  l’Ă©preuve des startups appeared first on ekito people.

Catégories: Blog Société

API RESTful, un retour d’expérience – Soirée Décalée au 24 Septembre

Alpes JUG - ven, 09/12/2014 - 15:48

Update : La soirée est décalée au 24 Septembre

De plus en plus de sites web fournissent à présent des APIs “REST” pour interagir avec leur données. Cependant, le fait de publier une API accessible via le web ne fait pas pour autant de celle-ci une API “RESTful” au sens précis du terme. Qu’est-ce donc qu’une API RESTful à proprement parler?

Nous essayerons d’apporter des éléments de réponse à cette question en décrivant tout d’abord les principes des architectures REST tels qu’ils ont été codifiés par Roy Fielding. Nous examinerons ensuite comment ces principes ont été mis en œuvre dans le cadre d’une implémentation d’une API RESTful permettant d’interagir avec une source de données JCR et nous considèrerons comment nous avons déviés aux principes et pour quelles raisons.

Infos et inscriptions : Inscriptions :https://plus.google.com/u/0/events/cbsfu2oi0fl4f2hbei29t7t403k Cette soirée se déroulera sur le campus à la Maison Jean Kuntzman le 24 Septembre à partir de 19h00.

Pour venir : Maison Jean Kuntzmann Université Joseph Fourier Grenoble 3 38400 Gières

Le conférencier :  Christophe Laprun est développeur chez Jahia

Slides

Les slides de la soirĂ©e : alpesjug – RESTful API

Catégories: Association

Ippevent MongoDB Ă  Bordeaux le 23 septembre avec Tugdual Grall

Blog d’Ippon Technologies - ven, 09/12/2014 - 15:08

MongoDB stocke les données dans des documents JSON. Les documents peuvent représenter des structures de données riches, tout en offrant une grande flexibilité. Nous avons donc de nombreuses alternatives pour stocker les données si on compare au modèle relationnel qui est lui très normalisé.

Durant cette présentation, en nous basant sur un site de e-commerce, nous verrons les différentes options de modélisation, les bénéfices et avantages des différentes approches. Nous verrons également comment travailler avec ces documents, et faire évoluer la structure de ces données.

Comme toutes nos soirées, les interactions avec le speaker sont clés, vous pourrez bien sûr poser de nombreuses questions!

Rendez-vous le Mardi 23 septembre, Ă  partir de 19h, Ă  l’EPSI Bordeaux qui a la gentillesse de nous accueillir sur son Campus.

Speaker : Tugdual Grall

Billetterie en ligne pour DROP YOUR TABLE ! MONGODB SCHEMA DESIGN réalisé par Eventbrite

Catégories: Blog Société

[ASP.NET] Katana


Les annonces récentes concernant ASP.NET vNext sont telles que nous savons maintenant que notre usage des technologies Web de Microsoft va prendre un nouvel essor et radicalement se redynamiser. Dans mon précédent billet, je suis revenu sur la spécification OWIN....
Catégories: Blog Société

Le TechTrends #4 dédié au mouvement Software Craftsmanship est enfin disponible !

techTrends-CraftsLe nouveau TechTrends by Xebia est arrivé ! Alors que le n°1 traitait du Big Data, le second du mouvement DevOps et le troisième de l’agilitĂ©, ce numĂ©ro 4 vous dĂ©voile toutes les tendances du mouvement Software Craftsmanship.

Le TechTrends est un document Ă  destination de toutes celles et ceux qui doivent opĂ©rer des choix structurants pour leur IT et souhaitent bĂ©nĂ©ficier du retour d’expĂ©rience terrain de ceux qui ont dĂ©jĂ  expĂ©rimentĂ© les technologies d’aujourd’hui et de demain. Ce n°4 vous permettra d’apprĂ©hender ce mouvement, prĂ´nant la qualitĂ©, et ses bonnes pratiques.

Vous y trouverez notamment des conseils sur :

  • la dĂ©finition d’un logiciel de qualitĂ©,
  • la constitution de vos Ă©quipes Crafts,
  • le choix des outils pour un dĂ©veloppement logiciel de qualitĂ©,
  • l’adoption des techniques Crafts,
  • la mise en place de bonnes pratiques afin que votre Ă©quipe continue de monter en compĂ©tences.

Toutes ces étapes sont indispensables pour intégrer le mouvement Craftsmanship au sein de votre process de développement. Nous espérons que ce TechTrends vous guidera dans les décisions importantes que vous aurez à prendre.

En complément, si vous souhaitez approfondir dès-à-présent vos connaissances sur le mouvement Craftsmanship, et en pratique, nous vous invitons à participer à notre Craft Day, le 30 septembre prochain.

Très bonne lecture à tous !

Catégories: Blog Société

Il est temps d’avoir déjà quitté jQuery

Mathieu Robin - jeu, 09/11/2014 - 15:44

Je rĂ©agis Ă  un article que @_kud a relayĂ© sur Twitter. L’article « Time to remove jQuery » a Ă©tĂ© Ă©crit par Rogchap fin aĂ´ut.

Dans cet article, Rogchap explique son souhait de quitter jQuery après l’avoir utilisĂ©, beaucoup, presque Ă  outrance, comme beaucoup d’entre nous. Maintenant il utilisĂ© des micro-librairies pour remplacer jQuery dans les usages que requièrent ses projets.

Je souhaitais rĂ©agir Ă  son article plus loin que par un simple commentaire. Aussi parce que pendant longtemps comme vous le savez, j’ai tenu sur ce blog, une chronique jQuery et de nombreux articles autour de jQuery.

Cet article me sert d’amorce au mien. Sur une sorte de ras le bol de cette mode de dĂ©foncer jQuery Ă  la première occasion venue sur des arguments parfois quasi foireux. Parfois justifiĂ©s aussi.

Un peu d’histoire

jQuery a Ă©tĂ© crĂ©Ă© par John Resig en janvier 2006. BientĂ´t 9 ans ! A l’Ă©poque, on avait dĂ©jĂ  des super stars comme Prototype (et son indissociable Scriptaculous) ou encore Yahoo UI, plus connue sous le nom de YUI. Autre star connue du milieu, citons Mootools. Vous aussi vous ressentez un peu de nostalgie pour cette Ă©poque ?
Sortons de l’histoire cul-cul pour nous pencher sur la rĂ©alitĂ© de l’Ă©poque. IE 6 Ă©tait ultra-dominant. IE 7 ne devait apparaĂ®tre qu’Ă  la fin de 2006. Firefox Ă©tait encore un logiciel pour geeks, la version 1 datant de fin 2004. Netscape Ă©tait plus que sur le dĂ©clin. Safari, dispo que sur mac depuis 2003. Opera Ă©tait lĂ  depuis 1995, mais restait assez peu reprĂ©sentĂ© auprès du grand public. J’Ă©tais encore en primaire en 1995, waouh ! Enfin Chrome… n’existait pas.

Petite excentricitĂ©, pour ceux qui s’y sont essayĂ©, il y avait aussi encore Ă  l’Ă©poque IE 5. Et le bonus : il y avait IE 5 pour Mac (sorti en 2003). Maintenant et depuis longtemps abandonnĂ©, Internet Explorer avait sa version spĂ©ciale Apple. Et elle Ă©tait pire que la version Windows. Vraiment pire. Au point que « Ă§a » n’est mĂŞme pas arrivĂ© jusqu’Ă  la version 6. Usage plutĂ´t rare, mais ça m’est arrivĂ© de devoir le prendre en compte Ă  l’Ă©poque.

Depuis quelques annĂ©es, on Ă©tait dans un monde oĂą JavaScript n’Ă©tait qu’une machine Ă  gaz immonde. OĂą Flash dominait en maĂ®tre absolu du cross plateform, cross browser.

Firefox, l’IDE de IE

A l’Ă©poque, on codait en JS sur Firefox parce que c’Ă©tait plus facile, merci Firebug. Mais ça c’Ă©tait entre nous, geeks, devs, etc. Pour le grand public, fallait aussi et surtout que ça marche sur IE. C’Ă©tait ça le cross browser de l’Ă©poque. On s’inquiĂ©tait aussi de savoir si l’utilisateur n’avait pas bloquĂ© l’exĂ©cution de JavaScript. Voire parfois le CSS. Qui existait Ă  peine Ă  l’Ă©poque d’ailleurs. Et souffrait des mĂŞmes problèmes de portabilitĂ©. D’ailleurs, chose que je suis sĂ»r que vous avez oubliĂ© tellement vous avez utilisĂ© Firebug, comme moi hein, mais mĂŞme Firefox 3.5 n’avait pas l’objet console natif. Si si, rĂ©installez le et essayez sans Firebug. Fatal error :)

JavaScript servait Ă  faire neiger sur les Ă©crans ou afficher des popups publicitaires. Dans les grandes lignes. Au point que JavaScript existait sur l’essentiel des navigateurs, mais pas sur Internet Explorer oĂą certes c’Ă©tait Ă  peu de choses près pareil mais suffisamment diffĂ©rent pour que ça n’est pas le mĂŞme nom ni certaines fonctionnalitĂ©s clĂ©s.

ArrĂŞtons nous d’ailleurs pour rappeler aussi qu’Ă  l’Ă©poque, il y avait aussi les applets Java qui essayaient de concurrencer Flash. Et les activeX comme plugins Ă  IE. CĂ´tĂ© Firefox, on devait dĂ©velopper des extensions avec XUL. Un truc assez moisi mais en comparaison d’activeX…

Bon en fait ne mĂ©langeons pas les torchons et les serviettes. Petite anecdote rigolote. Sur IE quand il y avait un bug vous aviez une grosse fenĂŞtre d’alerte qui vous pĂ©tait au nez. Si vous aviez le malheur de cliquer sur le bouton de rĂ©solution, ça lançait l’Ă©diteur VBA intĂ©grĂ© dans Office. Je me souviens, c’Ă©tait assez drĂ´le de voir les gens arrivĂ©s en panique sur les forums croyant qu’ils avaient cassĂ© le code de la machine.

Puis est arrivĂ© AJAX. Alors lĂ , fĂŞte du slip. Je me souviens avoir dĂ©barquĂ© en salle de cours de BTS pour gueuler Ă  mes camarades qu’on pouvait enfin changer le contenu d’une page sans la recharger entièrement et sans utiliser Flash. On s’est tous prĂ©cipitĂ©s sur nos PCs. C’est une rĂ©volution !

Pour rappel, les outils de compilation pour JavaScript comme Uglify et mĂŞme les IDE spĂ©cialisĂ©s n’existaient pas. Le plus avancĂ© Ă©tait Dreamweaver et ça dĂ©connait de partout. Au point que tout le monde se rabattait sur Notepad++. Je vous parle mĂŞme pas de grunt, gulp, brunch, npm, bower, jslint, …

Retour à la réalité

Et lĂ  mange ta claque. Il fallait faire un objet, un script pour chaque navigateur. Et ça rien que pour Ajax. Pour faire une conne modif du DOM, aucune fonction n’Ă©tait commune non plus d’ailleurs. Ce que vous faites avec jQuery pour l’essentiel des usages. A l’Ă©poque, les bibliothèques comme jQuery, Prototype, ExtJS, YUI, Mootools, etc. Ă©taient plus que nĂ©cessaires. Elles Ă©taient vitales pour ne pas se coller une balle. On tenait le Saint-Graal en fait.

Pour des raisons que je ne saurais expliquer, seuls Mootools et jQuery ont vraiment rĂ©ussi Ă  dĂ©coller et Ă  suivre l’Ă©volution. Concernant jQuery, j’ai tendance Ă  croire que le « jQuery-style » a dĂ» bien aidĂ©. Il y a aussi Sencha qui avait un large public mais dès le dĂ©but, ils allaient vraiment plus loin que ceux prĂ©cĂ©demment citĂ©s. Ils existent toujours mais parce qu’ils ont appliquĂ© une approche propriĂ©taire. Pourquoi pas.

A l’origine donc, jQuery & co rĂ©pondait Ă  une vraie problĂ©matique. Celle d’ĂŞtre un polyfill.

Il n’y avait pas encore jQuery UI ou jQuery Mobile. Ni mĂŞme les blockbusters animation, browser, … Un monolithe.

Puis est revenue plusieurs fois la question du poids de jQuery. De ses plugins. Ça pesait lourd. Et cĂ´tĂ© rĂ©fĂ©rencement c’Ă©tait pas top. Surtout que Chrome Ă©tait arrivĂ© sur le marchĂ©.

Rappelez vous l’arrivĂ©e de Chrome

C’Ă©tait fou. On Ă©tait vers septembre 2008. Une interface Ă©purĂ©e, allĂ©gĂ©e, une vitesse d’exĂ©cution annoncĂ©e et ressentie 8 fois supĂ©rieure. Et la cerise sur le gâteau, des extensions en HTML/CSS/JavaScript qui s’installaient sans avoir besoin de redĂ©marrer le navigateur.

Et comme un collègue qui ne mange pas son spéculoos avec son café, côté JS, ce qui marchait sous Firefox marchait sous Chrome. Et inversement. Encore une révolution!

Donc avec IE 6/7 qui perdaient des parts de marchĂ© face Ă  des Chrome et Firefox dĂ©chaĂ®nĂ©s pour nous offrir une expĂ©rience toujours plus rapide et dĂ©boguĂ©e, on pouvait enfin s’atteler Ă  faire du web. Le web moderne.

Ce n’est pas IE 8, arrivĂ© en mars 2009 qui changera la donne. Souvenez vous, il y a mĂŞme un petit bouton pour fonctionner en mode compatibilitĂ© avec IE 7. Preuve de l’Ă©chec de Microsoft Ă  faire Ă©voluer les mentalitĂ©s de ces utilisateurs. Mais preuve aussi de la prise de conscience Ă  l’Ă©poque qu’ils avaient un sĂ©rieux problème avec leurs vieux navigateurs.

De nouvelles priorités

On a commencĂ© Ă  se lâcher avec jQuery et Mootools, et leurs armĂ©es de plugins. Les compĂ©tences de ces frameworks ont littĂ©ralement explosĂ©es sous leurs poids. On en demandait toujours plus Ă  des outils qui n’Ă©taient pas conçus pour ça. On attendait des polyfills de structurer nos dĂ©veloppements, nos pratiques, nos applis web. C’Ă©tait comme construire des ponts toujours plus grands, toujours plus compliquĂ©s mais toujours avec les pierres ramassĂ©es sur la rive et disposĂ©es au petit bonheur la chance avec un peu de mortier.

Sont alors apparus des frameworks comme UI, jQuery.MVC ou encore un qui s’est bien dĂ©tachĂ© du lot : Knockout. ExtJS commençait mĂŞme enfin Ă  ĂŞtre vraiment utilisable. Les navigateurs rĂ©ussissant enfin Ă  le faire tourner sans ramer. Notons le choix pertinent Ă  l’Ă©poque de changer de nom pour Sencha, ils repartirent avec une nouvelle rĂ©putation bien propre.

2009, année prospère

Deux grands changements clés à mon sens en 2009.

L’arrivĂ©e de IE 9, c’est bĂŞte mais c’Ă©tait le premier navigateur potable de Microsoft. Enfin, on avait un truc qui arrĂŞtait de dĂ©conner toutes les deux heures, enfin l’outil de dĂ©bogue arrivĂ© avec IE 8 avait un panneau « Network ». Il Ă©tait enfin potable. Plus besoin d’utiliser Debug Bar.

Jeremy Ashkenas nous a offert cette annĂ©e lĂ , une des meilleures contributions au monde du dĂ©veloppement web : CoffeeScript. Qu’on aime ou qu’on n’aime pas (comme moi), on ne peut nier l’impact que CoffeeScript a eu sur le monde du JS.

L’expĂ©rience Backbone

On est en octobre 2010, on tourne depuis quelques annĂ©es maintenant avec des immondes entassements de couche de bibliothèques et dĂ©barque comme un pavĂ© dans la mare : BackboneJS. Un framework MVC correctement foutu. C’est la dĂ©ferlante des applis one-page accessible Ă  tous les devs. BasĂ© sur jQuery, il ne perturbe pas trop les dĂ©veloppeurs et a donc une courbe d’apprentissage abordable.

Un rappel que mĂŞme si on avait l’impression de stagner dans un monde encore franchement hĂ©sitant Ă  reconnaĂ®tre JS comme un vrai langage, oui, c’est un langage, Ă  nous de le faire grandir, nous la communautĂ© de tous les dĂ©veloppeurs web.

Et si on pétait jQuery [n'importe comment] ?

Qu’est-ce que j’ai haĂŻ la pĂ©riode qui se profilait alors. On entendait partout : « jQuery est trop gros, du coup, j’ai construit ma propre version allĂ©gĂ©e ». Et lĂ  bim, bim, bim, toutes les semaines une nouvelle rĂ©interprĂ©tation pourrie allĂ©gĂ©e de jQuery faisait son apparition. Toutes abandonnĂ©es au bout de quelques mois de maintenance. Seule jQLite a survĂ©cu, mais elle a eu un sponsor de taille. On en parlera plus loin.

Fut alors prise la dĂ©cision en interne de dĂ©couper jQuery. Il y avait dĂ©jĂ  Sizzle arrivĂ© en janvier 2009 qui avait extrait le moteur de sĂ©lecteurs du cĹ“ur de jQuery. C’Ă©tait dĂ©jĂ  un beau geste. Mais ils ont Ă©taient plus loin. Dehors jQuery.animation, dehors jQuery.browser. On Ă©tait de mĂ©moire, fin 2012. Pas si vieux hein.

Entre deux, on avait dĂ©jĂ  eu l’avènement du mobile. Android, iPhone  bien implantĂ©s dans nos quotidiens et mĂŞme Windows Phone avait revu sa copie et proposait des tĂ©lĂ©phones potables.

Courant 2012, il y avait aussi eu 2 Ă©normes missiles arrivĂ©s sur la planète du web. J’ai nommĂ© Angular et Ember. On va Ă©viter de troller, chacun ses dĂ©fauts et qualitĂ©s. Le monde du web a changĂ© de face en quelques mois. Et les deux avaient pour dĂ©pendance jQuery. Mais une dĂ©pendance minimale, puisque jQuery Ă©tait revenu Ă  son rĂ´le de polyfill.

Enfin des outils

On a pu célébrer avec plaisir, une espèce de vague voir une interminable série de vagues qui ont retourné le web dans tous les sens. Entre les minifiers, les gestionnaires de paquets, les outils de qualité de code, les IDE dédiés et un énième pavé dans la mare : NodeJS, JavaScript est enfin reconnu comme un vrai langage industrialisable.

Maintenant on a du JS full stack cross-[ce que tu veux]

Vous vous rendez compte ?!

En quelques années, le web est devenu une espèce de force de frappe pour les entreprises, et la techno a su suivre la cadence malgré quelques à-coups façon vieux moteurs diesel au début.

Maintenant, entre IE 10 bien installé, IE 6/7 quasi disparus, IE 8 en bon déclin. Firefox et Chrome ont explosé leurs numéros de version et font toujours la course à la qualité et à la vitesse. Les mobiles sont aussi puissants que des pc. On peut faire du code serveur en JS, certains équipements embarqués parmi les plus célèbres comme Arduino ou Raspberry supportent très bien JS aussi.

En une dizaine d’annĂ©es JavaScript est passĂ© du truc infâme, in-dĂ©veloppable comme le fut Basic Ă  son Ă©poque avec tellement de versions qu’on ne pouvait plus les compter Ă  un unique langage respectĂ© Ă  peu de choses près correctement par tous les acteurs.

Je bâcle la fin de l’historique

C’est tellement rĂ©cent toute cette conclusion parce qu’on est encore en plein dedans que mĂŞme les plus jeunes d’entre nous la connaisse.

Et pourtant, jQuery ramasse encore

Et pourtant oui, pourtant, je vois encore des articles Ă  la con oĂą un mec vient se secouer l’ego très très fort pour dire « j’ai pas besoin de jQuery moi ». C’est bien mec. Mais c’est pas un exploit. Alors oui, jQuery est dĂ©passĂ©, mais un polyfill de IE 6/7/8 dans un monde oĂą ils ont presque disparu (j’insiste sur le presque, je le soutiens encore pour de vraies raisons), c’est sĂ»r que c’est pas très utile.

Certains diront « ouais mais jQuery ça fait plus qu’ĂŞtre un polyfill ». Oui, ça sert aussi Ă  manipuler plein de choses simplement. C’est bien, c’est super mĂŞme, ça me sert encore beaucoup d’ailleurs, mais yep, ça ne devrait plus.

« Ouais mais jQuery c’est lourd, tu te rends compte ça fait 35k ». Alors non quitte Ă  chipoter sur quelques Ko, ça fait 32k pour la version 1.11 et si tu ne supportes pas les vieux navigateurs, tu devrais dĂ©jĂ  ĂŞtre passĂ© Ă  la 2.1.x qui elle n’en fait que 28. Et sinon sĂ©rieusement ? MĂŞme avec la 3G, 32k, c’est ridicule. Oui, c’est ça de gagnĂ©. Mais ton favicon en fait presque une dizaine. Si si, prends par exemple celui de Github, site que tu trouves qu’il se charge plutĂ´t vite, mĂŞme sur ton mobile. Bah il fait dĂ©jĂ  9k.

C’est parce que beaucoup de dĂ©veloppeurs sont encore des brĂŞles, des dĂ©butants et font n’importe quoi que jQuery est encore d’actualitĂ©. C’est parce que tout le monde n’utilise pas des frameworks lourds pour faire des choses simples. Parce que des fois un wordpress n’a souvent pas besoin de plus que jQuery. Peut-ĂŞtre aussi parce que WordPress existe encore. Ou que tous les gens qui utilisent jQuery ne sont pas des dĂ©veloppeurs confirmĂ©s.

Il est vrai que jQuery n’est plus tout le temps nĂ©cessaire. Mais pourtant, ce n’est pas de sa faute. Alors avant d’allumer la tronche de jQuery, dĂ©veloppeur qui blogue en crachant dessus, rĂ©flĂ©chis d’oĂą vient le problème moderne, pourquoi jQuery est lĂ , pourquoi jQuery est parti en sucette sur la fin, enfin plutĂ´t pourquoi son usage est parti en sucette. Et si finalement, le problème, ce n’est pas plutĂ´t les personnes plus que jQuery.

Ce qu’a permis jQuery pendant de nombreuses annĂ©es

Manipulation du DOM facilitée

Manipulation de Ajax facilitée

Manipulation des promises entrées dans les moeurs

Base solide pour de vrais frameworks de développement web modernes

Et ceci de façon cross-browsers, cross-platform. Favorisant enfin la disparition de Flash.

Maintenant il y a HTML 5, les web components, de gros frameworks. Mettons jQuery au placard, voire au cimetière, mais avec un peu d’honnĂŞtetĂ©. Ne serait-ce qu’en lui disant merci.

Enfin en disant merci aux gens qui ont contribué à cet outil et aux outils concurrents pour nous avoir facilité la vie, notre travail pendant des années.

flattr this!

Catégories: Blog Individuel

Xebia lance sa newsletter : venez la découvrir !

Xebia-Newsletter

Pour suivre toute l’actualitĂ© de Xebia mais aussi de son Ă©cosystème, venez dĂ©couvrir et vous inscrire Ă  sa Newsletter. 

Toute nouvelle et toute belle pour la rentrĂ©e, la newsletter vous tiendra au courant des Ă©vĂ©nements, des news, des articles publiĂ©s de Xebia, autour d’un sujet clĂ© tel que le Big Data, le Cloud, les objets connectĂ©s et bien d’autres.

Envoyée tous les deuxièmes jeudis du mois, elle sera répartie en 5 catégories (toujours autour du sujet clé du mois) : 

  • une rubrique blog, avec un ou 2 articles publiĂ©s,
  • une rubrique Ă©vĂ©nement qui vous prĂ©sente le prochain techevent ou journĂ©e dĂ©diĂ©e de Xebia,
  • une rubrique actualitĂ© qui reprend l’info du mois de l’Ă©cosystème qu’il ne fallait pas manquer,
  • et pour encore plus d’information, le lien vers un livre blanc, un techtrends, un article… Bref un outil pour aller encore plus loin !

Vous voulez voir ce que cela donne ? Voici la Newsletter n°1 dédiée au mouvement Craftsmanship.

Pour vous inscrire, il vous suffit de cliquez sur l’icĂ´ne "S’inscrire Ă  la Newsletter" en haut de la page  !

Bonne lecture Ă  tous.

Catégories: Blog Société

[ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services

Le blog de Patrick Guimonet - jeu, 09/11/2014 - 07:50
As you know Office 365 is changing very usually and almost every day you can discover new things ! Yesyerday, I discovered a new service settings view with cards, similar to what we can find on Delve (and ...
Catégories: Blog Individuel

Rails Ă  la sauce JavaScript

L'actualité de Synbioz - mer, 09/10/2014 - 23:00

Pour ce billet nous allons embarquer vers la découverte d’un framework que je voulais essayer depuis un moment : Sails.

C’est un jeune framework JavaScript construit sur Node.js (vous le connaissez sûrement: il permet de construire un serveur en JavaScript), et Express.js (un ensemble d’outils destiné au développement d’applications Node.js).

Premier constat, son nom ressemble énormément à celui de Rails, ce qui n’est pas étonnant puisqu’il s’en inspire sur pas mal de points. Ensuite, comme dit sur leur site, il émule le modèle MVC, et a été dessiné pour servir des API orientées données. Pratique pour le développement de SPA.

Pour commencer vous aurez besoin de Node.js et npm (le gestionnaire de paquet pour Node.js) d’installés sur votre machine pour pouvoir installer Sails. Si vous rencontrez des problèmes d’installation dû au fait que l’executable node n’est pas trouvé, c’est parce-qu’il a été renommé en nodejs dans les versions récentes mais que certains programmes utilisent toujours node. Dans ce cas installez le paquet nodejs-legacy qui crée un lien symbolique entre /usr/bin/node et /usr/bin/nodejs. Puis :

L’option -g sert à installer un paquet de manière globale sur votre machine, de telle sorte que la commande sails soit accessible partout, d’où la nécessité de l’exécuter en tant que root. Après un certains temps, nous pouvons créer notre première application :

Lire la suite...

Catégories: Blog Société

Cloud Platform Roadshow de Pivotal au zlocalhost, le 25 septembre

Zenika - mer, 09/10/2014 - 13:30

Zenika a le plaisir d’héberger le Cloud Platform Roadshow de Pivotal qui aura lieu le jeudi 25 septembre à partir de 8h.

Pivotal Cloud Foundry

Construire et déployer une application sur une plateforme Cloud moderne Au cours de cette journée, par le biais de différents ateliers, vous aurez la possibilité de tester la plateforme Pivotal Cloud Foundry. En quelques heures, vous pourrez vous rendre-compte de la rapidité et de la facilité de déploiement d’une application Cloud Foundry. Les... Read Cloud Platform Roadshow de Pivotal au zlocalhost, le 25 septembre

Catégories: Blog Société

[ #Office365 ] Delve first impressions / Premières impressions sur Delve

Le blog de Patrick Guimonet - mar, 09/09/2014 - 15:57
Here are my first impressions on Delve ! Voici mes première impressions sur Delve ! First how do we get access to Delve ? Tout d’abord, comment accède-t-on à Delve ?...
Catégories: Blog Individuel

Multitâche sans thread 1/5 – Générateur


Programmation réactive

Depuis un moment, nous vous proposons une série d’articles sur le modèle réactif. Nous avons regardé d’où vient ce modèle et l’impact sur la gestion des threads. Mais comment ne pas se noyer dans un code trop complexe ?

Nous avons vu qu’une approche réactive, basée sur le traitement rapide et non bloquant d’événements, permettait des gains notables de performance.

Du point de vue du développeur, il n’est pas toujours facile de rédiger du code basé sur ce paradigme. En effet, comme aucun traitement ne doit être bloquant, il est nécessaire d’enchaîner des call-backs pour le moindre traitement un peu complexe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function archiveOrders(date, cb) {
  db.connect(
    function(err, conn)
    { if (err) return cb(err);
      conn.query("select * from orders where date < ?", [date],
        function(err, orders)
        { if (err) return cb(err);
            helper.each(orders,
              function(order, next)
              { conn.execute("insert into archivedOrders ...", [order.id, ...],
              function(err)
              { if (err) return cb(err);
                conn.execute("delete from orders where id=?", [order.id],
                function(err)
                { if (err) return cb(err);
                  next();
                });
              });
        },
        function()
        { console.log("orders have been archived");
          cb();
        });
    });
  });
}

Ce type de code peu lisible est souvent appelĂ© : callback hell. Le lien explique que finalement, c’est un problème de qualitĂ© de code et qu’il est facile Ă  rĂ©soudre avec quelques patterns.

Néanmoins, les langages de développement proposent des évolutions pour éviter ce modèle de développement. L’objectif est de rédiger un traitement en apparence linéaire, mais dont chaque portion de code entre deux appels bloquants est exécutée dans un hard-thread différent.

Il existe cinq approches permettant de faciliter la rédaction de programmes réactifs :

  • GĂ©nĂ©rateur
  • Pattern Continuation
  • Co-routine
  • Pipelines / compositions
  • Await / async

Dans cette série d’articles, nous allons parcourir ces différentes solutions pour différents langages de développement. Commençons par la première approche.

Générateur

Un générateur est une routine spéciale permettant de gérer l’itération d’une boucle. La routine produit des valeurs à chaque étape et mémorise le contexte de la boucle pour pouvoir la reprendre plus tard.

Voici un exemple de générateur en Python :

1
2
3
4
5
# Filtre les chaines débutant avec ##
def filter2sharps(iterator):
  for l in iterator:
    if l.startswith("##"):
      yield l

Ce gĂ©nĂ©rateur parcourt un itĂ©rateur et n’émet une valeur que si elle commence par un double dièse. L’instruction yield (produire en français) est Ă©quivalente Ă  un return, Ă  la diffĂ©rence près qu’elle permet de mĂ©moriser l’état de la boucle.

Un usage de ce générateur peut être celui-ci :

1
2
3
4
5
# Utilise le filtre sur un fichier
source= file( ... )
for line in filter2sharps( source.readlines() ):
  print line
source.close()

Dans cet exemple, la boucle parcourt un fichier et affiche uniquement les lignes compatibles avec le gĂ©nĂ©rateur qui joue le rĂ´le de filtre. La boucle du gĂ©nĂ©rateur est mise « en pause » après chaque invocation de filter2sharps, lors du yield.

Le compilateur du langage effectue une transformation du code du générateur, comme nous allons le voir. Par exemple, le générateur C# suivant est compilé comme ci-dessous.

using System;
using System.Collections;
class Test {
  // Une fonction
  static IEnumerator GetCounter() {
    for (int c = 0; c < 10; c++) {
      yield return c;
    }
  }
}

Le code produit par le compilateur est proche de ce code :

// Une classe
private class GetCounter : IEnumerator
{
  private int _state = 0;
  public int _current;
  private int c = 0;
  public bool MoveNext() {
    switch (_state) {
      case 0: // Dans la boucle
        if (c > 10) {
          _current = c;
          c++;
          return true;
        }
        _state = -1;
        break;
    }
    return false;
  }
}

static IEnumerator GetCounter() {
    return new GetCounter();
}

On retrouve tous les éléments classiques d’une boucle : l’initialisation, la comparaison, l’incrémentation. Mais le code est transformé en automate à états et en objet pour mémoriser le contexte. L’appelant peut maintenir l’itérateur en vie, ce qui maintient le contexte de la boucle.

La transformation d’un gĂ©nĂ©rateur en Python est similaire.

1
2
3
4
5
6
7
8
9
# a generator that yields items
# instead of returning a list
def firstn(n):
  num = 0
  while num &lt; n:
    yield num
    num += 1
 
sum_of_first_n = sum(firstn(1000000))

Est généré ainsi :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class firstn(object):
  def __init__(self, n):
    self.n = n
    self.num, self.nums = 0, []
  def __iter__(self):
    return self
  # Python 3 compatibility
  def __next__(self):
    return self.next()
  def next(self):
    if self.num &lt; self.n:
      cur, self.num = self.num, self.num+1
      return cur
    else:
      raise StopIteration()

Javascript 1.7 propose maintenant des générateurs. Pour cela, les functions doivent être suffixées d’une étoile.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Javascript
// Generateur infini
function* fibonacci() {
  let [prev, curr] = [0, 1];
  for (;;) {
    [prev, curr] = [curr, prev + curr];
    yield curr;
  }
}
for (n of fibonacci()) {
  // truncate the sequence at 1000
  if (n &lt; 1000) break;
  print(n);
}

Un générateur Javascript est également utilisé par des frameworks pour proposer des co-routines (décrit dans un prochain article).

Pour la programmation réactive

Pour la programmation réactive, nous pouvons les utiliser comme une brique de base pour implémenter un scheduler.

Par exemple, dans l’extrait suivant (l’intĂ©graliĂ© du source est prĂ©sent ici), les appels thĂ©oriquement bloquants vers les API fichiers sont remplacĂ©s par des invocations asynchrones. Grâce Ă  l’utilisation de yield return, ces appels asynchrones semblent parfaitement sĂ©quentiels.

1
2
3
4
5
6
7
8
9
10
11
12
13
static IEnumerable CopyFileAsync(string origin, string destination)
{
    Console.WriteLine(String.Format("{0} - Read", origin));
    var readtask = ReadFileAsync(origin);
    yield return readtask;
 
    Console.WriteLine(String.Format("{0} - Write", origin));
    var file_content = readtask.Value;
    yield return WriteFileAsync(destination, file_content);
 
    Console.WriteLine(String.Format("{0} -  Work finished", origin));
    yield break;
}

Dans l’Ă©xĂ©cution ci-dessous, nous appellons ce code 3 fois. Vous pouvez constater que les appels sont entrelacĂ©s mĂŞme si le code parait Ă©crit de façon sĂ©quentielle.

ExĂ©cution entrelacĂ©eUn simple scheduleur maison permet alors d’entrelacer diffĂ©rents gĂ©nĂ©rateurs.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void Main(string[] args)
{
  // Create pseudo threads
  var contexts = new List()
  {
    AsyncTask.Run(() =&gt; CopyFileAsync("Resources/file1.txt", "Resources/file1_copy.txt")),
    AsyncTask.Run(() =&gt; CopyFileAsync("Resources/file2.txt", "Resources/file2_copy.txt")),
    AsyncTask.Run(() =&gt; CopyFileAsync("Resources/file3.txt", "Resources/file3_copy.txt")),
  };
 
  // Sheduler - Un seul thread pour plusieurs traitements en //
  while (contexts.Any(at =&gt; at.Done == false))
  {
    foreach (var elt_task in contexts)
    {
      if (elt_task.CanMoveNext())
      {
        elt_task.MoveNext();
      }
    }
  }
}

Il faut alors proposer des mĂ©thodes ayant l’apparence de mĂ©thodes bloquantes, mais qui sont en rĂ©alitĂ© non-bloquantes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static AsyncStep&lt;byte[]&gt; ReadFileAsync(string origine)
{
  var asyncTask = new AsyncStep&lt;byte[]&gt;() { State = AsyncState.Await };
 
  var file = File.OpenRead(origine);
  var data = new byte[file.Length];
 
  asyncTask.Value = data;
  file.BeginRead(data, 0, (int) file.Length, (a) =&gt;
  {
    file.Close();
    // Update state
    asyncTask.State = AsyncState.Continue;
  }, null);
 
  return asyncTask;
}

Notre collègue Florent Jaby propose une approche similaire en Javascript pour node.js.

Pour conclure

Le tableau suivant résume les avantages et inconvénients de cette approche.

Générateur Usages Dans une boucle Limitations Retourne un Itérateur Local à une fonction Points forts Généré

Un gĂ©nĂ©rateur est un automate Ă  Ă©tats gĂ©nĂ©rĂ© lors de la compilation d’une boucle. Il s’agit d’un producteur d’élĂ©ments qui se met en pause a chaque itĂ©ration, en attente de l’invocation suivante.

Dans le prochain article de la sĂ©rie, nous traiterons de l’approche « continuation ».

Philippe PRADOS, Fabien Arcellier et l’Ă©quipe « RĂ©active »

Articles suggested :

  1. La genèse du modèle réactif
  2. Multitâches ou réactif ?
  3. Multitâche sans thread 2/5 – Continuation

Catégories: Blog Société

[ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ?

Le blog de Patrick Guimonet - mar, 09/09/2014 - 07:25
You have to go to the “Settings ” menu on the top right and then to “Office 365 settings” Vous allez sur le menu “Paramètres ” en haut à droite , puis sur “Paramètres Office 365” ...
Catégories: Blog Individuel

Partagez la connaissance

Partagez BlogsdeDeveloppeurs.com sur les réseaux sociaux