SlideShare una empresa de Scribd logo
1 de 25
A HTML5 & IE10
PROOF OF CONCEPT
Thibault Lanssade     Lucas Lampietti
           @tibolan     @lucaslampietti
    App Developper      Architect
                 #JS    #JS
     #HTML5 #CSS3


  Nicolas Massouh       Damien Berseron
  @nicolasmassouh       @hikkyu
 Motion developper      Motion developper
    #CSS3 #HTML5        #CSS3 #HTML5



      Florian Harmel    Loïc Calvy
     @florianharmel     @loic_calvy
Creative Technologist   CTO
                 #JS    #JS
PLEASE, DRAW ME A SLIDOTRON
OUR ANSWER : SNAPYX
SNAPYX ?

WHAT ?                HOW ?

                      HTML5 & CSS3
A CLIENT SIDE
APPLICATION           BACKBONE.JS &
                      BACKBONE-RELATIONAL.JS
SINGLE PAGE           & BACKBONE-
                      INDEXEDDB.JS
APPLICATION
                      APP CACHE (CACHE
OFFLINE USAGE –       MANIFEST)
CLIENT SIDE STORAGE
                      INDEXEDDB
IMAGING TOOL          FILE API / CANVAS
HTML5 / CSS3 : Project structure

CLIENT SIDE APPLICATION
SOME NEW THINGS IN HTML5
SOME NEW THINGS IN HTML5
               .parent {
                 display: -ms-grid;
                 -ms-grid-columns:(220px 10px)[12];
                 -ms-grid-rows: 50px 220px 10px 220px 27px;
               }
               .bloc1 {
                 -ms-grid-column:1; -ms-grid-row:2;
                  height:220px; width:220px;
               }
               .bloc2 {
                 -ms-grid-column:1; -ms-grid-row:4;
                  height:220px; width:220px;
               }
               .bloc3 {
                 -ms-grid-column:3; -ms-grid-row:2; -ms-grid-row-span:3;
                 width:450px; height:450px;
               }
               .bloc4 {
                 -ms-grid-column:7; -ms-grid-row:2;
                  width:450px; height:220px;
               }
               .bloc5 {
                 -ms-grid-column:7; -ms-grid-row:4;
               }
               .bloc6 {
                 -ms-grid-column:9; -ms-grid-row:4;
               }
Backbone.js project organisation

SINGLE PAGE APPLICATION
BACKBONE.JS

 Client Side « MVP » Framework
 REST / JSON
 Server Side handle persistence (and
  create id)
 Models (& Collections) / Views /
  Routes
 Events
 Backbone.Sync
 Template is basically managed by
  Underscore.js
BACKBONE.JS = RAW FRAMEWORK

 No default View
 No default Model
 Router not handle views lifecycles
DEFAULT VIEW

 DefaultView extend initialize to
 remotely get and apply view template
  Templates in lazyloading mode
  HTML indented and easily editable by
    IDE
 Method to unload views
  Disposing HTML in DOM
  Unbind events
WATCH PERFORMANCES
ROUTER

 Adding a business layer to handle init
  splashscreen
 No HTML5 deeplinking
IndexedDB

CLIENT SIDE STORAGE
BACKBONE.JS + BACKBONE-
INDEXEDDB.JS
 Backbone.Sync function overridded
 Change Server Side storage by client
  Side with HTML5 IndexedDB API
 IndexedDB :
  No relationnal local Database
  Complex objects storage as JSON
  Natively asynchronous
 Fork backbone-indexeddb.js :
  Now support chrome 17/
   FF11/IE10DP&CP
  Unit testing : jstestdriver + qunit
WORK WITH INDEXEDDB?

 Developpement phase :
  deletedb or fallback to random db name
    at each F5
 Control : Idbexplorer.htm
 Using unit tests
 No transactions or updating during
  schema version upgrade
 IndexedDB is roughly implemented
  All objects types are not supported
    depending on browsers
FileAPI

LOCAL IMAGE UPLOAD +
PREPARE FOR STORAGE
FILE API

 File API usage context
  Native drag’n’drop from desktop allowing
   multiple file upload
  Binary conversion of the uploaded File
   object
  Keeping model image content for persistent
   storage
 Goal
  Treating large 8M files on client side
  Store it in the right way
  Using it in SVG or Canvas
