SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Build spaghetti-proof web apps
JAVASCRIPT ?
JAVASCRIPT ?
JAVASCRIPT ?
LA PHILOSOPHIE
LA PHILOSOPHIE
• Application web monopage
LA PHILOSOPHIE
• Application web monopage
• Architecture MV(C?)
LA PHILOSOPHIE
• Application web monopage
• Architecture MV(C?)
• Framework léger
LA PHILOSOPHIE
• Application web monopage
• Architecture MV(C?)
• Framework léger
• Agnostique
LA PHILOSOPHIE
• Application web monopage
• Architecture MV(C?)
• Framework léger
• Agnostique
• Communication RESTful
LA PHILOSOPHIE
• Application web monopage
• Architecture MV(C?)
• Framework léger
• Agnostique
• Communication RESTful
• Dépendance Underscore.js et jQuery
LA WEB-APP CLASSIQUE

Serveur                         Client
                        HTML
• Logique business             • Requête
• Gestion des données          • Parsing HTML et
• Templating                   affichage
• i18n
LA WEB-APP CLASSIQUE

Serveur                         Client
                        HTML
• Logique business             • Requête
• Gestion des données          • Parsing HTML et
• Templating                   affichage
• i18n

   x nClients
LA WEB-APP CLASSIQUE

Serveur                         Client
                        HTML
• Logique business             • Requête
• Gestion des données          • Parsing HTML et
• Templating                   affichage
• i18n

   x nClients
LA WEB-APP CLASSIQUE

Serveur                         Client
                        HTML
• Logique business             • Requête
• Gestion des données          • Parsing HTML et
• Templating                   affichage
• i18n

   x nClients
LA WEB-APP CLASSIQUE

Serveur                          Client
                        HTML
• Logique business              • Requête
• Gestion des données           • Parsing HTML et
• Templating                    affichage
• i18n

  x nClients
  + Templating complet à chaque changement de page
LA WEB-APP CLASSIQUE

Serveur                          Client
                        HTML
• Logique business              • Requête
• Gestion des données           • Parsing HTML et
• Templating                    affichage
• i18n

  x nClients
  + Templating complet à chaque changement de page
LA WEB-APP BACKBONE

Serveur                         Client
                        JSON   • Requête
                               • Templating
• Logique business             • i18n
• Gestion des données          • Récupération des
                               données
LA WEB-APP BACKBONE

Serveur                         Client
                        JSON   • Requête
                               • Templating
• Logique business             • i18n
• Gestion des données          • Récupération des
                               données


Requêtes légères
LA WEB-APP BACKBONE

Serveur                         Client
                        JSON   • Requête
                               • Templating
• Logique business             • i18n
• Gestion des données          • Récupération des
                               données


Requêtes légères               Travaille pour nous
L’EXEMPLE
LES MODÈLES
# Création de la classe d'un Tweet
Tweet = Backbone.Model.extend
    urlRoot: "/api/tweets"
    validate: (attributes)->
        if attributes.author == "" then return "Invalid author"
        if attributes.text == "" or attributes.text.length > 140 then return 
"Invalid tweet"
 
# Instanciation d'un nouveau Tweet
aTweet = new Tweet(
    author: "Hugoch"
    text: "Hey, I'm presenting #Backbonejs at #NWXTech5 conference."
)
 

 




 
LES MODÈLES
# Création de la classe d'un Tweet
Tweet = Backbone.Model.extend
    urlRoot: "/api/tweets"
    validate: (attributes)->
        if attributes.author == "" then return "Invalid author"
        if attributes.text == "" or attributes.text.length > 140 then return 
"Invalid tweet"
 
# Instanciation d'un nouveau Tweet
aTweet = new Tweet(
    author: "Hugoch"
    text: "Hey, I'm presenting #Backbonejs at #NWXTech5 conference."
)
 
aTweet.save()
 
                                          POST /api/tweets

 
LES MODÈLES
# Création de la classe d'un Tweet
Tweet = Backbone.Model.extend
    urlRoot: "/api/tweets"
    validate: (attributes)->
        if attributes.author == "" then return "Invalid author"
        if attributes.text == "" or attributes.text.length > 140 then return 
"Invalid tweet"
 
# Instanciation d'un nouveau Tweet
aTweet = new Tweet(
    author: "Hugoch"
    text: "Hey, I'm presenting #Backbonejs at #NWXTech5 conference."
)
 
aTweet.save()
 
                                          POST /api/tweets
