SlideShare a Scribd company logo
1 of 16
Download to read offline
JAVASCRIPTIN
ÄÄRIRAJOILLA
Heikki Salo
Vincit Oy
1
• Demo
• Työkalut
• Kehitys
• Ongelmat
2
SISÄLTÖ
3
4
5
RAKENNE
Robotic Operating System
ZenRobotics
Visualisaatio Webworker
WebGL
Websocket
• Node.js, npm ja Grunt
• TypeScript
• WebGL
• Websockets
• Webworkers
6
TYÖKALUT
• Robotic Operating System (ROS)
• Reaaliaikainen tai nauhoitetun datan
visualisointi
• 3D-grafiikka ja kontrollit selaimessa
• Kehityksen aikana muuttuvat tietorakenteet
• Datan käsittelyn aikavaatimukset
7
KEHITYKSEN VAATIMUKSET
• Microsoftin “parempi” JavaScript-variantti
• EcmaScript 6 yhteensopivuus (luokat yms.)
• Tyyppiannotaatiot, rajapinnat yms. C#
• Helpottaa suurien JavaScript-ohjelmien
kehitystä (muutokset, analyysi, kommentointi)
• DefinitelyTyped tyyppikirjastot
• Monipuolisempi kuin lint tai JSDoc
• TypeScript vs CoffeeScript vs ClojureScript vs
Dart
• “Käännetty” JavaScript paketoitu asiakkaalle
8
TYPESCRIPT
interface RobotState { //From websocket
id: string;
status: number;
position?: Vector3<number>;
}
class PickerRobot extends VisualisationModel {
private name: string;
private state: RobotState;
private mesh: THREE.Mesh;
constructor(name: string, visualisation: Visualisation) {
super(visualisation);
this.name = name;
this.mesh = new RobotMesh();
visualisation.addRobotStateListener(name, (state: RobotState) => {
this.state = state;
});
}
public update(override: RobotState = null) : boolean {
return this.mesh.setPosition(override || this.state);
}
}
9
TYPESCRIPT
• Suorituskykyistä 3D-grafiikkaa
• Matalan tason rajapinta
• Typed Arrays ja viewit
• Selaintuki vaihteleva (rauta vs softa)
• Valmiit kirjastot: three.js, Babylon.js etc.
10
WEBGL
• Reaaliaikainen ja tehokas datansiirto
molempiin suuntiin
• Visualisaatiossa keskiarvo noin 1 Mt/s
(purskeittainen)
• Äärirajoilla herkkä verkkoympäriston
vaihteluille
11
WEBSOCKETS
• JavaScriptin taustaprosessointia
• Visualisaatiossa käytetään kuvankäsittelyyn
• Rajoitettu ympäristö (DOM etc. ei saatavilla)
• Kommunikaatio viestejä lähettämällä
• Isot oliot (esim. kuvat) voi “siirtää" kopioinnin
sijaan
12
WEBWORKERS
• Isot datamäärät herkkiä verkkoympäriston
laadulle
• WebGL-toteutusten eroavaisuudet (http://
caniuse.com/#feat=webgl)
• JavaScriptin suorituskyky
• Testaus
13
ONGELMAT
14
• Nykyaikaiset selainympärisöt mahdollistavat
vaativienkien sovellusten teon…
• …olettaen, että on valmis rajoittamaan
tuettuja selaimia ja laitteita
15
YHTEENVETO
16
KYSYMYKSIÄ?

More Related Content

Similar to Vincit Teatime 2015 - Heikki Salo: Case ZenRobotics: JavaScriptin äärirajoilla

Store App -kehityksen aloittaminen
Store App -kehityksen aloittaminenStore App -kehityksen aloittaminen
Store App -kehityksen aloittaminenSovelto
 
Windows 8 yrityksen työasemana
Windows 8 yrityksen työasemanaWindows 8 yrityksen työasemana
Windows 8 yrityksen työasemanaSovelto
 
Windows 8
Windows 8Windows 8
Windows 8Sovelto
 
Windows 7 Yhteisollisyys
Windows 7 YhteisollisyysWindows 7 Yhteisollisyys
Windows 7 YhteisollisyysVaihde 7
 
Java - analysointityökaluja
Java - analysointityökalujaJava - analysointityökaluja
Java - analysointityökalujaKari Sarsila
 
Net ohjelmointi kertaus
Net ohjelmointi kertausNet ohjelmointi kertaus
Net ohjelmointi kertausTimo Tanila
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetVaihde 7
 
API Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiäAPI Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiäArto Santala
 
JavaScript Frameworkit, jotka kannattaa tuntea
JavaScript Frameworkit, jotka kannattaa tunteaJavaScript Frameworkit, jotka kannattaa tuntea
JavaScript Frameworkit, jotka kannattaa tunteaSovelto
 
W3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubW3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubDeittisirkus
 
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaan
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaanTalent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaan
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaanLoihde Advisory
 
Windows Vista Ja 7 Yhteensopivuus Ja Sovellustestaus
Windows Vista Ja 7 Yhteensopivuus Ja SovellustestausWindows Vista Ja 7 Yhteensopivuus Ja Sovellustestaus
Windows Vista Ja 7 Yhteensopivuus Ja SovellustestausVaihde 7
 
Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Teemu Tiainen
 
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13Ambientia
 
Web-technologies in mobile development (Finnish)
Web-technologies in mobile development (Finnish)Web-technologies in mobile development (Finnish)
Web-technologies in mobile development (Finnish)Antti Vuorela
 
Pragmatic Agile - Aamiaistilaisuus
Pragmatic Agile - AamiaistilaisuusPragmatic Agile - Aamiaistilaisuus
Pragmatic Agile - AamiaistilaisuusNitor
 
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Karl Ots
 
Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113Tatu Tarvainen
 
10 parasta tapaa pilata Liferay-projekti
10 parasta tapaa pilata Liferay-projekti10 parasta tapaa pilata Liferay-projekti
10 parasta tapaa pilata Liferay-projektiAmbientia
 

Similar to Vincit Teatime 2015 - Heikki Salo: Case ZenRobotics: JavaScriptin äärirajoilla (20)

Store App -kehityksen aloittaminen
Store App -kehityksen aloittaminenStore App -kehityksen aloittaminen
Store App -kehityksen aloittaminen
 
Windows 8 yrityksen työasemana
Windows 8 yrityksen työasemanaWindows 8 yrityksen työasemana
Windows 8 yrityksen työasemana
 
Windows 8
Windows 8Windows 8
Windows 8
 
Windows 7 Yhteisollisyys
Windows 7 YhteisollisyysWindows 7 Yhteisollisyys
Windows 7 Yhteisollisyys
 
Java - analysointityökaluja
Java - analysointityökalujaJava - analysointityökaluja
Java - analysointityökaluja
 
Net ohjelmointi kertaus
Net ohjelmointi kertausNet ohjelmointi kertaus
Net ohjelmointi kertaus
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudet
 
API Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiäAPI Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiä
 
JavaScript Frameworkit, jotka kannattaa tuntea
JavaScript Frameworkit, jotka kannattaa tunteaJavaScript Frameworkit, jotka kannattaa tuntea
JavaScript Frameworkit, jotka kannattaa tuntea
 
W3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubW3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHub
 
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaan
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaanTalent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaan
Talent Base: Mitä on Big Data - teknologianäkökulma Big Datan hallintaan
 
Windows Vista Ja 7 Yhteensopivuus Ja Sovellustestaus
Windows Vista Ja 7 Yhteensopivuus Ja SovellustestausWindows Vista Ja 7 Yhteensopivuus Ja Sovellustestaus
Windows Vista Ja 7 Yhteensopivuus Ja Sovellustestaus
 
EPiServer7-MVC
EPiServer7-MVCEPiServer7-MVC
EPiServer7-MVC
 
Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015
 
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13
Liferay Road Show Helsinki, Case Uponor Koti 2012-09-13
 
Web-technologies in mobile development (Finnish)
Web-technologies in mobile development (Finnish)Web-technologies in mobile development (Finnish)
Web-technologies in mobile development (Finnish)
 
Pragmatic Agile - Aamiaistilaisuus
Pragmatic Agile - AamiaistilaisuusPragmatic Agile - Aamiaistilaisuus
Pragmatic Agile - Aamiaistilaisuus
 
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
 
Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113
 
10 parasta tapaa pilata Liferay-projekti
10 parasta tapaa pilata Liferay-projekti10 parasta tapaa pilata Liferay-projekti
10 parasta tapaa pilata Liferay-projekti
 

More from VincitOy

Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincitOy
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincitOy
 
Vincit ankkasarjakuva
Vincit ankkasarjakuvaVincit ankkasarjakuva
Vincit ankkasarjakuvaVincitOy
 
Tampere goes agile 2015
Tampere goes agile 2015Tampere goes agile 2015
Tampere goes agile 2015VincitOy
 
Digijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecDigijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecVincitOy
 
Digijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesDigijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesVincitOy
 
Digijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloDigijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloVincitOy
 
Digijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitDigijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitVincitOy
 
Itseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosItseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosVincitOy
 
Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015VincitOy
 
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincitOy
 
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...VincitOy
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...VincitOy
 
Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013VincitOy
 
Projektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarProjektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarVincitOy
 
Vincit V-Käyrä
Vincit V-KäyräVincit V-Käyrä
Vincit V-KäyräVincitOy
 
Need more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätNeed more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätVincitOy
 
Trello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaTrello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaVincitOy
 
Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014VincitOy
 
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014VincitOy
 

More from VincitOy (20)

Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
 
Vincit ankkasarjakuva
Vincit ankkasarjakuvaVincit ankkasarjakuva
Vincit ankkasarjakuva
 
Tampere goes agile 2015
Tampere goes agile 2015Tampere goes agile 2015
Tampere goes agile 2015
 
Digijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecDigijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - Simsotec
 
Digijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesDigijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-Files
 
Digijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloDigijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - Oliotalo
 
Digijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitDigijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - Vincit
 
Itseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosItseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutos
 
Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015
 
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
 
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
 
Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013
 
Projektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarProjektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & Apgar
 
Vincit V-Käyrä
Vincit V-KäyräVincit V-Käyrä
Vincit V-Käyrä
 
Need more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätNeed more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: Virittäjät
 
Trello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaTrello projektinhallinnan työkaluna
Trello projektinhallinnan työkaluna
 
Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014
 
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
 

Vincit Teatime 2015 - Heikki Salo: Case ZenRobotics: JavaScriptin äärirajoilla

  • 2. • Demo • Työkalut • Kehitys • Ongelmat 2 SISÄLTÖ
  • 3. 3
  • 4. 4
  • 6. • Node.js, npm ja Grunt • TypeScript • WebGL • Websockets • Webworkers 6 TYÖKALUT
  • 7. • Robotic Operating System (ROS) • Reaaliaikainen tai nauhoitetun datan visualisointi • 3D-grafiikka ja kontrollit selaimessa • Kehityksen aikana muuttuvat tietorakenteet • Datan käsittelyn aikavaatimukset 7 KEHITYKSEN VAATIMUKSET
  • 8. • Microsoftin “parempi” JavaScript-variantti • EcmaScript 6 yhteensopivuus (luokat yms.) • Tyyppiannotaatiot, rajapinnat yms. C# • Helpottaa suurien JavaScript-ohjelmien kehitystä (muutokset, analyysi, kommentointi) • DefinitelyTyped tyyppikirjastot • Monipuolisempi kuin lint tai JSDoc • TypeScript vs CoffeeScript vs ClojureScript vs Dart • “Käännetty” JavaScript paketoitu asiakkaalle 8 TYPESCRIPT
  • 9. interface RobotState { //From websocket id: string; status: number; position?: Vector3<number>; } class PickerRobot extends VisualisationModel { private name: string; private state: RobotState; private mesh: THREE.Mesh; constructor(name: string, visualisation: Visualisation) { super(visualisation); this.name = name; this.mesh = new RobotMesh(); visualisation.addRobotStateListener(name, (state: RobotState) => { this.state = state; }); } public update(override: RobotState = null) : boolean { return this.mesh.setPosition(override || this.state); } } 9 TYPESCRIPT
  • 10. • Suorituskykyistä 3D-grafiikkaa • Matalan tason rajapinta • Typed Arrays ja viewit • Selaintuki vaihteleva (rauta vs softa) • Valmiit kirjastot: three.js, Babylon.js etc. 10 WEBGL
  • 11. • Reaaliaikainen ja tehokas datansiirto molempiin suuntiin • Visualisaatiossa keskiarvo noin 1 Mt/s (purskeittainen) • Äärirajoilla herkkä verkkoympäriston vaihteluille 11 WEBSOCKETS
  • 12. • JavaScriptin taustaprosessointia • Visualisaatiossa käytetään kuvankäsittelyyn • Rajoitettu ympäristö (DOM etc. ei saatavilla) • Kommunikaatio viestejä lähettämällä • Isot oliot (esim. kuvat) voi “siirtää" kopioinnin sijaan 12 WEBWORKERS
  • 13. • Isot datamäärät herkkiä verkkoympäriston laadulle • WebGL-toteutusten eroavaisuudet (http:// caniuse.com/#feat=webgl) • JavaScriptin suorituskyky • Testaus 13 ONGELMAT
  • 14. 14
  • 15. • Nykyaikaiset selainympärisöt mahdollistavat vaativienkien sovellusten teon… • …olettaen, että on valmis rajoittamaan tuettuja selaimia ja laitteita 15 YHTEENVETO