HOW TO STORE IMAGES? NO KIDING
TO HEAVY FOR FIREBUG????

 First try with base64 :


 To Heavy in DOM and for Firebug!
 Save in blob (FF11 & IE10 CP):
Canvas / SVG

LOCAL IMAGE TREATMENT
WHY CANVAS TO DEAL WITH STATIC
IMAGES?
 SVG limitations
  Unable to export a SVG filter into a Base
   64 string usable in images tag
  Photo filters are harder to calibrate in
   SVG
 Our solution
  Using canvas to treat images px/px
  Using Pixastic library (under MPL)
SUM UP

 A lot of new things
 Need to go fast ;)
 No idea of the performance troubles
  related to HTML5 new things
 Small knowledges on big complex
  HTML5 apps

 Experimental brief
 Experimental technologies
 F*** experimental browser
A SMALL THING WE ARE PROUD OF

An app on the Win 8 Store
http://www.ekino.com/
   @3k1n0

To see or read :

• « Slides, quelques démos et vidéos des sessions IE10/HTML5/CSS3 des Techdays
  2012 » (fr)
  David Roussethttp://blogs.msdn.com/b/davrous/archive/2012/02/20/slides-quelques-
  d-233-mos-et-vid-233-os-des-sessions-ie10-html5-css3-des-techdays-2012.aspx

• Keynote « World of developers » including SnapyX demo (fr)
  MS TechDays 2012 :
  http://www.youtube.com/watch?v=r64B13fh9nc

• Vidéo de présentation de l’application :
  http://www.youtube.com/watch?v=3winPXeMx_c

Frameworks and plugins Used :

• Backbone : here
• Backbone Relational : here
• Backbone Indexed DB
      • Original : here
      • Our fork : here
• Underscore : here
• Pixastic : here
• IdbExplorer : here
• Raphael Goetter CSS3 presentation : here

Más contenido relacionado

La actualidad más candente

slide-dnrdw
slide-dnrdwslide-dnrdw
slide-dnrdw
Yue Liu
 

La actualidad más candente (19)

slide-dnrdw
slide-dnrdwslide-dnrdw
slide-dnrdw
 
Use React tools for better Angular apps
Use React tools for better Angular appsUse React tools for better Angular apps
Use React tools for better Angular apps
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Render-as-You-Fetch
Render-as-You-FetchRender-as-You-Fetch
Render-as-You-Fetch
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Net core
Net coreNet core
Net core
 
Cicd pixelfederation
Cicd pixelfederationCicd pixelfederation
Cicd pixelfederation
 
Migrating .NET Application to .NET Core
Migrating .NET Application to .NET CoreMigrating .NET Application to .NET Core
Migrating .NET Application to .NET Core
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
 
Mój przepis na skalowalną architekturę mikroserwisową? Apollo Federation i Gr...
Mój przepis na skalowalną architekturę mikroserwisową? Apollo Federation i Gr...Mój przepis na skalowalną architekturę mikroserwisową? Apollo Federation i Gr...
Mój przepis na skalowalną architekturę mikroserwisową? Apollo Federation i Gr...
 
Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
Knative makes Developers Incredible on Serverless
Knative makes Developers Incredible on ServerlessKnative makes Developers Incredible on Serverless
Knative makes Developers Incredible on Serverless
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
React native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in RomeReact native in the wild @ Codemotion 2016 in Rome
React native in the wild @ Codemotion 2016 in Rome
 
Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development Continuous Integration Is for Teams: Moving past buzzword driven development
Continuous Integration Is for Teams: Moving past buzzword driven development
 
Webpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ StepsWebpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ Steps
 

Destacado

Destacado (20)

OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012OOM m'a tuer - Devoxx France 2012
OOM m'a tuer - Devoxx France 2012
 
Book The Fabrique des Mobilités 2015
Book The Fabrique des Mobilités 2015Book The Fabrique des Mobilités 2015
Book The Fabrique des Mobilités 2015
 