aTweet.save(
    author: "Chuck Norris"                PUT /api/tweets/42
)
 
LES MODÈLES
# Création de la classe d'un Tweet
Tweet = Backbone.Model.extend
    urlRoot: "/api/tweets"
    validate: (attributes)->
        if attributes.author == "" then return "Invalid author"
        if attributes.text == "" or attributes.text.length > 140 then return 
"Invalid tweet"
 
# Instanciation d'un nouveau Tweet
aTweet = new Tweet(
    author: "Hugoch"
    text: "Hey, I'm presenting #Backbonejs at #NWXTech5 conference."
)
 
aTweet.save()
 
                                          POST /api/tweets
aTweet.save(
    author: "Chuck Norris"                PUT /api/tweets/42
)
 
aTweet.destroy()                         DELETE /api/tweets/42
LES COLLECTIONS
                                           [
# Création d'une collection de tweets          {
Tweets = Backbone.Collection.extend                "id": 544102,
    model: Tweet                                   "author": "N_W_X",
    url: "/api/tweets"                             "text": "Conférence #nwxtech5 du 24 
                                                      janvier, avec @GrieuL @nautilebl
# Instanciation de la collection                      eu @romainlouvet @zigazou @hugoc
someTweets = new Tweets()                             h et @moebius_eye : amiando.com/
                                                      nwxtech5"
# Récupération des Tweets sur le serveur       },
someTweets.fetch()                             {
                                                   "id": 24454,
                                                   "author": "N_W_X",
                                                   "text": "Conférence dédiée aux tech
                                                      nos web #nwxtech5 à Rouen le 24 
                                                      janvier :  amiando.com/nwxtech5"
                                               }
                                           ]
LES VUES
• Une vue = un élément du DOM                 # Création d'une vue de tweet
                                              TweetView = Backbone.View.extend
• Une vue représente un modèle                    tagName: "li"
                                                  className: "tweet"
• Possibilité de mettre à jour une                render: ()->
                                                      tpl = _.template("""<h2><%-author%></h2>
                                                      <p><%-text%></p>""")
 portion de page                                      @$el.append(tpl(@model.toJSON()))
                                                      return @




  # Instanciation de la collection
  someTweets = new Tweets()
   
  # Affichage des tweets lorsqu'ils sont ajoutés à ma collection
  someTweets.on("add",(tweet)->
      view = new TweetView(
          model: tweet
      )
      $("#tweet-list").append(view.render().el)
  )
LES ROUTEURS
                                       # On crée la classe de routeur

• Gèrent la navigation au sein de la   TweetApp = Backbone.Router.extend
                                           routes:
                                               "last/:num":    "showLast"
 web-app avec des URL                          "*path":        "home"
                                        
 transparentes (History API des            showLast: (num)->
                                               # Récupération des nums
                                               derniers Tweets sur le serveur
 navigateurs)                                  someTweets.fetch(
                                                   update: true
• Permettent aux utilisateurs de                   data:
                                                       limit: num
                                               )
 bookmarker des vues de                 
                                           home: ()->
 l’application                                 someTweets.fetch(
                                                   update: true
                                               )
                                       # Instanciation du routeur
                                       app = new TweetApp()

                                       # Démarrage de l'app
                                       Backbone.history.start({pushState: true})
L’APPLICATION
<html>
<head>
    <script src="jquery.js"></script>
    <script src="underscore.js"></script>
    <script src="backbone.js"></script>
    <script src="examples.js"></script>
    <link href="stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/
css" />
</head>
<body>
    <div id="container">
        <h1>Ecrire un tweet</h1>
        <div class="form-row">
            <label for="new-tweet">Votre message</label>
        </div>
        <div class="form-row">
            <textarea id="new-tweet"></textarea>
        </div>
        <div class="form-row right">
            <button id="send-tweet">Envoyer</button>
        </div>
 
        <h1>Derniers tweets</h1>
            <ul id="tweet-list">
            </ul>                                    Insertion des vues de tweets
    </div>
</body>
</html>
L’APPLICATION
                                                                  # On écoute le clic sur le bouton de création de tweet
