JWT 2016 luento 10. ti 19.4.2016 klo 10-11. Aulikki Hyrskykari. PinniB 1096. Aulikki Hyrskykari

Samankaltaiset tiedostot
JWT 2017 luento 10. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

Digitaalisen median tekniikat. Luento 4: JavaScript

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Järjestelmäarkkitehtuuri (TK081702)

Web Service torilla tavataan!

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

OHJ-1151 Ohjelmointi IIe

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

ETÄTERMINAALIYHTEYS SELAIMELLA

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

DOM ja Ajax. Jaana Holvikivi Metropolia. J.Holvikivi

Tekninen suunnitelma - StatbeatMOBILE

Tekninen suunnitelma - StatbeatMOBILE

Ohjelmoinnin perusteet Y Python

Ilmonet ja rajapinnat Pääkaupunkiseudun kansalais- ja työväenopistojen kurssit

Varmennepalvelu Rajapintakuvaus Tulorekisteriyksikkö

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Harjoitustyö: virtuaalikone

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

MultiSender -mobiilisovellus

Rich Web Applications in Server-side Java without Plug-ins or JavaScript

Ohjelmoinnin peruskurssi Y1

Kanta PHR:n CapabilityStatement ja REST-API. Eeva Turkka

REST an idealistic model or a realistic solution?

Ohjelmoinnin peruskurssien laaja oppimäärä

Tulorekisteri: Varmenne Visma Fivaldi

Alkuun HTML5 peliohjelmoinnissa

Ohjelmoinnin perusteet Y Python

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Java-kielen perusteet

ILMAINEN KARTTATIETO

Sivuston nopeus. Tiivistämällä resursseja gzip- tai deflate-koodilla voit vähentää verkon kautta lähetettävien tavujen määrää.

Verkkosivujen toiminnallisuus (JavaScript)

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

REST rajapintana mobiilikehityksessä

Taustaa. CGI-ohjelmointi

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

(JavaScript) Aleksi O Connor DI Informaatioverkostot. Markku Laine Mediatekniikan laitos

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Sivuston nopeus. Sivullasi on 2 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.

Sisällys. 12. Monimuotoisuus. Johdanto. Alityypitys. Johdanto. Periytymismekanismi määrittää alityypityksen.

Windows Live SkyDrive - esittely

Tekstiviestipalvelun rajapintakuvaus

Sivuston tiedotsiteoptimer.com

Sivuston tiedotemreemir.com

Veronumero.fi Tarkastaja rajapinta

Datanhaku www-käyttöliittymästä Mikko Parviainen, Ilmatieteen laitos / tietojärjestelmät mikko.parviainen@fmi.fi

Suuli api dokumentaatio

Peltotuki Pron Lohkotietopankkimoduli tärkkelysperunalle

15. Ohjelmoinnin tekniikkaa 15.1

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Sivuston nopeus. (vanhentumista ei ole määritetty)

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Sivuston nopeus. Sivullasi on 3 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.

Sivuston tiedotprintersupportnu mbercare.com

MVVM-mallin toteutus KnockoutJS-kirjastoa käyttäen

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Sivuston tiedotmysiteworthcheck.com

JWT 2017 luento 6. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Asko Ikävalko, k TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Sivuston tiedotqbsupportcustom erservice.com

Digitaalisen median tekniikat Luento 1: Intro

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Tietojen toimittaminen Skeemat Vastaanottokuittaus Kansallisen tulorekisterin perustamishanke

52 / 100 Nopeus. Sivuston nopeus. Pitäisi korjata: Hyödynnä selaimen välimuistia. Mobiili

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

Varmennepalvelu - testipenkki. Kansallisen tulorekisterin perustamishanke

Avoin metsätieto - Rajapintapalvelut

1 Visma L7 päivitysaineiston nouto

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Cabas liitännän käyttö AutoFutur ohjelmassa