TheFamily: Don't you care?, by Oussama Ammar, Partner at TheFamily
TheFamily: Don't you care?, by Oussama Ammar, Partner at TheFamilyTheFamily: Don't you care?, by Oussama Ammar, Partner at TheFamily
TheFamily: Don't you care?, by Oussama Ammar, Partner at TheFamily
 
TheFamily: Bootstrapping Like a Boss, by Oussama Ammar, Partner at TheFamily
TheFamily: Bootstrapping Like a Boss, by Oussama Ammar, Partner at TheFamilyTheFamily: Bootstrapping Like a Boss, by Oussama Ammar, Partner at TheFamily
TheFamily: Bootstrapping Like a Boss, by Oussama Ammar, Partner at TheFamily
 
Startups are going to save the world, Oussama Ammar, Partner at TheFamily
Startups are going to save the world, Oussama Ammar, Partner at TheFamilyStartups are going to save the world, Oussama Ammar, Partner at TheFamily
Startups are going to save the world, Oussama Ammar, Partner at TheFamily
 
TheFamily: Do You Know Why?, By Oussama Ammar, Partner at TheFamily
TheFamily: Do You Know Why?, By Oussama Ammar, Partner at TheFamilyTheFamily: Do You Know Why?, By Oussama Ammar, Partner at TheFamily
TheFamily: Do You Know Why?, By Oussama Ammar, Partner at TheFamily
 
Alt shift - Notions de gamification
Alt shift - Notions de gamificationAlt shift - Notions de gamification
Alt shift - Notions de gamification
 
What's new in iOS 9 ?
What's new in iOS 9 ?What's new in iOS 9 ?
What's new in iOS 9 ?
 
Started from the Bottom, Oussama Ammar, Partner at TheFamily
Started from the Bottom, Oussama Ammar, Partner at TheFamilyStarted from the Bottom, Oussama Ammar, Partner at TheFamily
Started from the Bottom, Oussama Ammar, Partner at TheFamily
 
TheFamily: The Founder's Dilemma, by Oussama Ammar, Partner at TheFamily
TheFamily: The Founder's Dilemma, by Oussama Ammar, Partner at TheFamilyTheFamily: The Founder's Dilemma, by Oussama Ammar, Partner at TheFamily
TheFamily: The Founder's Dilemma, by Oussama Ammar, Partner at TheFamily
 
Money. Power. Respect. Oussama Ammar, Partner at TheFamily
Money. Power. Respect. Oussama Ammar, Partner at TheFamilyMoney. Power. Respect. Oussama Ammar, Partner at TheFamily
Money. Power. Respect. Oussama Ammar, Partner at TheFamily
 
North American StartUps disrupting Wine&Spirits, Food and Travel
North American StartUps disrupting Wine&Spirits, Food and TravelNorth American StartUps disrupting Wine&Spirits, Food and Travel
North American StartUps disrupting Wine&Spirits, Food and Travel
 
Open source & Mobility - FabMob guide
Open source & Mobility - FabMob guideOpen source & Mobility - FabMob guide
Open source & Mobility - FabMob guide
 
Chinese StartUps
Chinese StartUpsChinese StartUps
Chinese StartUps
 
Collaborative Logistics: Ripe for Disruption
Collaborative Logistics: Ripe for DisruptionCollaborative Logistics: Ripe for Disruption
Collaborative Logistics: Ripe for Disruption
 
Global Insights on Venture Capital in 2014
Global Insights on Venture Capital in 2014Global Insights on Venture Capital in 2014
Global Insights on Venture Capital in 2014
 
33insights: Investing in WineTech, Global Insights
33insights: Investing in WineTech, Global Insights33insights: Investing in WineTech, Global Insights
33insights: Investing in WineTech, Global Insights
 
TravelTech StartUps Survey: Global insights by 33entrepreneurs
TravelTech StartUps Survey: Global insights by 33entrepreneursTravelTech StartUps Survey: Global insights by 33entrepreneurs
TravelTech StartUps Survey: Global insights by 33entrepreneurs
 
FoodTech StartUps Survey: Global insights by 33entrepreneurs
FoodTech StartUps Survey: Global insights by 33entrepreneursFoodTech StartUps Survey: Global insights by 33entrepreneurs
FoodTech StartUps Survey: Global insights by 33entrepreneurs
 
