MVC-malliin perustuvien Javascript-sovelluskehysten vertailua. Jouni Kähkönen
|
|
- Satu Myllymäki
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 MVC-malliin perustuvien Javascript-sovelluskehysten vertailua Jouni Kähkönen Tampereen yliopisto Informaatiotieteiden yksikkö Tietojenkäsittelyoppi Pro gradu -tutkielma Ohjaaja: Timo Poranen Toukokuu 2014
2 ii Tampereen yliopisto Informaatiotieteiden yksikkö Tietojenkäsittelyoppi Jouni Kähkönen: MVC-malliin perustuvien Javascript-sovelluskehysten vertailua Pro gradu -tutkielma, 76 sivua Toukokuu 2014 Verkkosovellusten kehittämiseen on olemassa lukuisia eri Javascript-sovelluskehyksiä. Tämän tutkielman lähtökohtana on esitellä ja vertailla varteenotettavia MVC-sovelluskehyksiä keskenään. Tavoitteena on löytää kehysten laatuominaisuuksien pohjalta kuhunkin käyttötarkoitukseen parhaiten sopiva Javascript-sovelluskehys. Vertailussa on mukana kolme MVC-malliin pohjautuvaa sovelluskehystä: Maria, jquerymx ja KnockoutJS. Aluksi tarkastellaan verkkosovelluskehityksen taustaa ja käsitteitä. Tämän jälkeen esitellään sovelluskehysten keskeiset toiminnallisuudet. Esittelyn jälkeen kehysten ominaisuuksien pohjalta havaittavia arkkitehtuurivahvuuksia arvioidaan verkkosovellusten kehittämiseen liittyvien laatuominaisuuksien avulla. Arvioinnin jälkeen vertaillaan sovelluskehysten eroja sekä mahdollisia käyttötarkoituksia. Yleisesti voidaan havaita, että sovelluskehystä käyttäen verkkosovelluksen ohjelmakoodin laatu paranee ja ohjelmakoodin osien välinen sidoksellisuus vähenee. Vaikka sovelluksen ulkonäkö voi olla yhtenevä kehyksestä riippumatta, vaikuttaa valinta sisäisen arkkitehtuurin myötä koodin ylläpidettävyyteen, laajennettavuuteen, tehokkuuteen ja luettavuuteen. Kehysten tarkastelun pohjalta havaittiin sopivan sovelluskehyksen valintaan vaikuttavan ainakin kolme keskeistä tekijää: Pidettäessä koodin löyhää sidoksellisuutta tärkeänä päädyttiin suosittelemaan Maria-kehyksen käyttöä. KnockoutJS-kehystä päädyttiin suosittelemaan tapauksissa, joissa sovelluksen nopeaa kehitystyötä pidetään tärkeänä. Toisaalta vaillinaisen MVC-mallin toteuttavaa jquerymx-kehystä suositeltiin vain sovelluksiin, joissa MVC-mallin etujen tavoittelu projektin toteutuksen kannalta ei ole tärkeätä. Kehyksen käyttö ei kuitenkaan yksinään takaa sovelluksen korkeaa laatua. Esimerkiksi suorat ristiinviittaukset sovelluksen näkymän ja mallin välillä voivat vähentää ohjelman uudelleenkäytettävyyttä toisessa projektissa. Pelkkä hyväksi havaittujen suunnittelumallien seuraaminen ei siis johda onnistuneeseen toteutukseen. Kehittäjällä on oltava harjaannusta modulaarisen ja geneerisen koodin tuottamisesta sekä selkeä näkemys sovelluksen käyttöliittymän epäkohtien havaitsemisessa. Avainsanat ja -sanonnat: MVC, Javascript, suunnittelumallit, sovelluskehykset.
3 iii Sisällys 1. Johdanto Verkkosovellusten ohjelmistokehitys Yleistä verkkosovellusten kehityksestä Verkko- ja työpöytäsovellusten eroja Palvelinkeskeisyydestä asiakaskeskeisyyteen Sovellusalustan kehittyminen Käsitteet Kielet ja tiedonsiirtomuodot Verkkosovelluskehityksen yhteyskäytännöt Käyttöliittymän käsitteet MVC-malli ja sen johdannaiset MVC MVP MVVM Suunnittelumallit Oliomaailman käsitteet Javascriptissä Näkyvyys Rakennin Perintä Sovelluskehykset Yleistä sovelluskehyksistä Sovelluskehyksen käytön etuja Erilaiset sovelluskehysluokat Laatuominaisuusstandardit ISO ISO Keskeiset laatuattribuutit Laatuominaisuudet Sidoksellisuus Luettavuus Tehokkuus Siirrettävyys Ylläpidettävyys Laajennettavuus Koko Sovelluskehysten esittely Maria Framework jquerymx... 40
4 iv 4.3. KnockoutJS Sovelluskehysten arviointi ja vertailu Yleistä kehysten arkkitehtuurista Arviointi Maria Framework jquerymx KnockoutJS Vertailu Sidoksellisuus Luettavuus Tehokkuus Siirrettävyys Ylläpidettävyys Laajennettavuus Koko Vertailun yhteenveto Vertailun lopputulos Yhteenveto Viiteluettelo... 72
5 1 1. Johdanto Verkkosovellusalustan luonne on muuttunut viimeisen vuosikymmenen aikana merkittävällä tavalla. Ennen sivustot olivat staattisia, ja Javascriptillä lisättiin vain hieman vuorovaikutteisuutta sivuun. Vuorovaikutteisuuden vähyyteen vaikuttivat osaltaan Javascriptin universaalin tuen puuttuminen sekä se, että Javascript oli mahdollisuuksiltaan vielä melko rajoittunut. Yleensä sivustoilla käytettiin vain lyhyitä Javascript-koodipätkiä, eikä arkkitehtuurilliseen suunnitteluun koettu olevan laajemmin tarvetta. Lisäksi sivuston suorituskykyyn pyrittiin koneiden hitaampien tehojen vuoksi kiinnittämään enemmän huomiota tekemällä Javascript-koodista toteutukseltaan mahdollisimman yksinkertaista, käyttämättä sen koommin ylimääräisiä arkkitehtuurillisia kehyksiä avuksi. Tämä heikensi auttamatta myös koodin muokattavuutta. Tilanne palvelinpuolella on jo pitkään ollut paremmin hallussa. Arkkitehtuuriin on erilaisten sovelluskehysten avulla osattu kiinnittää huomiota aina sovelluksen kehityksen alusta asti. Asiakaspuolen koodiin eli käyttäjän selaimessa suoritettavaan ohjelmakoodiin ei välttämättä ole kuitenkaan ollut tarvetta kiinnittää huomiota, koska alkujaan koodi painottui selainpuolen koodin sijaan enemmän palvelinpuolelle, aiheuttaen sen, että selainpuolen koodista tuli usein yksinkertaista. Valitettavasti tämä käytäntö on osittain jäänyt edelleen vaikuttamaan verkkosovelluskehittäjien käytäntöihin asiakaspuolen koodin kehittämisessä. Verkkoselain on muuttunut staattisten sivustojen esitysalustasta merkittäväksi omaksi sovellusalustakseen. Tämän myötä ohjelmakoodin määrä selainpuolen sovelluksissa on lisääntynyt, ja samalla sovelluksista on tullut sisäisesti monimutkaisempia. Näin on syntynyt tarve kiinnittää huomiota myös asiakaspuolen koodin arkkitehtuuriin. Nyt arkkitehtuuriin panostamiseen on varaa, kun arkkitehtuurillisesta selainpohjaisesta koodista ei koidu välttämättä tuntuvaa haittaa sivuston tai verkkosovelluksen suorituskykyyn käyttäjien päätelaitteiden suorituskyvyn kasvettua. Suorituskyvyn nousun myötä on havaittavissa myös suuntausta, jossa sivuston osien asettelu keskittyy palvelinpuolen sijasta entistä enemmän selainpuolelle [Mesbah & van Deursen, 2007; Takada, 2014]. Näissä ratkaisuissa haetaan palvelimelta pelkästään raakadata, ja asiakaspuolella sijaitseva ohjelmakoodi rakentaa datan pohjalta haluamansa kaltaisen näkymän. Verkkosovelluskehittäjät toteuttavat verkkosovelluksia usein kunakin hetkenä ratkaistavaksi haluttavan ongelman viitekehyksestä. Sovelluksen muunneltavuus ja joustavuus kärsivät, kun sovelluksen perusarkkitehtuuriin ei
6 2 ole kiinnitetty huomiota sovelluksen suunnittelu- ja kehitystyön alusta alkaen. Lisäksi ketterän kehityksen kehitysmalli saattaa johdattaa verkkosovelluskehittäjiä ajattelemaan, että itse sovelluksen sisäiseen rakenteeseen ei ole syytä kiinnittää niin paljon huomiota kuin esimerkiksi sovelluksen ensi version nopeaan valmistumiseen. Sovelluksen kehittäjä ei näin ollen ota arkkitehtuurin tai sovelluskehyksen valinnassa huomioon sitä, että lähes kaikissa sovelluksen kehittämistapauksissa asiakas asettaa myöhemmässä vaiheessa muutos- ja päivitystarpeita sovellukselleen. Tämän tutkielman lähtökohtana on esitellä ja vertailla keskenään varteenotettavia MVC-sovelluskehyksiä ja pyrkiä löytämään sovelluskehysten laatuominaisuuksien pohjalta sopivin sovelluskehys Javascript-sovelluskehittäjien käyttöön. Erityinen painopiste vertailussa on kehyksen kyvyssä eriyttää datan käsittely, näkymä ja ohjelmalogiikka erillisiksi, mahdollisimman itsenäisesti toimiviksi kokonaisuuksiksi. Kehyksetön Javascript-koodaus, tarkoitukseen sopimattoman kehyksen käyttö tai kehyksen käyttö väärään tarkoitukseen saattaa johtaa koodiin, joka on siirrettävyydeltään, muokattavuudeltaan ja ymmärrettävyydeltään heikkoa. Toisaalta myös oikeantyyppisen Javascript-sovelluskehyksen löytäminen voi olla vaikeaa, joten on otettava huomioon kehysten eri painopisteet ja laatuominaisuudet, jotta kuhunkin tilanteeseen parhaiten sopiva sovelluskehys voidaan löytää. Luvussa 2 esittelen verkkosovellusten ohjelmistokehityksen taustaa sekä keskeisimmät selainpohjaisen ohjelmistokehityksen käsitteet. Selvennän myös, miten olio-ohjelmoinnista tutut käsitteet vastaavat selainsovelluksissa käytetyn Javascript-kielen prototyyppipohjaisia käsitteitä. Luvussa 3 kerron yleisesti sovelluskehyksistä, niiden eduista ja haitoista. Jaottelen myös selainpohjaiset sovelluskehykset eri sovelluskehystyyppeihin sekä esittelen sovelluskehysten vertailussa huomioitavat laatuominaisuudet. Luvussa 4 esittelen kolme verkkosovelluksien kehittämiseen käytettyä sovelluskehystä. Tuon esiin sovelluskehyksen MVC-mallin sovellustavan, kehyksen tyypillisimmät käyttötavat sekä omintakeisimmat sovelluskehyksessä esiintyvät piirteet. MVC-mallin käyttöä havainnollistan lyhyin koodiesimerkein. Luvussa 5 arvioin ja vertailen esitettyjä sovelluskehyksiä painottaen enemmän kehyksellä tuotettavien sovellusten koodirakenteellisia piirteitä kuin kehyksen omaa, sisäistä rakennetta. Lopuksi esitän yhteenvedon siitä, mitkä ovat keskeisimmät erot sovelluskehysten välillä ja mikä sovelluskehys sopii parhaiten kuhunkin käyttötarkoitukseen.
7 3 2. Verkkosovellusten ohjelmistokehitys Ohjelmistokehityksessä on usein kyse havaitun ongelman ratkaisemiseen tarkoitetun tietokoneohjelman suunnittelusta ja toteutuksesta. Verkkosovellusten ohjelmistokehitys rajautuu käsitteenä verkkoyhteyttä hyödyntävien sovellusten kehittämiseen. Tässä tutkielmassa ohjelmistokehityksen viitekehys rajautuu vielä verkkoselaimessa ajettavien sovellusten ohjelmistokehityksen tarkasteluun ja erityisesti verkkoselainpohjaisten sovellusten kehittämiseen käytettävien sovelluskehysten arkkitehtuurin arviointiin. Tässä luvussa kuvaan verkkosovellusten ohjelmistokehityksen ominaispiirteitä sekä keskeisiä verkkosovellusten kehittämisessä ilmeneviä käsitteitä. Kohdassa 2.1 käsittelen verkkosovellusten luonnetta, verkkoalustan yleistä arkkitehtuuria sekä verkko- ja työpöytäsovellusten eroja. Lisäksi pyrin luomaan kuvaa sovellusalustassa tapahtuneesta kehityksestä viimeisen vuosikymmenen aikana. Tämän jälkeen esittelen keskeisimmät selainpohjaisessa ohjelmistokehityksessä esiintyvät käsitteet (kohta 2.2), verkkosovelluksissa käytettävät MVC-mallit (kohta 2.3) ja suunnittelumallit (kohta 2.4) sekä lopuksi oliomaailman käsitteitä vastaavat Javascript-kielen tekniikat (kohta 2.5) Yleistä verkkosovellusten kehityksestä Verkkosovellusten ohjelmistokehitys pohjautuu perimmiltään palvelimen ja asiakkaan väliseen kommunikointiin. Lisäksi verkkosovellusten ohjelmistokehityksessä on kiinnitettävä erityistä huomiota sovelluksen tietoturvaan, sillä palvelin joutuu vastaanottamaan asiakkaalta dataa ja soveltamaan sitä käyttötarkoituksen edellyttämällä tavalla. Palvelimen ja asiakkaan välisessä kommunikoinnissa, niin kutsutussa palvelin asiakas-suhteessa, osa sovelluskoodista jakautuu palvelimelle ja osa käyttäjän selaimella suoritettavaksi. Lisäksi sivuston tai sovelluksen sisältö rakennetaan osin tai kokonaan palvelinpuolella, minkä jälkeen sisältö lähetetään käyttäjän selaimelle. Palvelin asiakas-malli mahdollistaa myös tarpeen mukaisen tiedon kätkennän: verkkosovellusten ohjelmistokehityksessä saatetaan jättää tärkeää sovelluskoodia, esimerkiksi yritykselle arvokas hintalaskufunktio, tarkoituksella vain palvelimella suoritettavaksi, sillä palvelimella sijaitseva koodi ei ole selaimesta käsin käytettävissä. Keskeiseen asemaan verkkosovellusten ohjelmistokehityksessä nousee palvelimella sijaitsevan koodin tietoturva. Mikään ei estä sovelluksen käyttäjää muokkaamasta selaimeen tuodun lähdekoodin sisältöä itselleen edullisella tavalla. Tämän takia palvelimella sijaitsevassa koodissa ei tulisi sokeasti luottaa
8 4 selaimelta tulevaan dataan, vaan kaikki tieto tulisi pääsääntöisesti sanitoida tilanteen edellyttämällä tavalla. Vaikka verkkosovellusten ohjelmistokehityksessä tiedon turvallisuuden tarkistuksen tarpeellisuus tiedetään jo laajasti, kuulee jatkuvasti uutisia verkkosovelluksiin kohdistuneista hyökkäyksistä, jotka johtuvat nimenomaan palvelimen vastaanottaman tiedon turvallisuuden riittämättömästä tarkistuksesta Verkko- ja työpöytäsovellusten eroja Verkkosovellusten ohjelmistokehitys eroaa jossain määrin työpöytäsovelluksiin liittyvästä ohjelmistokehityksestä. Verkkosovelluksissa alustana on käyttäjän selain, työpöytäsovelluksissa käyttöjärjestelmä. Useimmissa tapauksissa työpöytäsovellukset toimivat vain sillä alustalla, jolle ne on suunniteltu. Verkkosovellusten etuna on se, että ne ovat käytettävissä käyttäjän käyttöjärjestelmästä riippumatta, millä tahansa tuetulla selainalustalla. Toisaalta työpöytäsovellukset ovat usein suorituskyvyltään tehokkaampia, sillä sovelluksia voidaan lähes aina ajaa natiivisti suoraan tietokoneen suorittimella. [Bychkov, 2013] Työpöytäsovellusten ohjelmistokehitys eroaa myös asennustavaltaan ja päivitettävyydeltään verkkosovelluksista. Työpöytäohjelma on yleensä kehitettävä tiettyä käyttöjärjestelmää ja laitteistoa varten, ja se on niin ikään asennettava käyttäjän käyttöjärjestelmään. Ohjelmistoon tulevat päivitykset on myös asennettava jokaiseen asennukseen erikseen, kun taas verkkosovelluksissa päivitys joudutaan usein tekemään vain yhteen, palvelimella sijaitsevaan sovelluksen asennukseen. [Bychkov, 2013] Toisaalta verkkosovellukset näyttäisivät olevan ylläpidettävyydeltään häiriöalttiimpia kuin työpöytäsovellukset. Verkkosovelluksen käyttäjä on riippuvainen verkkosovelluksen palvelimen toimintavarmuudesta. Jos verkkopalvelin, jolle sovellus on asennettu, murretaan tai verkkopalvelin jumiutuu, mahdollinen käyttökatkos voi vaikuttaa kaikkiin kyseisen sovelluksen käyttäjiin. Tätä vaaraa ei ole verkkoyhteydestä riippumattomissa työpöytäsovelluksissa. Alkujaan tietokoneohjelmat toimivat suurten keskustietokoneiden alaisuudessa. Asiakaskoneet olivat vähätehoisia päätteitä, jotka käyttivät keskustietokoneen tehoja tiedonkäsittelyyn. Tietokoneiden suoritintehojen ja muistimäärän kasvettua alettiin tehdä yhä enemmän käyttäjän tietokoneen suoritintehoja ja muistikapasiteettia hyödyntäviä sovellusohjelmia. [Bychkov, 2013] Vastaavanlaista kehityskulkua näyttää esiintyvän myös verkkosovellusten ohjelmistokehityksessä; verkkosovellusten toimintalogiikka ei painotu nykyään enää niin paljon palvelinpuolelle, vaan sovelluksen käyttöliittymään ja tiedon
9 5 käsittelyyn liittyviä toimintoja suoritetaan yhä enemmän käyttäjän selaimessa, käyttäjän koneen resursseja hyödyntäen. Nykyään työpöytä- ja verkkosovellusten ero näyttää hieman kaventuneen. Verkkosovelluksia on mahdollista integroida yhä enemmän käyttäjän työpöytään: HTML5-standardin ja Javascript-kielen kehittyneiden tekniikoiden ansiosta verkkosovelluksiin pystyy esimerkiksi raahaamaan tietoa suoraan käyttäjän työpöydältä [Mozilla, 2014a]. Lisäksi on jo olemassa sovellusrajapintoja, joiden kautta verkkosovellus voi luvan saatuaan päästä käsiksi käyttäjän tiedostojärjestelmään [Html5rocks.com, 2014]. Tietyin tekniikoin on myös mahdollista ajaa verkkosovelluksia ilman selainta, omassa ikkunassaan [Sopyło, 2013; Adobe, 2014]. Lisäksi suorituskykyerot työpöytä- ja verkkosovellusten välillä ovat kavenneet. Alkujaan vain työpöytäsovelluksia ja muita paikallisia sovellusohjelmia ajettiin tietokoneen suorittimella natiivisti, mutta nykyisten kehittyneiden selainten komentosarjaesikäännöstekniikan ansiosta on niin ikään mahdollista päästä selainpohjaisilla sovelluksilla lähes natiivien sovellusten suoritustehotasolle Palvelinkeskeisyydestä asiakaskeskeisyyteen Ensimmäiset MVC-pohjaiset verkkosovelluskehykset keskittyivät usein niin sanottuun kevyeen asiakaspäätteeseen (engl. thin client), jossa lähes kaikki mallin, näkymän ja ohjaimen logiikka sijoitettiin palvelinpuolelle. Tällaista tekniikkaa käytettäessä käyttäjä lähettää joko hyperlinkkipyynnön tai lomakkeen syötteen selainpuolelta palvelinpuolen ohjaimelle, minkä jälkeen palvelin lähettää näkymänsä avulla selaimelle kokonaan päivitetyn verkkosivun. Selainpuolen ohjelmistotekniikoiden kehityttyä on tehty erilaisia selainpuolen sovelluskehyksiä, joiden avulla MVC-sovelluksen vastuualueet voidaan osittain tai kokonaan suorittaa asiakaspuolella. [Leff & Rayfield, 2001] Ohjelman toimintalogiikkaan liittyvän koodin painottuminen asiakaspuolelle on johtanut toimintojen vasteajan nopeutumiseen, kun sivuston muutosten näyttämiseksi käyttäjälle ei vaadita sivuston lataamista palvelimelta. Lisäksi vasteaikaa saadaan nopeutettua, vaikka tietoja jouduttaisiinkin lataamaan palvelimelta, sillä nykyaikaisten verkkosovellusten tekniikoilla palvelimelta voidaan ladata vain muuttunut osa sivustosta, tarvitsematta päivittää koko sivustoa uudelleen.
10 Sovellusalustan kehittyminen Vuosituhannen vaihteen alussa verkkosovellusten toteuttamisessa nojauduttiin vielä pitkälti selainlaajennusten tarjoamaan ohjelmistorajapintaan. Sovelluksia tehtiin paljon muun muassa Adobe Flash Player -selainlaajennuksen pohjalle. Lisäksi useat yritykset käyttivät selaimen laajennuksena toimivaa Java Applet -tekniikkaa sovellusratkaisuissaan. Tästä suuntauksesta aiheutui lukuisia sovelluksen käytettävyyteen ja siirrettävyyteen liittyviä ongelmia: verkkosovelluksen toimivuus oli kiinni selaimeen asennettavasta lisäosasta, jolloin sovelluksen käyttö esimerkiksi mobiililaitteilla tai vapaan lähdekoodin käyttöjärjestelmissä ei aina ollut mahdollista. Etenkin kannettavien laitteiden tehot eivät taanneet riittävän tehokasta Flash-suorituskykyä, tai laitteisiin ei sisällytetty ollenkaan tukea Flash-teknologialle sen hitaamman suorituskyvyn takia. Viimeisten vuosien aikana tällä saralla on kuitenkin havaittu positiivista kehitystä. Verkkosovellusten toteuttaminen selainlaajennusten varaan on huomattavasti vähentynyt. Tähän on merkittävästi vaikuttanut se, että suuret tietotekniikkayhtiöt ovat pyrkineet vähentämään ulkoisiin sovelluslaajennuksiin nojautuvaa sovellusten toteuttamiskehityssuuntaa ja sen sijaan olleet mukana HTML5-tekniikan eteenpäin viemisessä. Esimerkiksi Apple jätti kokonaan sisällyttämättä Flash-tuen matkapuhelimiinsa ja muihin mobiililaitteisiinsa muun muassa suorituskykyyn ja tietoturvaan liittyvin perustein [Jobs, 2010]. Näin verkkosivustojen toteuttajien on ollut pakko toteuttaa selainlaajennuksiin nojautuvat sivustotoiminnallisuudet uudelleen siten, että sivustot käyttävät natiivia HTML5-tekniikkaa selainlaajennusten asemesta. Tämä kehityssuunta vahvistaa HTML5-pohjaisten verkkosovellusten merkitystä. Tämän myötä myös sopivan Javascript-sovelluskehyksen valitsemisen tärkeys korostuu, kun tarjolla on lukuisia erilaisia sovelluskehyksiä erilaisine arkkitehtuuriratkaisuineen. Ongelmana on silti valinnan vaikeus: mikä kehys soveltuisi arkkitehtuuriltaan ja muilta ominaisuuksiltaan parhaiten kulloinkin suunnitteilla olevan sovelluksen toteutukseen. Lisäksi esiin nousee kysymys, kannattaako sovellus tehdä jopa ilman sovelluskehystä vai voiko kyseeseen tulla peräti oman yksinkertaisen sovelluskehyksen toteuttaminen. Ongelma on yhä ilmeisempi, kun yritykset vaativat tuoteratkaisuissaan työpöytäsovellusten sijaan enemmän selaimeen perustuvia käyttöliittymiä Käsitteet Tässä kohdassa esittelen keskeisimmät selainpohjaisessa ohjelmistokehityksessä esiintyvät käsitteet sekä merkittävät asiaa sivuavat tekniikat. Aluksi puhutaan yleisesti verkkosovelluskehitykseen liittyvistä kielistä ja tiedonsiirto-
11 7 muodoista. Sen jälkeen käsitellään sovellusten kehityksessä käytettäviä yhteyskäytäntöjä. Lopuksi tuodaan myös käyttöliittymää koskevat keskeiset käsitteet esiin, koska verkkosovelluksissa on loppujen lopuksi kyse käyttöliittymien rakentamisesta Kielet ja tiedonsiirtomuodot HTML-merkkauskielellä (engl. Hypertext Markup Language) esitetään verkkosivujen ja -sovellusten rakenne. Tässä hypertekstin luomiseen käytettävässä merkkauskielessä dokumentin rakenne kuvataan elementteinä, joiden sisällä voi olla toisia elementtejä. Elementtien ominaisuuksia voi tarkentaa elementtien tunnisteiden (engl. tag) sisällä määritetyin määrein (engl. attribute). Dokumentin rakenteesta voidaan viitata muihin dokumentteihin tai resursseihin käyttäen URI-viitteitä (engl. Uniform Resource Identifier) eli verkko-osoitteita. [W3C, 1999; Berners-Lee, 1989] Tiedon rakenteen ja sisällön esittämiseen ja siirtämiseen käytetään usein XML-kuvauskieltä (engl. Extensible Markup Language). Se on läheistä sukua HTML-merkkauskielelle, mutta sillä on eri käyttötarkoituksensa: uusia elementtejä voi määrittää ilman rajoituksia, ja elementeille voi antaa datan rakenteen asettamien vaatimusten mukaisia merkityksiä. XML:ssä tiedon rakenteen oikeellisuus on tarkempaa; esimerkiksi tunniste on aina päätettävä lopputunnistetta käyttäen, kun taas HTML-kielessä tietyt tunnisteet eivät vaadi lopputunnistetta. [W3C, 2008] XML on ominaisuuksiltaan monipuolinen merkkauskieli, mutta jossain mielessä myös hieman verboosi eli monisanainen: merkkaus voi viedä jopa enemmän tilaa kuin dokumentissa esitettävä data. Tämän ja muiden seikkojen takia on kehitetty muita, yksinkertaisia verkkosovellustekniikkoihin liittyviä tiedonkuvauskieliä. Eräs tällainen kieli on JSON (engl. Javascript object notation eli Javascriptoliomerkintätapa). Se kuuluu nykyään keskeisimpiin selainsovelluskehityksessä käytettäviin tiedonkuvaustapoihin. Tiedostomuodon kehittäjien mukaan kieltä on ihmisen helppo lukea ja tuottaa, mutta samalla koneiden helppo jäsennellä ja generoida. Sen avulla tietoa voidaan siirtää XML-kieltä yksinkertaisemmassa muodossa. Tallennusmuoto muistuttaa paljolti assosiatiivista tietotaulukkoa, sillä se koostuu kahdesta tietorakenteesta: a) luettelosta nimi-arvo-pareja, jotka ovat rinnastettavissa useissa kielissä olion käsitteeseen sekä b) järjestetystä listasta, joka muistuttaa perinteistä taulukkoa (engl. array). [JSON, 2014] Vaikka merkintätavan nimessä puhutaan oliomerkinnästä, JSON-muotoiseen dataan ei voi sellaisenaan tallentaa olioita. Oliot, kuten jopa yksinkertaiset
12 8 päivämäärätietueet, joudutaan sarjallistamaan merkkijonomuotoon, jotta tiedon tallennus JSON-muodossa onnistuu. Toisaalta tätä voinee pitää JSONmerkintätavan vahvuutena, sillä näin kyseisessä muodossa tallennettu tieto on kieliriippumatonta. HTML-dokumenttiin voi sisältyä myös selaimessa ajettavaa ohjelmakoodia. Tällöin kyse ei välttämättä enää ole dokumentista vaan selainpohjaisesta verkkosovelluksesta. Ohjelmakoodi voidaan liittää suoraan dokumentin rakenteeseen script-tunnisteella, tai koodi voidaan sisällyttää dokumenttiin viittaamalla erilliseen resurssiin. Yleisin verkkosovellusten selainpuolen ohjelmointikieli on Javascript, josta kerrotaan lisää kohdassa 2.5. Minimoinnilla (engl. minification) sovelluskehyksen koodi saadaan toimitettua usein yhtenä lyhennettynä komentosarjatiedostona, minkä ansiosta se saadaan ladattua nopeammin käyttäjän selaimeen verkkoyhteyden välityksellä. Minimoidusta lähdekoodista on poistettu tarpeettomat välilyönnit, rivinvaihdot ja sarkainmerkit sekä koodikommentit. Usein myös useampi komentosarjatiedosto on liitetty yhteen minimoituun komentosarjatiedostoon, sillä yhden tiedoston lataus vaatii useamman sijasta vain yhden http-pyynnön, mikä nopeuttaa sivuston latautumista entisestään. [Sahgal, 2014a] Minimointia ei tule sekoittaa obfuskointiin [JavaEncrypt, 2011] eli koodin monimutkaistamistekniikkaan, jossa varjeltavan lähdekoodin sisältö tarkoituksella sekoitetaan lukukelvottomaan muotoon [Sahgal, 2014b]. Javascript tulkattavana kielenä on otollinen minimoinnin käytölle. Koodia ei muunneta tavukoodi- tai binäärimuotoon, joten lähdekoodin koolla on merkitystä tiedonsiirron tehokkuudessa. Minimointi ei rajoitu vain ohjelmakoodiin; minimoida voi myös HTML- ja CSS-muotoista dataa. Keskeisenä käsitteenä ohjelmakoodin kannalta on DOM-ohjelmistorajapinta (engl. Document Object Model). Dokumenttioliomallin avulla selainpohjainen ohjelma pääsee käyttämään ja muokkaamaan HTML- ja XML-dokumenttien rakennetta. Rajapinta määrittelee tavan dokumentin tietojen hakemiseen ja muokkaamiseen. Dokumentti, niin sanottu DOM-puu, esitetään solmuina, joiden kautta komentosarjasta pääsee käsiksi dokumentin rakenteeseen. [Peltomäki & Nykänen, 2006] Ilman DOM-rajapintaa sovelluksen käyttöliittymäelementtien käyttö olisi hyvin vaikeaa, koska sovelluskehittäjän pitäisi itse jäsentää HTML-dokumentin sisältöä merkkijonodatana. On tärkeää huomata, että selainsovelluksissa DOMrajapinnan kautta käytettävä dokumentti vastaa sovelluksen näkymän rakennetta. Nykyään DOM-rakenteen muokkaamista voi helpottaa Javascript-kirjastoilla, kuten jquery [jquery, 2014].
13 Verkkosovelluskehityksen yhteyskäytännöt Yhteyskäytäntö on sovittu standardi laitteiden tai sovellusten välisessä yhteydessä käytettävistä keskustelusäännöistä. Yhteyskäytännön avulla mahdollistuu viestien lähettäminen osapuolten välillä. Verkkosovellusten tapauksessa käytetään niin kutsuttua http-yhteyskäytäntöä, johon kuuluu keskeisenä asiakkaan ja palvelimen eriytetty rooli. Yhteyskäytännön avulla sivusto voidaan ladata kokonaisuudessaan palvelimelta asiakkaalle, tai asiakas voi ladata dataa palvelimelta osittain, päivittämättä koko sivustoa. Asiakas on palvelimelta tulevan tiedon pyytäjä tai vastaanottaja, tai palvelimelle tiedon lähettävä osapuoli. Asiakkaana on usein selain, mutta se voi yhtä lailla olla jokin muu sovellus, joka käyttää palvelimen rajapintaa. Tässä asiakkaaseen viitataan selaimen lisäksi myös termillä selainpuoli. Pyynnöllä selain käskee palvelinta lähettämään resurssin sisällön tai muuttamaan resurssin sisältöä. Pyynnön mukana annetaan haettavan tiedon osoite eli URI-osoite, käytettävä metodi eli niin kutsuttu verbi, joita voi olla muun muassa GET, POST ja DELETE sekä mahdollisesti palvelimelle lähetettävä datan sisältö ja tyyppi. Pyyntö koostuu otsakkeesta (engl. header) ja runko-osasta (engl. body). Otsakkeessa on pyyntöön liittyvää oheistietoa, kuten käyttöjärjestelmäversio, selainversio ja viittaavan sivun osoite. [RFC2616, 1999] Palvelin vastaa pyyntöön vastaavanlaisella yhteyskäytännöllä. Vastauksen otsakkeessa on palvelimeen liittyviä tietoja, kuten palvelimen käyttöjärjestelmä ja versio sekä tiedon sisältöön liittyviä tietoja, kuten tyyppi, merkistökoodaus ja tilakoodi. Vastauksen runko sisältää pyydetyn resurssin tietosisällön, joka koostuu esimerkiksi verkkosivujen tapauksessa dokumentin HTMLrakenteesta. Runko voi puuttua vastauksesta, esimerkiksi palvelimen antaessa uudelleenohjauspyynnön. [RFC2616, 1999] Ajax-tekniikan (engl. Asynchronous Javascript and XML) avulla selainpohjaisen sovelluksen koodi voi hakea ja lähettää tietoja palvelimen ja selaimen välillä ilman koko sivuston uudelleenlataamista. Ajax-tekniikan avulla verkkosivujen vuorovaikutteisuutta voi lisätä. XML-muotoisen datan sijasta selain voi lähettää minkä tahansa muun tyyppistä dataa, kuten JSON-dataa. [Peltomäki & Nykänen, 2006] Tekniikkana Ajax on hyvin yksinkertainen; se ei sisäisesti paljon eroa normaalista http-pyynnöstä. Se kuitenkin avaa selainpohjaisille verkkosovelluksille lukemattomia mahdollisuuksia verkkosovelluksen vuorovaikutteisuuden lisäämiseen. Yleisellä tasolla kuvattuna Ajax-tekniikka mahdollistaa siirtymisen sivustomallista varsinaiseen sovellusohjelmamalliin, jolloin saavutetaan työpöytäsovellusta muistuttava käyttökokemus [Agile, 2013].
14 Käyttöliittymän käsitteet CSS (engl. Cascading Style Sheets) on merkkauskieli, jolla HTML-dokumentin elementteihin voidaan liittää tyylimäärittelyjä. CSS-kielen avulla sivuston tyylimäärittelyt saadaan erotettua HTML-dokumentin rakenteesta. Lisäksi samaa tyylimäärittelyä voidaan soveltaa useassa eri elementissä, mikä niin ikään lisää sivuston modulaarisuutta. [W3C, 2011] CSS on melko joustava ja monipuolinen merkkauskieli tyylien määrittelyyn, mutta sillä on heikkoutensa: Jos saman elementin tyylimäärittelyn alle määritetään muita tyylimäärittelyjä, joudutaan ulompi elementti määrittämään jokaisen alempana määritellyn tyylimäärittelyn yhteydessä uudestaan. Tämän ja lukuisten muiden CSS-kielen ongelmien korjaamiseksi on kehitetty useita kolmannen osapuolen tyylimäärittelykieliä, jotka yksinkertaistavat muun muassa sisäkkäisten tyylimäärittelyjen käyttöä. Nämä kielet kääntyvät joko ajon aikana tai ennen ajoa selaimen ymmärtämään CSSmuotoon. Esimerkkejä tällaisista käännettävistä tyylimäärittelykielistä ovat LESS [lesscss.org, 2014] ja Sass [Sass-lang.com, 2014]. Käytettävästä kehyksestä riippumatta verkkosovelluksen käyttöliittymät liitetään sovelluksen ohjelmakoodiin käyttöliittymätapahtumien avulla. Tapahtuma on välikappale käyttöliittymän ja sovelluksen toimintalogiikan välillä: järjestelmä kutsuu tiettyä sovelluksen funktiota tai metodia käyttäjän syötteen tai muun järjestelmän tapahtuman myötävaikutuksesta. Verkkosovelluksissa tapahtumafunktiolle annetaan parametrina usein event-olio, josta pääsee käsiksi tapahtumaan liittyvään käyttöliittymäelementtiin. Olion kautta saa myös tietoja tapahtumasta, kuten painetusta näppäimestä tai hiiren osoittimen sijainnista napsautuksen aikana. [Peltomäki & Nykänen, 2006] 2.3. MVC-malli ja sen johdannaiset Olennainen osa sovelluskehyspohjaista ohjelmistokehitystä on MVC-mallin käyttö. MVC-suunnittelumallin mukaan toteutettu sovellus eriyttää tiedonkäsittelyn, graafisen näkymän sekä ohjelmalogiikan toiminnallisuudet toisistaan. Tavoitteena on erottaa eri vastuualueet toisistaan, usein omissa luokissaan käsiteltäviksi, jotta ohjelman osa-alueiden riippuvuus toisistaan saadaan minimoitua. MVC-mallia ja sen johdannaisia kutsutaan esitysmalleiksi (engl. presentation pattern) [Manoj, 2012a]. Niiden avulla ohjelman tilan esitys saadaan eriytettyä ohjelman muusta toiminnasta. Useat esitysmallit ovat muunnoksia alkuperäisestä MVC-mallista.
15 11 Suunnittelumalleista ja MVC-johdannaisten malleista puhuttaessa on sekaannuksen välttämiseksi syytä mainita aiheeseen liittyvä suomenkielisen termistön monitulkintaisuus. Englannin kielessä suunnittelumallista (engl. design pattern) ja MVC:n mallista (engl. model) käytetään eri nimitystä. Tässä tutkielmassa MVC-mallilla tarkoitetaan nimenomaan MVC-suunnittelumallia, ei MVC-suunnittelumallin tiedonkäsittelystä vastaavaa mallia. Nykyisten verkkosovelluskehysten voidaan katsoa päällisin puolin toteuttavan MVC-mallin periaatteet. Kehysten MVC-toteutuksissa on kuitenkin paljon eroja ja jopa selvästi havaittavia puutteita. Jotkin kehykset käyttävät MVC-mallin asemesta jotain muuta esitysmallia, kun taas joidenkin kehysten kehittäjät väittävät kehyksensä toteuttavan MVC-mallin periaatteen, vaikka kehystä ei voitaisi selvästi kategorisoida mihinkään olemassa olevista MVCjohdannaisista. Esimerkiksi Backbone.js-kehys [Backbone.js, 2014] käyttää lähinnä MVPsuunnittelumallia tai jonkin asteen muunnosta tästä. Kehyksessä ohjaimen tilalla on niin sanottu esittäjä (engl. presenter), jolloin ohjaimen käytön sijasta ohjelmalogiikkaan liittyvä ohjelmakoodi siirtyy näkymän harteille. Esittäjänä kehyksen esitysmallitoteutuksessa toimii näkymään viittaava View-olio [Backbone.js, 2014], jolloin ohjaimen ja näkymän rooleja ei ole selkeästi erotettu. Osmani [2012b] toteaa, ettei kyseisen kehyksen arkkitehtuuri vastaa niin MVC-, MVP- kuin MVVM-mallia, vaan kehyksessä käytetään omaa, MV*-perhettä muistuttavaa arkkitehtuurilähestymistapaa MVC MVC-mallissa sovellus tai sen yksittäiset osat jaetaan malliin, näkymään ja ohjaimeen. MVC-mallin idean kehitti Trygve Reenskaug vuonna 1979 Smalltalk-ohjelmointikielelle. Alkuperäisen kuvauksen [MVC-Process, 2010] pohjalta uudelleenpiirretty kuva esittää tyypillisen mallin, ohjaimen, näkymän ja käyttäjän välisen vuorovaikutuksen (kuva 1). Käyttäjä vastaanottaa visuaalisia kuvia näkymältä, käyttää käyttöliittymässä esitettyjä ohjaimen toimintoja, jolloin ohjain muuttaa toiminnon edellyttämällä tavalla mallin tilaa. Malli vuorostaan tiedottaa tilansa muuttumisesta näkymälle (ja mahdollisesti muille mallin tilaa tarkkaileville olioille), jolloin näkymä päivittää käyttöliittymänsä vastaamaan mallin uutta tilaa. [Manoj, 2012a]
16 12 Kuva 1. Tyypillinen MVC-kiertokulku mallin, ohjaimen, näkymän ja käyttäjän vuorovaikutuksen välillä. [MVC-Process, 2010] Ohjain (engl. controller) vastaanottaa käyttäjän syötteen ja pyytää mallia hakemaan tai tallentamaan syötettä vastaavan datan. Syötteenä voi olla esimerkiksi painikkeen napsautus, tekstikentän muuttaminen tai mikä tahansa muu käyttäjän toiminto. Jos MVC-toteutus ei käytä tarkkailijamallia, ohjain itse pyytää näkymää esittämään datan. Tarkkailijamallia käyttävässä toteutuksessa mallin muutos aiheuttaa näkymän päivityksen. Ohjainta kutsutaan suomen kielessä myös käsittelijäksi tai kontrolleriksi. [Reenskaug, 1979; Manoj, 2012a] Malli (engl. model) sisältää sovelluksen datan tai on välillisesti yhteydessä sovelluksen dataan. Malli on usein passiivinen toimija; se hakee tai tallentaa dataa vain, kun ohjain (tai joissain toteutuksissa suoraan näkymä) käskee niin. Malli voi sisältää datan itsessään tai hakea sen jostain muusta lähteestä, kuten erillisestä tietokannasta. Kun mallin tila muuttuu, se käskee mallia tarkkailevia olioita, kuten näkymää, päivittämään tilansa muutoksen mukaisesti. [Reenskaug, 1979; Manoj, 2012a] Näkymä (engl. view) rakentaa käyttöliittymän esittäen suoraan mallilta tai ohjaimen välityksellä saadun datan käyttäjän ymmärtämässä, graafisessa muodossa [Reenskaug, 1979; Manoj, 2012a]. Lisäksi näkymä päivittää käyttöliittymää mallin muutosten mukaisesti sekä joissain tapauksissa erikseen ohjaimen käskystä. Joissakin verkkopohjaisissa MVC-ratkaisuissa näkymäksi kutsutaan HTML-dokumentin DOM-rakennetta, kun taas joissain ratkaisuissa DOM-rakennetta muokataan erillisen näkymäluokan (tai erillisten näkymäluokkien) kautta.
17 13 Reenskaug itse kuvaa mallin luontia seuraavasti: "MVC-mallista suunniteltiin yleinen ratkaisu ongelmaan, jossa käyttäjät joutuvat ohjaamaan suurta ja monimutkaista tietomäärää. Vaikeinta oli keksiä sopiva nimi arkkitehtuurin eri komponenteille. Model-View-Editor oli ensimmäinen nimeämiskäytäntö. Pitkien keskustelujen pohjalta, eritoten Adele Goldbergin kanssa, päädyimme ilmaukseen Model-View-Controller." [Reenskaug, 2014] Reenskaug suunnitteli MVC-mallin itse, mutta käytti sen ideoinnissa ja nimeämiskäytännöissä hyödyksi myös muiden tutkijoiden, kuten Adele Goldbergin, apua. Goldberg oli muun muassa Smalltalk-80-ohjelmointikielen oliokäsitteiden kehittämisessä mukana [Abbate, 2002]. Osmanin [2012b] mukaan MVC helpottaa sovelluksen toiminnallisuuksien modularisointia seuraavalla neljällä tavalla: 1) Ylläpito yksinkertaistuu, kun päivitysten yhteydessä kehittäjän on helppo päätellä, liittyykö muutos sovelluksen dataan, ohjelman toiminnan käsittelyyn vai käyttöliittymään. 2) Tiedon hakuun ja tallennukseen liittyvät yksikkötestit on helpompi toteuttaa, kun mallit ja näkymät on erotettu toisistaan selkeästi. 3) Matalan tason malli- ja ohjainkoodin toistoa saadaan vähennettyä. 4) Modulaarisuuden vuoksi sekä ohjelman ydinlogiikasta että käyttöliittymästä vastaavat kehittäjät voivat kehittää sovellusta yhtäaikaisesti. Keskeinen tavoite MVC-mallin arkkitehtuurin toteuttavalla sovelluksella tulisi tämän pohjalta olla vastuualueiden selkeä erottelu, toistuvan koodin välttäminen ja yhtäaikaisen kehitystyön mahdollistaminen. Tämän lisäksi tulisi MVC-mallin toteuttavien verkkopohjaisten sovellusten tarkastelussa erityisesti huomioida ohjaimen, näkymän ja varsinaisen käyttöliittymän välinen yhteys. Verkkosovellusten ohjain poikkeaa nimittäin toimenkuvaltaan työpöytäsovelluksissa käytetystä MVC-mallin ohjaimesta. Käyttöliittymätapahtumia ei voida verkkosovelluksissa suoraan liittää tiettyihin ohjaimen toimintoihin eli tapahtumankäsittelijöihin. DOM-elementti, johon tapahtuma liittyy, tunnistetaan kyseiseen DOM-elementtiin liitetyn id-tunnisteen tai class-luokkamäärittelyn perusteella, jolloin ohjain tulisi riippuvaiseksi käytetystä näkymästä, tai tarkemmin sanoen, näkymän käsittelemästä DOMhierarkiasta (ks. listaus 1). $('#okbutton').click(function() { console.log('ok- nappia painettu.'); }); Listaus 1. Ohjaimen tapahtumankäsittelijä tulee näkymästä riippuvaiseksi, kun HTML-elementin nimeen viitataan suoraan.
18 14 Jotta ohjain saataisiin näkymästä riippumattomaksi, tulee liitos ohjaimen toimintojen ja näkymän takana olevan DOM-elementin välillä ilmaista joko näkymän puolella [Michaux, 2013] tai erillisessä tapahtumankäsittelijäluokassa. Joka tapauksessa on otettava huomioon myös sovelluksen MVC-arkkitehtuurin lopullinen toteutustapa. Esimerkiksi deklaratiivinen ohjelmointitapa saattaa oleellisesti vaikuttaa käyttöliittymätapahtumafunktioiden ja DOM-elementtien yhdistämiseen liittyvään toimintalogiikkaan MVP MVP-mallin toteuttava sovellus koostuu mallista (engl. model), näkymästä (engl. view) ja esittäjästä (engl. presenter). MVP-mallissa perinteisesti ohjaimeen liittyviä tehtäviä on sijoitettu esittäjään, sillä näkymä on MVP-mallissa se sovelluksen osa, joka vastaanottaa käyttäjän syötteet. Näkymä ei kuitenkaan itse käsittele toimintoja, vaan pyytää esittäjää suorittamaan toimintoa vastaavan logiikan. Tähän voi sisältyä tiedon hakemista mallista tai mallin tiedon muuttamista. Pyydetyn toiminnon suorittamisen jälkeen esittäjä päivittää näkymän tilaa näkymän avaaman rajapinnan kautta, kuten kuvassa 2 on esitetty. [Osmani, 2012b] Kuva 2. MVP-mallin näkymän, ohjaimen ja esittäjän vuorovaikutus suhteessa sovelluksen käyttäjään. [Manoj, 2012b] Perinteisessä MVC-mallissa on muutama huono puoli: Ensinnä malli joutuu tiedottamaan näkymälle tilansa muuttumisesta. Toiseksi näkymän on oltava jossain määrin tietoinen mallista. Perinteisesti näkymän kuuluisi MVC-mallin mukaan toimia passiivisesti, "vain käskystä". MVP-mallissa näkymän ja mallin
19 15 välillä ei kuitenkaan tavallisesti ole erillistä rajapintaa, vaan esittäjä pyytää muokkaamaan mallin tilaa suoritettua toimintoa vastaavalla tavalla. Tällöin näkymästä saadaan passiivinen toimija. [Manoj, 2012a] Keskeinen idea MVP-mallissa liittyy näkymän vastuualueen rajaamiseen. MVP-mallin ideana on pyrkiä ratkaisemaan kaksi keskeistä perinteisessä MVCmallissa esiintyvää ongelmaa. Ensinnä malli joutuu tiedottamaan näkymille tilansa muuttumisesta. Toiseksi näkymä on täysin tietoinen mallissa. Näkymän tietoisuus mallista MVC-mallissa johtuu siitä, ettei näkymän ja mallin välillä ole erillistä rajapintaa. Tämän johdosta näkymä ei ole enää niin passiivinen kuin sen kuuluisi olla. [Manoj, 2012a] MVP-mallin tarkoituksena on mallin ja näkymän välisen välittömän suhteen erottaminen. MVP-mallissa näkymä julkaisee sovitun mukaisen rajapinnan esittäjälle. Kun käyttäjä on vuorovaikutuksessa näkymän kanssa, näkymä kutsuu esittäjän metodia, jolloin esittäjä suorittaa vaaditun tehtävän, kuten tiedon haun mallista. Tämän jälkeen esittäjä päivittää jälleen näkymää käyttäen näkymän sovittua rajapintaa. [Manoj, 2012a] MVP-mallin passiivisen näkymän tavoittelu saattaa monimutkaistaa sovelluksen käytännön toteutusta. Tämän vuoksi MVP-mallista on tehty kaksi eri versiota, joista toinen korostaa passiivista näkymää ja toinen aktiivisesti ohjaimen kaltaisena toimivaa näkymää. Näistä jälkimmäinen käyttää usein tietoliitoksia ja yksinkertaista koodia näkymän toimintojen toteuttamisessa. [Manoj, 2012a] Alkuperäisen kuvan [Manoj, 2012b] pohjalta uudelleenpiirretty kuva esittää perinteisen, passiivista näkymää käyttävän MVP-mallin toimintalogiikan (kuva 2). Aktiivista näkymää käyttävän MVP-mallin toiminta on muilta osin sama, mutta lisäksi näkymä on vuorovaikutuksessa mallin kanssa tietoliitosten kautta. Keskeinen ero MVP- ja MVC-mallien välillä liittyy ohjaimen ja esittäjän erilaiseen tehtävään. MVP-mallissa esittäjän tehtävä on esittää näkymältä saadun kutsun mukaisen toiminnon tila näkymän kautta käyttäjälle [Manoj, 2012a]. MVC-mallissa ohjain ei toimi mallin ja näkymän välikappaleena, sillä ohjain ei päivitä näkymän tilaa. Sen sijaan ohjaimen tehtävänä on toimia välikappaleena käyttäjän aikaansaamien toimintojen ja mallin välillä, kun mallin vastuulle jää komentaa näkymää päivittymään mallin nykyisen tilan mukaiseksi. MVP-mallia saatetaan käyttää pääosin yritystason sovelluksissa silloin, kun sovelluksen esityslogiikan uudelleenkäyttö on keskeistä. MVC-mallin käyttö ei tällöin välttämättä tule kyseeseen, sillä usein monimutkaisten ja paljon käyttäjävuorovaikutusta sisältävien sovellusten toteuttamisessa näkymä joutuu
20 16 olemaan vuorovaikutuksessa useamman ohjaimen kanssa. MVP-mallissa taas kaikki sovelluksen monimutkainen logiikka voidaan eriyttää esittäjään, mikä voi merkittävästi helpottaa muun muassa ohjelman ylläpitoa. [Osmani, 2012b] Esittäjä suorittaa sekä käyttöliittymätapahtumia vastaavan toiminnon että muokkaa käyttöliittymää toiminnon mukaisella tavalla. Täten MVP-pohjaisissa Javascript-sovelluskehyksissä sovelluksen näkymänä pidetään usein HTMLdokumentin DOM-rakennetta ja esittäjänä toimii olio, joka muokkaa käyttäjän syötteiden mukaisesti sovelluksen näkymän DOM-rakennetta MVVM MVVM on MVC-malliin pohjautuva suunnittelumalli, jossa arkkitehtuuri jakautuu malliin (M), näkymään (V) ja näkymämalliin (VM). Suunnittelumallissa näkymä ja malli ovat liitoksissa toisiinsa näkymämallin välityksellä (kuva 3). Suunnittelumallissa myös näkymällä on keskeinen rooli sovelluksen toimintalogiikan kannalta: näkymässä määritellään tietoliitosten avulla tapahtumia, jotka muuttavat mallin tilaa. Kuva 3. MVVM-mallissa näkymä on liitetty näkymämalliin tietoliitoksella, jolloin mallin data voidaan esikäsitellä näkymämallissa. [Mehran, 2010] Malli pohjautuu MVC- ja MVP-malleihin. Mallin tarkoituksena on erottaa ohjelman toiminta ja toimintaan liittyvä data selkeästi sovelluksen käyttöliittymästä. Aluksi MVVM-malli suunniteltiin Windows-käyttöjärjestelmän uudeksi käyttöliittymien mallinnukseen käytettäväksi alijärjestelmäksi, mutta myöhemmin mallia on sovellettu Javascript-pohjaisten sovelluskehysratkaisujen arkkitehtuurissa. [Osmani, 2012c] Mallin tehtävänä on muiden MVC-suunnittelumallien tapaan säilyttää ja käsitellä sovelluksen käyttötarkoitukseen liittyvää tietoa. MVVM-suunnittelumallin toteuttavassa sovelluksessa malli ei puutu sovelluksen toimintalogiikkaan eikä muotoile dataa millään tavoin. Ohjelman toimintalogiikka ja datan muotoilu kuuluvat MVVM-mallissa näkymämallin vastuualueeseen. [Osmani, 2012c]
21 17 MVC-mallin tapaan MVVM-mallissa näkymä on ainoa osa, johon sovelluksen käyttäjä on visuaalisesti yhteydessä. MVVM-mallissa näkymän tehtävänä on esittää näkymämallin nykyinen tila, ei suoraan mallin. Lisäksi MVVM-mallin näkymää pidetään aktiivisena toimijana, kun taas MVC-mallin näkymä on erillinen, passiivinen komponentti, joka ei itse ole tietoinen mallista. [Osmani, 2012c] MVVM-mallissa näkymässä määritellään tietoliitosten avulla sovelluksen toiminta sekä käyttöliittymätapahtumat. Käyttöliittymätapahtumaan liittyvä funktio voidaan suorittaa näkymämallin puolella, mutta näkymä on silti vastuussa sovelluksen toimintalogiikan mukaisesta tapahtuman liittämisestä oikeaan näkymämallin määreeseen. [Osmani, 2012c] Näkymämalli on vastuussa mallin tiedon muuntamisesta näkymässä esitettävään muotoon. Esimerkiksi tietokantamuodossa oleva päiväys voidaan muuntaa käyttäjän lokaalin mukaiseen muotoon. [Osmani, 2012c] Tässä mielessä näkymämalli on näkymän ja mallin välissä oleva muunninkomponentti, joka vastaanottaa dataa mallilta ja antaa sen näkymän käyttöön. Lisäksi näkymämalli voi muuttaa mallin tilaa, näkymästä annettujen komentojen perusteella. MVVM-mallissa näkymän tehtäväksi ei jätetä enää esitettävän tiedon muotoilua. Koska MVVM-mallisissa ohjelmissa mallista haettava data muotoillaan käyttäjälle näytettävään muotoon jo näkymämallissa, jää tältä osin näkymän tehtäväksi vain valmiiksi jalostetun tiedon esittäminen Suunnittelumallit Suunnittelumalli on ohjelmistosuunnittelijoiden hyväksi havaitsema tapa ratkaista jokin ohjelmistokehitystyössä usein esiintyvä ongelma. Suunnittelumalleja vastaavat toteutukset perustuvat nykyään yleensä oliopohjaisiin ratkaisuihin. Suunnittelumallien kuvaamiseen on kehitetty erilaisia valmiita kiinteitä malleja. Yleisimmässä tavassa esitellään suunnittelumallista neljä asiaa: ongelman nimi, itse ongelma, ongelman ratkaisu sekä siitä koituvat seuraukset. [Gamma et al., 1994] Suunnittelumallit ovat keskeinen osa verkkosovelluskehyksiä. Sovelluskehykset käyttävät usein useita suunnittelumalleja hyväkseen. Sovelluskehyksen käyttö on helpompi oppia, sillä sovelluskehittäjät tuntevat yleisimmät suunnittelumallit. Javascript-sovelluskehyksissä käytetään useita työpöytäsovelluksien kehittämiseen käytetyistä sovelluskehyksistä tuttuja suunnittelumalleja, kuten tarkkailija-, komposiitti-, strategia- ja tehdasmetodimallia. Näillä kaikilla on
22 18 keskeinen asema tasokkaan sovelluksen, ohjelmakoodin hallittavuuden ja yleisen arkkitehtuurillisen järjestyksen kannalta. Tarkkailijamallissa olio sisältää luettelon oliota tarkkailevista olioista, jotta muutoksen sattuessa oliossa voidaan tarkkailevia olioita, niin kutsuttuja tarkkailijoita (kuva 4), huomauttaa muutoksen tapahtumisesta automaattisesti, ilman tarvetta tietää tarkkailijoiden tarkkaa toteutusta. Alkuperäisen kuvan [Observer, 2010] pohjalta piirretystä tarkkailijamallin kuvauksesta (kuva 4) nähdään, että olion, jossa muutos tapahtuu, ei tarvitse itse päivittää muiden olioiden tilaa. Sen sijaan kukin olio huolehtii itse, kuinka reagoi tarkkailtavassa oliossa tapahtuneeseen muutokseen. Näin ollen tarkkailijamallia käyttämällä saadaan osien välistä sidoksellisuutta vähennettyä. Tarkkailtavaa oliota kutsutaan paitsi tarkkailtavaksi myös subjektiksi. [Gamma et al., 1994] Tarkkailtava Tarkkailija +päivitä() +tarkkailijat +lisäätarkkailija(tarkkailija) +poistatarkkailija(tarkkailija) +informoitarkkailijoita() informoitarkkailijoita(): for tarkkailija in tarkkailijat: call tarkkailija.päivitä() KonkreettinenTarkkailjaA +päivitä() KonkreettinenTarkkailjaB +päivitä() Kuva 4. Tarkkailijamallin arkkitehtuuri. [Observer, 2010] Pääasiallinen kommunikaatio MVC-mallin osien välillä tapahtuu tarkkailijamallin tai sen johdannaisen, kuten Public-Subscribe-mallin, toteutusta käyttäen. Siksi sitä pidetään tärkeimpänä MVC-mallin toteuttavan sovelluksen viestintätapana. Lisäksi tarkkailijamallin ominaisuudet mahdollistavat useamman mallin liittämisen yhteen näkymään MVC-mallissa. [Osmani, 2012b] Komposiittimallissa tietorakenne voi koostua pienemmistä osista, jotka taas voivat koostua pienemmistä osista. Mallissa toimenpiteitä voidaan suorittaa kerralla kaikille mallia käyttäville aliolioille, kun mallin kaikki osat toteuttavat saman rajapinnan. [Gamma et al., 1994] Strategiamallin avulla olion käyttäytymistä pystytään muuttamaan sovelluksen ajon aikana, jolloin olion toimintaa saadaan mukautettua itsenäisesti toisten olioiden käyttötarkoitusten mukaisesti. Strategiamallia käyttävä olio toteuttaa tietyn rajapinnan metodit, jotta oliota voidaan käyttää
23 19 tiettyyn käyttötarkoitukseen välittämättä olion yksityiskohtaisemmista metodimäärittelyistä. [Gamma et al., 1994] Tehdasmetodi on malli, jossa abstraktin funktiokutsun kautta luodaan uusia olioita. Tämä on mahdollista, kun olion kutsutapa on määritelty, mutta itse luokan ilmentymän luominen tapahtuu kokonaan aliluokan sisällä. [Gamma et al., 1994] Työpohjia (engl. template) käytetään muuttuvan näkymän sisällön runkona. Pohja määrittelee näkymän ulkoasun; muuttuville tiedoille on määritelty omat paikanvaraajansa, joihin kulloinkin esillä oleva data ilmennetään Oliomaailman käsitteet Javascriptissä Javascript on EcmaScript-nimisen tulkattavan funktionaalisen kielen eräs toteutus. Sitä käytetään enimmälti verkkoselainsovelluksissa ja ylipäätään verkkosivuilla. Kieltä pidetään perinteisesti tulkattavana kielenä, vaikka jotkin ympäristöt kääntävät Javascript-koodin ennen ajamista. Muita toteutuksia ovat muun muassa Microsoftin JScript [Microsoft, 2014] ja Google Chrome V8 [Google Developers, 2013]. Selkeyden vuoksi puhumme tässä tutkielmassa johdonmukaisesti Javascript-kielestä. Nimestään huolimatta kielellä ei ole yhteyttä Java-kieleen; nimi on valittu vain markkinointisyistä [Peltomäki & Nykänen, 2006]. Javascript-kielestä puuttuu kokonaan tuki luokkien käytölle; käytettävissä eivät ole perinteisistä ohjelmointikielistä tutut oliomaailman käsitteet, kuten rakennin (engl. constructor), purkumetodi (engl. destructor), luokkamuuttujien näkyvyys, luokkien perintä ja rajapinnat. Näiden sijaan perinteisiä olioita vastaavat prototyyppipohjaiset ratkaisut; oliot ovat funktioita, joiden sisällä on muuttujia ja toisia funktioita. [Peltomäki & Nykänen, 2006] Tästä voi koitua ongelmia, sillä suurin osa HTML-pohjaisista verkkosovelluksista toteutetaan juuri Javascriptiä käyttäen, vaikka yleisesti ohjelmistokehittäjät tuntevat luokkapohjaisen olio-ohjelmoinnin paradigman paremmin. Ratkaisuksi on kehitelty erilaisia Javascript-sovelluskehyksiä, joiden mukana tulee keinotekoinen tuki oliomaailmasta tutuille ratkaisuille. Nämä kehykset on toteutettu siten, että niiden käyttö ei vaadi lisäasennusta käyttäjän selaimeen, vaan kehys ladataan sivuston latauksen yhteydessä tavallisena Javascriptkomentosarjana. Seuraavaksi esittelen, kuinka Javascriptissä voidaan toteuttaa oliomaailmasta tutut käsitteet. Myös luokkapohjaisen oliomallin ja prototyyppipohjaisen ohjelmointitavan eroja käsitellään.
24 Näkyvyys Olion jäsenmuuttujien ja -funktioiden näkyvyyteen voidaan Javascriptissä vaikuttaa tiettyyn mittaan asti samantapaisesti kuin perinteisissä oliopohjaisissa kielissä. Näkyvyydessä on kyse luokan sisällä olevan jäsenen käytettävyydestä luokan ulkopuolelta käsin [Loudon, 2010]: Paikallista eli suojattua metodia voi käyttää vain luokan sisältä. Julkista jäsentä voi käyttää luokan ulkopuoleltakin. Näkyvyydestä puhuttaessa viitataan myös käsitteisiin tiedon kätkentä [Loudon, 2010] ja luokan tietojen kapselointi [Sommerville, 2010]. Kun muuttuja tai funktio liitetään olioon this-viitteen avulla, metodista tai muuttujasta tulee julkinen, eli siihen pääsee käsiksi myös olion ulkopuolelta (ks. listaus 2). function LuokkaA() { this.nimi = "Jouni"; this.teejotain = function() {}; } var a = new LuokkaA(); console.log(a.nimi); // Tuloksena "Jouni". Listaus 2. Julkisen jäsenmuuttujan käyttö olion ulkopuolelta. Kun muuttuja tai funktio liitetään olion sisällä käyttäen var-määrettä, funktioon tai muuttujaan pääsee käsiksi vain olion sisältä (ks. listaus 3). Toisaalta tällaisiin, paikallisiin muuttujiin pääsee käsiksi olion sisäisistä metodeista, kuten esimerkin saantimetodista annanimi(). function LuokkaB() { var nimi = "Jouni"; var teejotain = function() {}; this.annanimi = function() { return nimi; } } var b = new LuokkaB(); console.log(b.nimi); // Tuloksena undefined, määrittelemätön. console.log(b.annanimi()); // Tuloksena "Jouni". Listaus 3. Paikallinen jäsenmuuttuja ja -funktio. Sen sijaan suojattuja metodeja (engl. protected methods) ei voida perinteisin keinoin toteuttaa Javascriptissä. Suojatut metodit ovat käytettävissä luokan lisäksi luokan perineistä luokista käsin [Loudon, 2010]. On olemassa kuitenkin sovelluskehyksiä, jotka lisäävät tuen suojattujen metodien käytölle.
Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML
Järjestelmäarkkitehtuuri (TK081702) Ajax 2000-luvun alkuvuosina selainsotien rauhoituttua ohjelmistotalot alkoivat kehittää selainten luoman uuden ohjelmointiympäristön käyttötapoja. Syntyi AJAX (Asynchronous
LisätiedotTekninen suunnitelma - StatbeatMOBILE
Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in
LisätiedotTekninen suunnitelma - StatbeatMOBILE
Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotTiedonsiirto- ja rajapintastandardit
Tiedonsiirto- ja rajapintastandardit Viitekehys Julkishallinnon perustietovarantojen rajapinnat (PERA) työryhmän tulokset valmiit syksyllä 2011 Määrittelee teknisen arkkitehtuuriratkaisun tietovarantojen
LisätiedotWWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys
WWW-OHJELMOINTI 1 WWW-ohjelmoinnin kokonaisuus SGML, XML, HTML WWW-selaimen sovellusohjelmointi WWW-palvelimen sovellusohjelmointi Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 26.10.2000
LisätiedotAJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML
AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen
LisätiedotJärjestelmäarkkitehtuuri (TK081702)
Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotJWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari
JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti
LisätiedotHTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.
HTML & CSS Antti Koivisto HTML (HyperText Markup Language)! HTML on sivujen kuvauskieli.! Se ei ole ohjelmointikieli.! HTML on merkintäkieli, joka koostuu monista merkintä tägeistä ().! Voidaan
LisätiedotWWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat 14.10.2010
WWW-Sivustojen suunnittelu Miten WWW toimii Web-selain hakee Web-sivun HTML-kielisen kuvauksen Sivuun liittyvät kuvat (jpeg, gif, png) Sivuun liittyvät muut elementit Palvelimen URL-osoite esim. http://www.metropolia.fi
LisätiedotWWW-Sivustojen suunnittelu
WWW-Sivustojen suunnittelu Miten WWW toimii Web-selain hakee Web-sivun HTML-kielisen kuvauksen Sivuun liittyvät kuvat (jpeg, gif, png) Sivuun liittyvät muut elementit Palvelimen URL-osoite esim. http://www.metropolia.fi
LisätiedotJohdatus rakenteisiin dokumentteihin
-RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotKurssin hallinta -työväline
Kurssin hallinta -työväline Kurssin hallinta -työvälineellä muokataan kursseja A&Ooppimisympäristöalustalla Kurssi koostuu - ohjelmasta (linkit työkaluihin& muihin resursseihin), - materiaaleista, - keskusteluryhmästä,
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Web Services. Web Services
Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden
LisätiedotL models. Käyttöohje. Ryhmä Rajoitteiset
Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Käyttöohje Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset 0.1
LisätiedotSuvi Junes Tietohallinto / Opetusteknologiapalvelut 2012
Tiedostot Uudet ominaisuudet: - Ei Tiedostot-kohtaa alueen sisällä, vaan tiedostonvalitsin, jolla tiedostot tuodaan alueelle siihen kohtaan missä ne näytetään - Firefox-selaimella voi työpöydältä raahata
Lisätiedot4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
LisätiedotVINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi
VINKKEJÄ CV-NETIN KÄYTTÖÖN www.te-palvelut.fi TE-toimiston verkkoasiointiin pääset kirjautumaan www.te-palvelut.fi Oma asiointi Henkilöasiakas Kirjaudu sisään verkkopankkitunnuksilla ja hyväksy käyttöehdot
LisätiedotXPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy
IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,
LisätiedotDigi-tv vastaanottimella toteutetut interaktiiviset sovellukset
Vaatimusmäärittely Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Versio Päiväys Tekijä Kuvaus 0.1 12.10.01 Pekka Koskinen Ensimmäinen luonnos 0.2 17.10.01 Pekka Koskinen Lisätty vaatimuksia
LisätiedotT-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot
T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi
LisätiedotOhjeita kirjan tekemiseen
Suomen Sukututkimustoimisto on yhdessä Omakirjan kanssa tehnyt internetiin uuden Perhekirja-sivuston. Se löytyy osoitteesta: www.omakirja.fi -> Kirjat -> Perhekirja tai http://www.omakirja.fi/perhekirja?product=6
LisätiedotKäyttöohje. Energent MagiCAD plugin
Käyttöohje Energent MagiCAD plugin Sisältö 1. Yleistä 1 Dokumentin sisältö... 1 Ohjelman asennus... 1 Vaadittavat ohjelmistot... 1 Asennus... 1 Ohjelman käynnistys... 2 2. Toiminnallisuudet 3 Insert Energent
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotWWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa
WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,
LisätiedotVerkkosivut perinteisesti. Tanja Välisalo 11.2.2009
Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate
Lisätiedot6 XML-työkalut 1. 6 XML-työkalut
6 XML-työkalut 1 6 XML-työkalut XML:n periaatteiden tutustumisen jälkeen on helpompi tutustua XML-dokumenttien käsittelyyn ja katseluun suunniteltuja työkaiuja. XML:n yleistymisen pahin pullonkaula on
LisätiedotMOT-PALVELU OHJE MOT-SANAKIRJAN KÄYTTÖÖN
MOT-PALVELU OHJE MOT-SANAKIRJAN KÄYTTÖÖN Seinäjoen koulutuskuntayhtymä tarjoaa opiskelijoilleen ja henkilökunnalleen MOT-sanakirjapalvelun. MOT-palvelu on suomalainen Kielikone Oy: n tuottama pilvipalvelu,
LisätiedotTIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ
aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...
Lisätiedot582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus
582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen
LisätiedotNokia Lifeblog 2.5 Nokia N76-1
Nokia Lifeblog 2.5 Nokia N76-1 2007 Nokia. Kaikki oikeudet pidätetään. Nokia, Nokia Connecting People, Nseries ja N76 ovat Nokia Oyj:n tavaramerkkejä tai rekisteröityjä tavaramerkkejä. Muut tässä asiakirjassa
LisätiedotInternetin hyödyt ja vaarat. Miten nettiä käytetään tehokkaasti hyväksi?
Internetin hyödyt ja vaarat Miten nettiä käytetään tehokkaasti hyväksi? Linkit Chrome https://www.google.com/intl/fi/chrome/browser/ Firefox http://www.mozilla.org/fi/ Opera http://www.opera.com/fi Vertailu
LisätiedotAlkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari
LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,
LisätiedotÄlysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi
Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum
LisätiedotUutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3
Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2
LisätiedotTikon Web-sovellukset
Toukokuu 2015 1 (11) Tikon Web-sovellukset Toukokuu 2015 2 (11) 1 Johdanto... 3 2 Silverlight sovellukset... 3 2.1 Windows... 3 2.1.1 Microsoft Silverlight... 3 2.1.2 Tablet-laitteet... 4 2.1.3 Selaimet...
LisätiedotOhjelmistotuotanto. Luento 9 23.4.2012
Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että
LisätiedotAlkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari
LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti5004000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 4.6.2007,
LisätiedotNettiposti. Nettiposti käyttöohje
YKSIKÄÄN ASIAKAS EI OLE MEILLE LIIAN PIENI TAI MIKÄÄN HAASTE LIIAN SUURI. Nettiposti Nettiposti käyttöohje Tässä käyttöohjeessa kuvataan selainkäyttöisen Nettiposti sähköpostiohjelman toiminnot. Käyttöohje
LisätiedotSiirtyminen Outlook 2010 -versioon
Tämän oppaan sisältö Microsoft Microsoft Outlook 2010 näyttää hyvin erilaiselta kuin Outlook 2003. Tämän oppaan tarkoituksena on helpottaa uuden ohjelman opiskelua. Seuraavassa on tietoja uuden käyttöliittymän
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
LisätiedotTuplaturvan tilaus ja asennusohje
Tuplaturvan tilaus ja asennusohje 1. Kirjaudu lähiverkkokauppaan omilla tunnuksillasi tai luo itsellesi käyttäjätunnus rekisteröitymällä Lähiverkkokaupan käyttäjäksi. a. Käyttäjätunnus on aina sähköpostiosoitteesi.
LisätiedotRATKI 1.0 Käyttäjän ohje
RATKI RATKI 1.0 Käyttäjän ohje Ohje 0.5 Luottamuksellinen Vastuuhenkilö Petri Ahola Sisällysluettelo 1. Yleistä... 3 1.1. Kuvaus... 3 1.2. Esitiedot... 3 1.3. RATKIn käyttöoikeuksien hankinta... 3 1.4.
LisätiedotSivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä
Sivuston nopeus 78 / 100 Nopeus Pitäisi korjata: Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä Sivullasi on 3 estävää ohjelmaresurssia ja 3 estävää CSS-resurssia. Tämä viivästyttää
LisätiedotHarjoitustehtävät ja ratkaisut viikolle 48
Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin
LisätiedotKirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.
Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta. Sisäänkirjauduttuasi näet palvelun etusivulla helppokäyttöisen hallintapaneelin. Vasemmassa reunassa on esillä viimeisimmät tehdyt muutokset
LisätiedotKuukauden kuvat kerhon galleriaan 1.4.2016 lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:
Kuukauden kuvat kerhon galleriaan 1.4.2016 lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen: http://www.kamera73.fi/kuukaudenkuvaaja Kukin seuran jäsen voi laittaa
LisätiedotSivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä
Sivuston nopeus Mobiili 66 / 100 Nopeus Pitäisi korjata: Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä Sivullasi on 2 estävää ohjelmaresurssia ja 2 estävää CSS-resurssia. Tämä viivästyttää
LisätiedotLisätehtävät. Frantic 2015 sivu 1 www.frantic.com
Lisätehtävät Frantic 2015 sivu 1 www.frantic.com Fontit - Google fonts Fonttien käyttäminen verkossa ilman uusien fonttien lataamista on melko rajattua, sillä koskaan ei voi tietää mitä fontteja vastaanottajan
Lisätiedotecome Markkinoiden kehittynein julkaisujärjestelmä
ecome Ecome Finland Oy Itämerenkatu 3 p. 020 7749 580 00180 Helsinki p. 020 7749 585 Suomi - Finland ecome@ecome.fi y. 2193874-3 www.ecome.fi Ecome-järjestelmä pähkinänkuoressa Ecome on suomalaisen yhtiön
LisätiedotTutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.
3 HTML ja XHTML Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
LisätiedotProjektisuunnitelma. Projektin tavoitteet
Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen
LisätiedotSivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä
Sivuston nopeus 66 / 100 Nopeus Pitäisi korjata: Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä Sivullasi on 8 estävää ohjelmaresurssia ja 10 estävää CSS-resurssia. Tämä viivästyttää
LisätiedotSkype for Business pikaohje
Skype for Business pikaohje Sisällys KOKOUSKUTSU... 2 ENNEN ENSIMMÄISEN KOKOUKSEN ALKUA... 4 LIITTYMINEN KOKOUKSEEN SKYPE FOR BUSINEKSELLA... 5 LIITTYMINEN KOKOUKSEEN SELAIMEN KAUTTA... 6 LIITTYMINEN KOKOUKSEEN
LisätiedotUpdateIT 2010: Editorin käyttöohje
UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...
LisätiedotAsetusten avulla voit säätää tietokoneen suojaustasoja. Suojaustila ilmoittaa tietokoneen senhetkisen tietoturvan ja suojauksen tason.
Pikaopas ESET Cybersecurity suojaa tietokonetta haitalliselta koodilta huippuluokan ominaisuuksilla. Palkitussa NOD32-virustentorjuntajärjestelmässä ensimmäisen kerran esiteltyyn ThreatSense -tarkistusohjelmaan
LisätiedotLuento 12: XML ja metatieto
Luento 12: XML ja metatieto AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XML ja metatieto Metatieto rakenne sanasto Resource Description Framework graafikuvaus XML Semanttinen Web agentit 2 1 Metatieto
LisätiedotF-Secure KEY salasanojenhallintaohjelman käyttöönotto PC -laitteella
F-Secure KEY salasanojenhallintaohjelman käyttöönotto PC -laitteella 1 F-Secure KEY F-Secure KEY on palvelu, joka tallentaa turvallisesti kaikki henkilökohtaiset tunnistetiedot, kuten salasanat ja maksukorttitiedot,
LisätiedotOP-eTraderin käyttöopas
OP-eTraderin käyttöopas Tämä käyttöopas on lyhennetty versio virallisesta englanninkielisestä käyttöoppaasta, joka löytyy etrader - sovelluksen Help-valikosta tai painamalla sovelluksessa F1 -näppäintä.
LisätiedotOhjeita informaation saavutettavuuteen
Ohjeita informaation saavutettavuuteen Tarkoitus Kasvattaa tietoisuutta ja lisätä esteettömän informaation aiheen näkyvyyttä ja sen merkitystä elinikäisen tasapuolisen oppimisen mahdollisuuksista Tukea
LisätiedotTALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE
TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun
LisätiedotCTRL+F Android-sovellus
CTRL+F Android-sovellus Vili-Robert Hietala Opinnäytteen raportointi Sähköosasto Toukokuu 2015 KUVAILULEHTI 14.04.2015 Tekijä(t) Vili-Robert Hietala Työn laji Opinnäytteen raportointi Sivumäärä 7 Luottamuksellisuus
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat
Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
LisätiedotIT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT
IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.
Lisätiedot52 / 100 Nopeus. Sivuston nopeus. Pitäisi korjata: Hyödynnä selaimen välimuistia. Mobiili
Sivuston nopeus 52 / 100 Nopeus Pitäisi korjata: Hyödynnä selaimen välimuistia Asettamalla umpeutumispäivän tai enimmäisiän staattisten resurssien HTTP-header-osissa neuvot selainta lataamaan aiemmin ladatut
LisätiedotTIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?
Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää
LisätiedotIT ja viestintäteknologia
IT ja viestintäteknologia 206 Verkkosivujen tuottaminen Kuva: Skills Finland / Markku Heikkilä Lajivastaavat Miikka Merikanto 1 / 12 Suomen Liikemiesten Kauppaopisto miikka.merikanto(at)businesscollege.fi
LisätiedotDatanhaku www-käyttöliittymästä Mikko Parviainen, Ilmatieteen laitos / tietojärjestelmät mikko.parviainen@fmi.fi
Helsinki Testbed tutkijankäyttöliittymä Datanhaku www-käyttöliittymästä Mikko Parviainen, Ilmatieteen laitos / tietojärjestelmät mikko.parviainen@fmi.fi 7.4.2006 Taustaa Helsinki Testbed on Ilmatieteen
LisätiedotNÄYTÖN JAKAMINEN OPPILAILLE, JOTKA MUODOSTAVAT YHTEYDEN SELAIMELLA TAI NETOP VISION STUDENT -SOVELLUKSELLA
NÄYTÖN JAKAMINEN OPPILAILLE, JOTKA MUODOSTAVAT YHTEYDEN SELAIMELLA TAI NETOP VISION STUDENT -SOVELLUKSELLA Vision-ohjelmistoa käyttävät opettajat voivat nyt muodostaa luokan, jossa on yhdistelmä Windows-pohjaisia
LisätiedotSivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä
Sivuston nopeus 66 / 100 Nopeus Pitäisi korjata: Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä Sivullasi on 2 estävää ohjelmaresurssia ja 1 estävää CSS-resurssia. Tämä viivästyttää
LisätiedotEMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03.
EMVHost Online SUBJECT: COMPANY: COMMENTS: AUTHOR: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT NETS OY EMVHost Online Client sovelluksen käyttöohje NETS OY DATE: 15.03.2011 VERSION: 1.0 1 SISÄLLYS SISÄLLYS...
LisätiedotVoodoo Dragon. Voodoo Dragon. Käyttäjän opas. Versio 1.0
Voodoo Dragon Käyttäjän opas Versio 1.0 Tekijänoikeus Tätä käsikirjaa ei saa miltään osin kopioida tai luovuttaa missään muodossa tai millään tavalla: sähköisesti, mekaanisesti, valokopiona tai äänitteenä
LisätiedotEsimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit
Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.
LisätiedotASENNUS- JA KÄYTTÖOHJE
ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO
LisätiedotAdobe Photoshop Album Starter Edition 3.0
Adobe Photoshop Album Starter Edition 3.0 EI TAKUUTA Laitteen mukana tulevien kolmansien osapuolten sovellusten valmistajat ja omistajat voivat olla henkilöitä tai yhteisöjä, jotka eivät liity Nokiaan.
LisätiedotYhteisöllinen tapa työskennellä
Yhteisöllinen tapa työskennellä Pilvipalvelu mahdollistaa uudenlaisten työtapojen täysipainoisen hyödyntämisen yrityksissä Digitalisoituminen ei ainoastaan muuta tapaamme työskennellä. Se muuttaa meitä
LisätiedotTermBase NET versio 1.0.1. (Beta)
TermBase NET versio 1.0.1. (Beta) Sulautettu sanasto- ja termikanta OHJEET TÄRKEÄÄ: Copyright M. Tuittu, 2005 Kaikki oikeudet pidätetään. TermBase NET on toteutettu java -tekniikalla. Java and all Java-based
LisätiedotVoodoo Dragon 2. Voodoo Dragon 2. Käyttöohje. Versio 1.0
Voodoo Dragon 2 Käyttöohje Versio 1.0 Tekijänoikeus Tätä käsikirjaa ei saa miltään osin kopioida tai luovuttaa missään muodossa tai millään tavalla: sähköisesti, mekaanisesti, valokopiona tai äänitteenä
LisätiedotOma kartta Google Maps -palveluun
TAMPERE 1 (6) Oma kartta Google Maps -palveluun Google Maps palveluun on mahdollista luoda karttoja omilla paikkamerkeillä. Tilin luonti Google-palveluihin Tehdäksesi karttoja omilla paikkamerkinnöillä,
LisätiedotSivuston nopeus. Sivullasi on 2 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.
Sivuston nopeus Mobiili 56 / 100 Nopeus Pitäisi korjata: Älä käytä aloitussivun uudelleenohjauksia Sivullasi on 2 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista. Vältä aloitussivun
LisätiedotPIKAOPAS NOKIA PC SUITE 4.51a NOKIA 6510 -PUHELIMELLE
PIKAOPAS NOKIA PC SUITE 4.51a NOKIA 6510 -PUHELIMELLE Copyright Nokia Oyj 2002. Kaikki oikeudet pidätetään. Sisällysluettelo 1. JOHDANTO...1 2. JÄRJESTELMÄVAATIMUKSET...1 3. PC SUITE -OHJELMISTON ASENTAMINEN...2
LisätiedotKäytettäväksi QR-koodin lukulaitteen/lukijan kanssa yhteensopivien sovellusten kanssa
Xerox QR Code -sovellus Pika-aloitusopas 702P03999 Käytettäväksi QR-koodin lukulaitteen/lukijan kanssa yhteensopivien sovellusten kanssa Käytä QR (Quick Response) Code -sovellusta seuraavien sovellusten
LisätiedotDigi-tv vastaanottimella toteutetut interaktiiviset sovellukset
Toiminnallinen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Versio Päiväys Tekijä Kuvaus 0.01 7.11.01 Pekka Koskinen Alustava sisällysluettelo 0.1 12.11.01 Pekka
LisätiedotUutiskirjesovelluksen käyttöohje
Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...
LisätiedotKäyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä
www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite
LisätiedotXML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.
XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus
LisätiedotPIKAOPAS MODEM SETUP
PIKAOPAS MODEM SETUP Copyright Nokia Oyj 2003. Kaikki oikeudet pidätetään. Sisällysluettelo 1. JOHDANTO...1 2. MODEM SETUP FOR NOKIA 6310i -OHJELMAN ASENTAMINEN...1 3. PUHELIMEN VALITSEMINEN MODEEMIKSI...2
LisätiedotHarjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)
Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript) Kurssin toisessa harjoitustyössä tutustutaan verkkosivujen toiminnallisuuden toteuttamiseen JavaScript:n avulla. Lisäksi käydään läpi verkkosivuston
LisätiedotIntegrointi. Ohjelmistotekniikka kevät 2003
Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri
LisätiedotRaporttiarkiston (RATKI) käyttöohjeet Ohjeet
Raporttiarkiston (RATKI) käyttöohjeet Ohjeet 15.11.2012 1.0 Vastuutaho TRAFI Sisällys Raporttiarkiston (RATKI) käyttöohjeet 1 1. Johdanto 3 1.1. Esitiedot 3 1.2. Käyttöoikeudet 3 1.3. Sisäänkirjautuminen
LisätiedotOhjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
LisätiedotSivuston nopeus. Tiivistämällä resursseja gzip- tai deflate-koodilla voit vähentää verkon kautta lähetettävien tavujen määrää.
Sivuston nopeus Mobiili 42 / 100 Nopeus Pitäisi korjata: Ota pakkaus käyttöön Tiivistämällä resursseja gzip- tai deflate-koodilla voit vähentää verkon kautta lähetettävien tavujen määrää. Pienennä seuraavien
LisätiedotVisma Fivaldi. Ohjeet Java web startin ja HTML5-työkalun aktivointiin
Visma Fivaldi Ohjeet Java web startin ja HTML5-työkalun aktivointiin Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri
LisätiedotSivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä
Sivuston nopeus Mobiili 54 / 100 Nopeus Pitäisi korjata: Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä Sivullasi on 8 estävää ohjelmaresurssia ja 9 estävää CSS-resurssia. Tämä viivästyttää
LisätiedotOnline-kurssien pikaopas Adobe Connect -yhteyden käyttämiseen
Online-kurssien pikaopas Adobe Connect -yhteyden käyttämiseen Laitteisto ja ohjelmat Sovelton Online-kurssit käyttävät alustanaan Adobe Connect -ympäristöä. Asiakasohjelmaksi riittää pelkkä www-selain
Lisätiedot