Tilaajavastuu.fi. Muutoshistoria. Suomen Tilaajavastuu Oy. Raporttinoutaja Rajapinta yritysten tilaajavastuutietojen tarkistamiseen

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Sivuston tiedotgoogle.com

Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk

ITKP102 Ohjelmointi 1 (6 op)

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Ohjelmoinnin perusteet Y Python

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

13. Luento: Esimerkki: Symbianympäristö. Tommi Mikkonen,

Lisenssin hakeminen PTC:n verkkosivun kautta

63 / 100 Nopeus. Sivuston nopeus. Pitäisi korjata: Hyödynnä selaimen välimuistia. Mobiili

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Lisätehtävät. Frantic 2015 sivu 1

Transkriptio:

JWT 2016 luento 10 ti 19.4.2016 klo 10-11 Aulikki Hyrskykari PinniB 1096 1

Viime luennolla o Funktioista JavaScriptissä Tänään o AJAX ja JSON o Harjoitustyön tehtävänanto o Vierailuluento "Avoin data Tampereen seudulla" tietohallintoasiantuntija Joonas Dukpa, Tampereen kaupunki 2

AJAX ja JSON o Ennen web-sovellusohjelmat (palvelimella) keskustelivat selaimen kanssa staattisten sivujen välityksellä HTTP GET CSS HTML HTTP POST Client Server Database 3

Asynkroninen toiminta o Ongelma sivunpäivityspyyntö palvelimelle tuo koko sivun sivulle tarvittava uusi tieto mahdollisesti vain pieni osa sivulla selain jähmettyy odottaessaan että uuden sivun tiedot saadaan muodostetuksi ja tuoduksi selaimeen odotanko lieden vieressä, että vesi kattilassa alkaa kiehua? EN. Haluan tehdä jotain muuta sen aikaa o Ratkaisu haluan olla asynkroninen! 4

AJAX (Asynchronous JavaScript and XML) o Ajax on joukko tekniikoita: HTML, DOM, JSON/XML, XMLHttpRequest mahdollistaa vuorovaikutteisemmat web-sovellukset selainohjelma noutaa pieniä tietomääriä palvelimelta vain sivun osaan lataamatta koko verkkosivua uudelleen asiakaskone selain (client) vastauksen odottelu ei lopeta sivun muuta toimintaa Palvelin (server) 5

Tiedon välittäminen AJAXia käyttäen o Lähetetään pyyntö tiedon noutamiseksi palvelimelta o Tiedon saavuttua puretaan (jäsennellään) tieto niin että sitä voidaan käyttää o Päivitetään niiden elementtien sisällöt käyttäen hyväksi tarvittavia osia saadusta tiedosta ja DOM-puuta o Siirrettävä tieto voi olla esimerkiksi vastaus käyttäjän tiedonhakupyyntöön esim. hae seuraavat juna-aikataulut ennakointi käyttäjän mahdollisesti tulevaan tiedonhakupyyntöön esim. Google maps ennakoi kartan vierityspyyntöön noutamalla seuraavat alueet jo valmiiksi etukäteen 6

Tiedonvälityksessä käytetyt formaati o Tieto voidaan saada HTML-koodina + helppo näyttää sivulla, ei tarvetta sen kummempaan lisäkäsittelyyn - HTML-koodi tulee tuottaa jo palvelimella valmiiksi - huono siirrettävyys: soveltuu vain selain-ympäristössä käytettäväksi - tieto välitettävä samalta palvelimelta XML + joustava formaatti, hyvä siirrettävyys - runsassanainen formaatti, saattaa vaatia paljon lisäkäsittelyä - tieto välitettävä samalta palvelimelta JSON + kompakti formaatti, tietoa voi hakea muiltakin palvelimilta (JSONP) + helppo muunnos JavaScript-olioksi - tarkka formaatti, puuttuva pilkku tai lainausmerkki rikkoo koko tiedon 7

JSON (JavaScript Object Notation) o Nykyisin paljon käytetty tiedonsiirtoformaatti (merkkijono) lähes sama formaatti jota käytimme aiemmin literaaliolioiden luomiseksi literaaliolio var kirja = {aihe: 'JavaScript', julkaistu: 2011}; sama JSON-muotoisena (huomaa lainausmerkkien käyttö!) var kirjaasjsstr = '{"aihe": "JavaScript", "tekija": 2011}'; // olio // merkkijono o JavaScriptissä valmiit metodit esitysmuotojen välisiin muuntoihin var olio = JSON.parse(mjono); // konvertoidaan JSON-merkkijonosta olio var olioasjsstr = JSON.stringify(olio); // konvertoidaan oliosta JSON-merkkijono 8

Datan noutaminen palvelimelta 1. Luodaan tiedon siirrosta huolehtiva olio olio XMLHttpRequest on selaimissa valmiiksi toteutettu olio var req = new XMLHttpRequest(); 2. Sidotaan oliolle pyyntöön vastaamista kuunteleva käsittelijäfunktio vastauksen käsittelijä sidotaan käyttäen olion onreadystatechange -metodia req.onreadystatechange = tiedonkasittelija; 3. Avataan yhteys palvelimelle ja lähetetään pyyntö req.open('get', 'polku-tietoon-palvelimella', true); // req.send(); GET määrittää siirtoyhteyden tyypin (toinen mahdollinen on POST) toinen parametri osoite johon pyyntö kohdistuu (tiedosto palvelimella boolean-arvo määrittää käsitelläänkö pyyntö asynkronisesti 9

Vastauksen käsittely o XMLHttpRequest-olion oliomuuttuja readystate kertoo missä vaiheessa tiedon hakun on, kun tiedon haku on suoritettu sen arvo == 4 req.readystate == 0 //uninitialised req.readystate == 1 //loading req.readystate == 2 //loaded req.readystate == 3 //interactive req.readystate == 4 //complete oliomuuttuja status kertoo, onnistuiko haku req.status ==200 liitetty onreadystatechange-kuuntelija tarkastaa 10

Koodi yhteen koottuna req = new XMLHttpRequest(); // jos tiedon siirto on tehty loppuun if (req.readystate == 4) { // jos tiedon siirto onnistui if (req.status == 200) { // tähän noudetut tiedot kasittelevä funktio tai sen kutsu } else { // käsitellään virhetilanne, virhekoodi oliomuuttujassa req.statustext } } req.open("get", "palvelimelta-noudettavan-tiedoston-url", true); req.send(); 11

Esimerkki: Juna-aikataulujen noutaminen palvelimelta o Halutaan hakea aikataulutietoja sivulle päivittämättä koko sivua muu sivu säilyy, noudetaan vain tiedot taulukkoon sivu voisi olla monimutkainen ja noudettu tieto esim. vain yksi junamatka jokin ohjelma tai tietokantakysely muodostaisi json-tiedon palvelimella tällä kurssilla ei palvelinpuolen ohjelmointia, joten json-tieto tallennettu tiedostoksi 12

o Funktio haeuusitieto(), jota kutsutaan, kun sivulla painettaan jotain painikkeista aamu, aamupäivä, iltapäivä, ilta function haeuusitieto(mika) { // haetaan pyydetyt tiedot - normaalisti tiedot tuottaisi jokin ohjelma, tietokantakysely, // tms. mutta nyt esimerkin vuoksi palvelimelle on tallennettu neljä json-tekstitiedostoa: // "data/aikataulu1.json", "data/aikataulu2.json", "data/aikataulu3.json", "data/aikataulu4.json" // ============================================================================================== var url = "data/aikataulu" + mika + ".json"; // luodaan XMLHttpRequest-olio req = new XMLHttpRequest(); // ja sidotaan siihen kasittelijaksi funktio, joka käsitteleen haetun tiedon req.onreadystatechange = function () { // jos tiedon siirto req-olioon suoritettu if (req.readystate == 4) { // jos tiedon siirto tapahtui onnistuneesti if (req.status == 200) { tuotiedottaulukkoon(); // noudettu tieto löytyy req-olion responsetext-oliomuuttujasta } else { kirjoitaviesti("tiedon noutaminen ei onnistu (error code: "+ req.statustext + ")"); } } } } req.open("get", url, true); // avataan yhteys palvelimelle ja lähetetään req.send(); // sinne yllä muodostettu HTTPRequest -olio 13

Esimerkki noudetusta json-tiedostosta o Esimerkki yhdestä (tässä tapauksessa sivulle valmiiksi tallennetusta) JSON-merkkijonosta "data/aikataulu1.json" { "aikataulu": { "paiva": "perjantai", "pvm": "22 hutikuuta 2016", "mista": { "paikka": "Tampere", "koodi": "TRE" }, "minne": { "paikka": "Helsinki", "koodi": "HKI" }, "juna": [ { "lahtee": "04:30", "saapuu": "6.47", "kesto": "2:17", "vaihtoja": "1" },... { "lahtee": "08.07", "saapuu": "09:52", "kesto": "1:45", "vaihtoja": "0" }, { "lahtee": "08.34", "saapuu": "10:47", "kesto": "2:13", "vaihtoja": "1" } ] } } 14

Muunnokset JSON-merkkijono JavaScript-olio o JSON-olio, jolla metodi: JSON.parse(mjono) muuttaa JSON-tekstin JavaScript-olioksi (muunnos toisin päin olisi JSON.stringify(olio)) function tuotiedottaulukkoon() { // req-olion responsetext-kentassa palvelimelta noudettu JSON-muotoinen merkkijono noudettutieto = JSON.parse(req.responseText); } // nyt JSON-muotoisena tekstinä saadusta tiedosta on muodostettu // JavaScript-olio noudettutieto, jota ohjelmassa voi käyttää kuten mitä tahansa oliota // oliosta löytyy esimerkiksi taulukko // aikataulu.juna, jossa jokaisessa taulukon alkiossa aikataulu.juna[i] on yhden junavuoruon aikataulut... toteutus on hiukan rautalankaversio kun olet selvittänyt itsellesi miten se toimii, voit katsoa, miten globaaleista muuttujista pääsee eroon (versio 2) 15

Harjoitustyö Menoksi! Käy katsomassa Tampereen kaupungin sivustoa vierailijoille: http://visittampere.fi/search?type=event 16

Oma yksinkertaistettu versio sivustosta o SPA (Single Page Application) informaatiosovellus Tampereen seudun tapahtumista Tampere music academy: student concert Conservatory students play music. Vinyl club Bar Huurupiilo hosts the vinyl club. Conservatory students play music The Paladins at Tampere Hall: The temperature will rise sky high at the Tampere Hall, when The Paladins start playing at Sorsapuistosali! Warm-ups by Swing Team and Mr Breathless. Honest rock n roll, dance and dedicated people. tehtävänanto http://www.sis.uta.fi/~jwt/16/ht/ht.pdf raporttipohja http://www.sis.uta.fi/~jwt/16/ht/jwt-raporttipohja.docx 17

VisitTampere tapahtumatietojen rajapinta o Swagger-liittymä dataan: www.visittampere.fi/api-docs/ Voit kokeilla millaisia tietoja erilaisilla parametreilla saadaan noudettua. Tätä dataa käyttävä, kaupungin toteuttama Visit Tampere -palvelu 18

Käytettäviä tekniikoita o Harjoitustyössä hyödynnetään (pakolliset) kaupungin tarjoamaa rajapintaa avoimeen VisitTampere -dataan Google Maps JavaScript API -rajapintaa jquery JavaScript-kirjastoa o Lisäksi harjoitustyössä hyödynnetään seuraavia tekniikoita (jos haluat nostaa harjoitustyön pisteitä läpipääsyn ylittäviin pisteisiin) Local Storage - selaiman paikallinen muistia, HTML5 rajapinta Bootstrap - websivujen toteutuskehys (front-end framework) Firebase NoSQL pilvitietokantaa 19