# Création de la classe d'un Tweet
                                                                  $(()->
Tweet = Backbone.Model.extend
                                                                      $("#send-tweet").click(()->
    urlRoot: "/api/tweets"
                                                                          tweet = new Tweet()
    validate: (attributes)->
                                                                          if tweet.save(
        if attributes.author == "" then return "Invalid author"
                                                                              author: $("#author").val()
        if attributes.text == "" or attributes.text.length > 14
                                                                              text: $("#new-tweet").val()
0 then return "Invalid tweet"
                                                                          )
  
                                                                              someTweets.add(tweet)
# Création d'une collection de tweets
                                                                              $("#new-tweet").val("").focus()
Tweets = Backbone.Collection.extend
                                                                      )
    model: Tweet
                                                                  )
    url: "/api/tweets"
                                                                   
 
                                                                  # On crée la classe de routeur
# Instanciation de la collection
                                                                  TweetApp = Backbone.Router.extend
someTweets = new Tweets()
                                                                      routes:
 
                                                                          "last/:num":    "showLast"
# Affichage des tweets lorsqu'ils sont ajoutés à ma collection
                                                                          "*path":        "home"
someTweets.on("add",(tweet)->
                                                                   
    view = new TweetView(
                                                                      showLast: (num)->
        model: tweet
                                                                          # Récupération des Tweets sur le serveur
    )
                                                                          someTweets.fetch(
    $("#tweet-list").prepend(view.render().el)
                                                                              update: true
)
                                                                              data:
 
                                                                                  limit: num
# Création d'une vue de tweet
                                                                          )