Barometer EY-FD 2015
Barometer EY-FD 2015Barometer EY-FD 2015
Barometer EY-FD 2015
 

Similar a SnapyX

WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
Shumpei Shiraishi
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012
Stephan Hochdörfer
 

Similar a SnapyX (20)

Angularjs practical project experiences with javascript development in a bank
Angularjs practical project experiences with javascript development in a bankAngularjs practical project experiences with javascript development in a bank
Angularjs practical project experiences with javascript development in a bank
 
JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3
 
Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3
 
Seven Versions of One Web Application
Seven Versions of One Web ApplicationSeven Versions of One Web Application
Seven Versions of One Web Application
 
Html5 more than just html5 v final
Html5  more than just html5 v finalHtml5  more than just html5 v final
Html5 more than just html5 v final
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
VizEx View HTML5 Workshop
VizEx View HTML5 WorkshopVizEx View HTML5 Workshop
VizEx View HTML5 Workshop
 
VizEx View HTML5 Workshop
VizEx View HTML5 WorkshopVizEx View HTML5 Workshop
VizEx View HTML5 Workshop
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
 
JS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJSJS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJS
 
Education&work experience
Education&work experienceEducation&work experience
Education&work experience
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVC
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012Offline strategies for HTML5 web applications - pfCongres2012
Offline strategies for HTML5 web applications - pfCongres2012
 
Mobile Web Application Development (An Insight)
Mobile Web Application Development (An Insight)Mobile Web Application Development (An Insight)
Mobile Web Application Development (An Insight)
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Demystifying HTML5
Demystifying HTML5Demystifying HTML5
Demystifying HTML5
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
 

Más de ekino

Más de ekino (13)

Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
Spring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien RoySpring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien Roy
 
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien RoySe lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
 
Panorama des solutions mobile hybrides
Panorama des solutions mobile hybridesPanorama des solutions mobile hybrides
Panorama des solutions mobile hybrides
 
Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)Le « RUN » (ou la Tierce Maintenance Applicative)
Le « RUN » (ou la Tierce Maintenance Applicative)
 
Kinect pour les développeurs Web
Kinect pour les développeurs WebKinect pour les développeurs Web
Kinect pour les développeurs Web
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Expériencer les objets connectés
Expériencer les objets connectésExpériencer les objets connectés
Expériencer les objets connectés
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Responsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, MéthodologieResponsive Web Design - Enjeux, Solutions, Méthodologie
Responsive Web Design - Enjeux, Solutions, Méthodologie
 
Java GC - Pause tuning
Java GC - Pause tuningJava GC - Pause tuning
Java GC - Pause tuning
 
HTML5 vu par Ekino
HTML5 vu par EkinoHTML5 vu par Ekino
HTML5 vu par Ekino
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

SnapyX

  • 1. A HTML5 & IE10 PROOF OF CONCEPT
  • 2. Thibault Lanssade Lucas Lampietti @tibolan @lucaslampietti App Developper Architect #JS #JS #HTML5 #CSS3 Nicolas Massouh Damien Berseron @nicolasmassouh @hikkyu Motion developper Motion developper #CSS3 #HTML5 #CSS3 #HTML5 Florian Harmel Loïc Calvy @florianharmel @loic_calvy Creative Technologist CTO #JS #JS
  • 3. PLEASE, DRAW ME A SLIDOTRON
  • 4. OUR ANSWER : SNAPYX
  • 5. SNAPYX ? WHAT ? HOW ? HTML5 & CSS3 A CLIENT SIDE APPLICATION BACKBONE.JS & BACKBONE-RELATIONAL.JS SINGLE PAGE & BACKBONE- INDEXEDDB.JS APPLICATION APP CACHE (CACHE OFFLINE USAGE – MANIFEST) CLIENT SIDE STORAGE INDEXEDDB IMAGING TOOL FILE API / CANVAS
  • 6. HTML5 / CSS3 : Project structure CLIENT SIDE APPLICATION
  • 7. SOME NEW THINGS IN HTML5
  • 8. SOME NEW THINGS IN HTML5 .parent { display: -ms-grid; -ms-grid-columns:(220px 10px)[12]; -ms-grid-rows: 50px 220px 10px 220px 27px; } .bloc1 { -ms-grid-column:1; -ms-grid-row:2; height:220px; width:220px; } .bloc2 { -ms-grid-column:1; -ms-grid-row:4; height:220px; width:220px; } .bloc3 { -ms-grid-column:3; -ms-grid-row:2; -ms-grid-row-span:3; width:450px; height:450px; } .bloc4 { -ms-grid-column:7; -ms-grid-row:2; width:450px; height:220px; } .bloc5 { -ms-grid-column:7; -ms-grid-row:4; } .bloc6 { -ms-grid-column:9; -ms-grid-row:4; }
  • 10. BACKBONE.JS  Client Side « MVP » Framework  REST / JSON  Server Side handle persistence (and create id)  Models (& Collections) / Views / Routes  Events  Backbone.Sync  Template is basically managed by Underscore.js
  • 11. BACKBONE.JS = RAW FRAMEWORK  No default View  No default Model  Router not handle views lifecycles
  • 12. DEFAULT VIEW  DefaultView extend initialize to remotely get and apply view template Templates in lazyloading mode HTML indented and easily editable by IDE  Method to unload views Disposing HTML in DOM Unbind events
  • 14. ROUTER  Adding a business layer to handle init splashscreen  No HTML5 deeplinking
  • 16. BACKBONE.JS + BACKBONE- INDEXEDDB.JS  Backbone.Sync function overridded  Change Server Side storage by client Side with HTML5 IndexedDB API  IndexedDB : No relationnal local Database Complex objects storage as JSON Natively asynchronous  Fork backbone-indexeddb.js : Now support chrome 17/ FF11/IE10DP&CP Unit testing : jstestdriver + qunit
  • 17. WORK WITH INDEXEDDB?  Developpement phase : deletedb or fallback to random db name at each F5  Control : Idbexplorer.htm  Using unit tests  No transactions or updating during schema version upgrade  IndexedDB is roughly implemented All objects types are not supported depending on browsers
  • 18. FileAPI LOCAL IMAGE UPLOAD + PREPARE FOR STORAGE
  • 19. FILE API  File API usage context Native drag’n’drop from desktop allowing multiple file upload Binary conversion of the uploaded File object Keeping model image content for persistent storage  Goal Treating large 8M files on client side Store it in the right way Using it in SVG or Canvas
  • 20. HOW TO STORE IMAGES? NO KIDING TO HEAVY FOR FIREBUG????  First try with base64 :  To Heavy in DOM and for Firebug!  Save in blob (FF11 & IE10 CP):
  • 21. Canvas / SVG LOCAL IMAGE TREATMENT
  • 22. WHY CANVAS TO DEAL WITH STATIC IMAGES?  SVG limitations Unable to export a SVG filter into a Base 64 string usable in images tag Photo filters are harder to calibrate in SVG  Our solution Using canvas to treat images px/px Using Pixastic library (under MPL)
  • 23. SUM UP  A lot of new things  Need to go fast ;)  No idea of the performance troubles related to HTML5 new things  Small knowledges on big complex HTML5 apps  Experimental brief  Experimental technologies  F*** experimental browser
  • 24. A SMALL THING WE ARE PROUD OF An app on the Win 8 Store
  • 25. http://www.ekino.com/ @3k1n0 To see or read : • « Slides, quelques démos et vidéos des sessions IE10/HTML5/CSS3 des Techdays 2012 » (fr) David Roussethttp://blogs.msdn.com/b/davrous/archive/2012/02/20/slides-quelques- d-233-mos-et-vid-233-os-des-sessions-ie10-html5-css3-des-techdays-2012.aspx • Keynote « World of developers » including SnapyX demo (fr) MS TechDays 2012 : http://www.youtube.com/watch?v=r64B13fh9nc • Vidéo de présentation de l’application : http://www.youtube.com/watch?v=3winPXeMx_c Frameworks and plugins Used : • Backbone : here • Backbone Relational : here • Backbone Indexed DB • Original : here • Our fork : here • Underscore : here • Pixastic : here • IdbExplorer : here • Raphael Goetter CSS3 presentation : here