TweetView = Backbone.View.extend
                                                                   
    tagName: "li"
                                                                      home: ()->
    className: "tweet"
                                                                          someTweets.fetch(
    render: ()->
                                                                              update: true
        tpl = _.template("""<h2><%-author%></h2>
                                                                          )
        <p><%-text%></p>""")
        @$el.append(tpl(@model.toJSON()))
                                                                  # Instanciation du routeur
        return @
                                                                  app = new TweetApp()
 
                                                                  # Démarrage de l'app
                                                                  Backbone.history.start({pushState: true})
EXEMPLE
nwxtech.herokuapp.com
CONVAINCU ?
• 117 lignes de code (serveur + javascript)
• Temps réel
• 1 chargement des ressources (serveur statique),
  puis 300 octets par tweet
• Plugins : Backbone.Relational, LocalStorage
Utilisé par :
SIGINT
Plus d’infos
 • Backbone.js ➔ backbonejs.org
 • GitHub      ➔ github.com/documentcloud/backbone
 • Exemple ➔ github.com/Plixee/backbone-nwx-example
Contact
                 hugo@plixee.com
                      @hugoch

                                     www.plixee.com

Más contenido relacionado

Destacado

Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Normandie Web Xperts
 
AIESEC Sydney Reckon Finance Award July 2011 Application
AIESEC Sydney Reckon Finance Award July 2011 ApplicationAIESEC Sydney Reckon Finance Award July 2011 Application
AIESEC Sydney Reckon Finance Award July 2011 Applicationscho4567
 
畢業作品(投影片)1
畢業作品(投影片)1畢業作品(投影片)1
畢業作品(投影片)1Winnie60920
 
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...Normandie Web Xperts
 
AIESEC Sydney TM Excellent Award Application
AIESEC Sydney TM Excellent Award ApplicationAIESEC Sydney TM Excellent Award Application
AIESEC Sydney TM Excellent Award Applicationscho4567
 
NWX2011 - webdesign - marketing 2.01
NWX2011 - webdesign - marketing 2.01NWX2011 - webdesign - marketing 2.01
NWX2011 - webdesign - marketing 2.01Normandie Web Xperts
 

Destacado (6)

Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
Conférence #nwxtech5 : Django, du framework pour les perfectionnistes au pony...
 
AIESEC Sydney Reckon Finance Award July 2011 Application
AIESEC Sydney Reckon Finance Award July 2011 ApplicationAIESEC Sydney Reckon Finance Award July 2011 Application
AIESEC Sydney Reckon Finance Award July 2011 Application
 
畢業作品(投影片)1
畢業作品(投影片)1畢業作品(投影片)1
畢業作品(投影片)1
 
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...
Conférence #nwxtech2 : FileMaker et la publication web instantanée par Olivie...
 
AIESEC Sydney TM Excellent Award Application
AIESEC Sydney TM Excellent Award ApplicationAIESEC Sydney TM Excellent Award Application
AIESEC Sydney TM Excellent Award Application
 
NWX2011 - webdesign - marketing 2.01
NWX2011 - webdesign - marketing 2.01NWX2011 - webdesign - marketing 2.01
NWX2011 - webdesign - marketing 2.01
 

Similar a Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher

Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01MongoDB
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Microsoft Technet France
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Microsoft Décideurs IT
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Laurent Guérin
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Kenny Dits
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Camille Roux
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Microsoft Technet France
 
Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !davrous
 
2014 03-12-fr schema design and app architecture-2
2014 03-12-fr schema design and app architecture-22014 03-12-fr schema design and app architecture-2
2014 03-12-fr schema design and app architecture-2MongoDB
 
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...Jeff ANGAMA
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Introduction au développement Web
Introduction au développement Web Introduction au développement Web
Introduction au développement Web Romain Willmann
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 

Similar a Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher (20)

Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !
 
Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !
 
2014 03-12-fr schema design and app architecture-2
2014 03-12-fr schema design and app architecture-22014 03-12-fr schema design and app architecture-2
2014 03-12-fr schema design and app architecture-2
 
HTML5
HTML5HTML5
HTML5
 
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Introduction au développement Web
Introduction au développement Web Introduction au développement Web
Introduction au développement Web
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 

Más de Normandie Web Xperts

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...Normandie Web Xperts
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 OfflineNormandie Web Xperts
 
#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHPNormandie Web Xperts
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API FormNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le webNormandie Web Xperts
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdNormandie Web Xperts
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Normandie Web Xperts
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Normandie Web Xperts
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIINormandie Web Xperts
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousNormandie Web Xperts
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Normandie Web Xperts
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierNormandie Web Xperts
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonNormandie Web Xperts
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetNormandie Web Xperts
 
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Normandie Web Xperts
 
Conférence #nwxtech4 : GIT par Thibaud Juin
Conférence #nwxtech4 : GIT par Thibaud JuinConférence #nwxtech4 : GIT par Thibaud Juin
Conférence #nwxtech4 : GIT par Thibaud JuinNormandie Web Xperts
 
Méthode : Réalisation d'un projet mobile (Sushee)
Méthode : Réalisation d'un projet mobile (Sushee)Méthode : Réalisation d'un projet mobile (Sushee)
Méthode : Réalisation d'un projet mobile (Sushee)Normandie Web Xperts
 

Más de Normandie Web Xperts (20)

#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
 
#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline#nwxtech7 Grégory Le Garec - HTML5 Offline
#nwxtech7 Grégory Le Garec - HTML5 Offline
 
#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP#nwxtech6 Olivier Martineau - Les démons en PHP
#nwxtech6 Olivier Martineau - Les démons en PHP
 
#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form#nwxtech6 Mickaël Deffontaine - Drupal API Form
#nwxtech6 Mickaël Deffontaine - Drupal API Form
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web#nwxtech6 Frédéric Bisson - SVG pour le web
#nwxtech6 Frédéric Bisson - SVG pour le web
 
FlexRox
FlexRoxFlexRox
FlexRox
 
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwdJulien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
Julien Nicolas - Comment coucher avec son intégrateur en 5 étapes - #nwxwd
 
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
Julien Verhaeghe - API REST : Le module Services de Drupal - Drupal Meetup Ro...
 
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
Frédéric Bisson - 8 ans de Drupal - Drupal Meetup Rouen #3
 
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSIIConférence #nwx2014 - Nicolas Saillard - Agilité en SSII
Conférence #nwx2014 - Nicolas Saillard - Agilité en SSII
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tousConférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
Conférence #nwx2014 - Ivan Dalmet - Ergonomie web, les bases pour tous
 
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
Conférence #nwxtech5 : Présentation du hacker space Jeanne d'Hack par Samir C...
 
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercierConférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
Conférence #nwxtech5 : HTML5 Mobile avec Sencha Touch par Arnaud lemercier
 
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric BissonConférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
Conférence #nwxtech5 : Drupal et OpenLayers par Frédéric Bisson
 
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain LouvetConférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
Conférence #nwxtech5 : Selenium WebDriver 2 par Romain Louvet
 
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
Conférence #nwxtech4 : Responsive Web Design et Préprocesseurs CSS par Benjam...
 
Conférence #nwxtech4 : GIT par Thibaud Juin
Conférence #nwxtech4 : GIT par Thibaud JuinConférence #nwxtech4 : GIT par Thibaud Juin
Conférence #nwxtech4 : GIT par Thibaud Juin
 
Méthode : Réalisation d'un projet mobile (Sushee)
Méthode : Réalisation d'un projet mobile (Sushee)Méthode : Réalisation d'un projet mobile (Sushee)
Méthode : Réalisation d'un projet mobile (Sushee)
 

Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher