10 Pieni datalähtöinen sovellusesimerkki

Koko: px
Aloita esitys sivulta:

Download "10 Pieni datalähtöinen sovellusesimerkki"

Transkriptio

1 Pieni datalähtöinen sovellusesimerkki 10 Pieni datalähtöinen sovellusesimerkki XSL mahdollistaa erilaisten XML:ää tukevien välineiden hyödyntämisen osana omia sovelluksia. Julkaisutoiminnan näkökulmasta mielenkiintoisia (ja opiskelun kannalta havainnollisia) ovat tekstiä formatoivien sovellusten ohella myös datalähtöiset (graafiset) sovellukset. 196

2 Pieni datalähtöinen sovellusesimerkki 10.1 Välisoitto Datalähtöiset sovellukset tarjoavat houkuttelevan tavan myös ns. mashuppien tekemiseen Luvassa on kuitenkin myös haasteita (onko tieto luotettavaa? luettavissa? mitä tehtäisiin? mitä saa tehdä? tietoturva? evoluutio?) Ongelmakenttään pureutuu esim. ns. Semanttinen Web - teknologiaperhe ("avaa datasi kohderyhmällesi semanttisloogisen kuvailun keinoin"); tähän aihepiiriin palataan jatkokurssilla 197

3 Pieni datalähtöinen sovellusesimerkki 10.2 Sovellusesimerkki: esitysgrafiikkaa Halutaan tuottaa piirakkakuvioita, pylväsdiagrammeja yms. esitysgrafiikkaa Esimerkeissä tarkastellaan music-tietoja kappaleiden pituuksilla täydennettynä <music>... <tracks> <track len="3m59s">down to the waterline</track> <track len="5m22s">water of love</track> <track len="3m19s">setting me up</track> <track len="4m09s">six blade knife</track>... Miten toteutettaisiin ts. mikä on mahdollista, mitä osataan ja mikä taloudellista/ järkevää? (Seuraavassa tarkastellaan vain eräitä vaihtoehtoja) 198

4 Pieni datalähtöinen sovellusesimerkki 10.3 Toteutusvaihtoehtoja Halutaan esittää albumin kappaletieto graafisesti esim. piirakkadiagrammina Kokeillaan eri toteutusvaihtoehtoja 1. Piirretään kaavio käsin 2. Kuvataan tieto toimistosovellukseen CSV-muodossa ja formatoidaan kuvaksi 3. Toteutetaan kuva sopivalla ohjelmakirjastolla (nyt minimalistinen Perl) 4. Kuvataan tieto suoraan sopivaan vektorigrafiikkaformaattiin (nyt minimalistinen SVG) Kuhunkin vaihtoehtoon liittyy hyviä ja huonoja puolia tarkastelemme näitä seuraavaksi 199

5 Pieni datalähtöinen sovellusesimerkki 10.4 Sovellusesimerkin toteutustapa #1: kuva käsityönä Poimitaan data käsin, valitaan sopiva työkalu ja piirretään "Hyvää": - kuvan ulkoasu on täysin päätettävissä, kaikki suunnittelijan/ piirtäjän/työkalun osaaminen/luovuus/ominaisuudet hyödynnettävissä - formaatti periaatteessa vapaasti valittavissa (ohjelmatuen rajoissa) - sopii myös mekaanisesti tuotetun kuvan jälkikäsittelyyn (leikkaa/liimaa) "Huonoa": - pahimmillaan hyvin hidasta/kallista, toistettavuus huono - piirtäminen virhealtista ja vaikeaa, lipsahduksia sattuu Huom. Jos kyse on kuitenkin kertaluonteisesta tehtävästä ja esitettävää dataa on "vähän", tämä voi kuitenkin olla järkevin ratkaisu (!) Jos työkalu sopiva, käsin piirretty kuva voidaan melko helposti tuoda mekaanisen jatkokäsittelyn piiriin (mediaobjektina); vrt. OpenOffice & XML 200

6 Pieni datalähtöinen sovellusesimerkki 10.5 Sovellusesimerkin toteutustapa #2: toimistosovellus Kuvataan tieto esim. toimistosovelluksen taulukkolaskentaohjelmaan Tarkastellaan seuraavaksi helppouden/yleisyyden vuoksi CSV-formaattia Esim. MS Excel hyväksyy seuraavat tiedot 3, ; Down to the waterline 5, ; Water of love 3, ; Setting me up 4,15; Six blade knife 2,95; Southbound again 5, ; Sultans of swing 6, ; In the gallery 4,7; Wild west end 4,9; Lions Toteutus: m2csv.xsl Jatkokäsittely on helppoa ja monipuolista!...mutta käsityötä music.xml XSLT-pros. data.csv MS Excel... m2csv.xsl 201

7 Pieni datalähtöinen sovellusesimerkki 10.6 Toteutustapa #3: ohjelmoitu sovellus Ohjelmallinen käsittely on perusedellytys käsityön poistamiselle (mutta molemmissa lähtökohdissa on omat hyvät ja huonot puolensa) Yleiskäyttöisiä grafiikkakirjastoja erilaisten kuvioiden piirtelyyn on kehitetty useille eri sovelluskehittimille ja ohjelmointikielille (ja helppo tehdä lisää...) Tarkastellaan seuraavassa Perl-kielistä toteutusta moduuliin Gd::Graph nojautuen (ks. Perl on hyvä, monipuolinen ja hyvin tiivis ohjelmointikieli joka jättää osaavan ohjelmoijan päätettäväksi suuren osan esim. ohjelmointityyliin liittyvistä asioista... Toteutus: pie.pl data.csv Perl-tulkki out.png... pie.pl 202

8 Pieni datalähtöinen sovellusesimerkki 10.7 Tiiviihkö Perl-ohjelma... use GD::Graph::pie; # Simppeli CSV-parseri: open(in, "data.csv"); while ($line = <IN>) { = split(";", $line); $arr[0] =~ s/,/\./; # korvataan pilkku pisteellä $data[0][$i] = $arr[1]; $data[1][$i++] = $arr[0]+0; # type-cast luvuksi ;) } close IN; # Kuvan teko: my $g = new GD::Graph::pie(300,300); $g->set(start_angle=>90, '3d'=>0); $g->plot(\@data); # Kuvan tulostus PNG-formaatissa: open(out, ">out.png"); binmode(out); print OUT $g->gd->png; close OUT; 203

9 Pieni datalähtöinen sovellusesimerkki 10.8 Toteutustapa #4: natiivi XML-sovellus Kun XML:stä puhutaan, "luonteva" vaihtoehto on tietenkin rakentaa graafinen sovellus XML-perheen SVG-tekstiformaattiin nojautuen (ks. seuraava SVG-esittely ) Esimerkkiä on nyt hieman yksinkertaistettu jottei SVG:stä tulisi kovin monimutkaista - pylväitä piirakan sijaan (...jottei juuri laskutoimituksia [max!]; helppo toteuttaa 1- vaiheisena muunnoksena) - skaalaus kiinteä (mutta osa kuvapinnasta saattaa jäädä [aluksi] esitettävän näytön ulkopuolelle) Toteutus: m2svg-v2.xsl music.xml XSLT-pros. out.svg m2svg.xsl 204

10 Pieni datalähtöinen sovellusesimerkki 10.9 Taustaa: Scalable Vector Graphics (SVG) hyvin lyhyesti SVG on XHTML:n tavoin modularisoitu XML-tekstiformaatti (1.0, 1.1, Basic, Tiny) joka tarjoaa keinon määritellä vektorigraafisia ja koostettuja kuvia Perusidea lyhyesti - svg-elementti määrittelee ikkunan (viewport) piirtopinnalle (canvas) - piirtopinnalle asemoidaan tekstistä, viivoista, viivoista koostuvista kuvioista ja rasterikuvista erilaisia objekteja (tasoittain ryhmiteltynä) - tekstillä, viivoilla ja kuvioilla on runsaasti erilaisia attribuutteja (vrt. style) - tekstiä, viivoja, yms. voidaan muuntaa geometrisesti ja piirtää suhteessa toisiin objekteihin - kuvioista voidaan määritellä myös esim. maskeja ja filttereitä (viittausrakenteina) ja kuvioit voivat sisältää myös animaatioita 205

11 Pieni datalähtöinen sovellusesimerkki Esimerkkejä SVG-grafiikasta (1/2) 206

12 Pieni datalähtöinen sovellusesimerkki Esimerkkejä SVG-grafiikasta (2/2) 207

13 Pieni datalähtöinen sovellusesimerkki SVG-dokumentin rakenne SVG-dokumentti on kuten XHTMLdokumentti, mutta XHTML-sanaston ja hypertekstin yms. sijaan puhuu SVG-sanaston avulla vektorigrafiikasta <?xml version="1.0" encoding="iso " standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" " <svg width="12cm" height="4cm" viewbox=" " xmlns=" version="1.1"> <ellipse cx="600" cy="200" rx="550" ry="175" fill="yellow" stroke="blue" stroke-width="20"/> <rect x="1" y="1" width="1198" height="398" fill="none" stroke="blue" stroke-width="2" /> <polygon fill="red" stroke="blue" stroke-width="10" points="350,75 379, , , , , , , , ,161" /> <polygon fill="lime" stroke="blue" stroke-width="10" points="850,75 958, , , , ,137.5" /> <text x="470" y="240" font-size="70">tekstiä</text> </svg> 208

14 Pieni datalähtöinen sovellusesimerkki Välivaiheita sisältävä prosessointi Koska XSLT (1) ei osaa muuntaa tulospuita, toteutuksissa päädytään usein 2-vaiheiseen prosessointiin "yhden" muunnosaskeleen sisällä - hankalat tietorakenteen "avataan tai normalisoidaan" -...tuloksena käsittelyputkia Käytännössä XML-sovellusohjelmoinnin helppous mahdollistaa kriittisten välivaiheiden toteuttamisen myös lausekielisenä...xslt 2 (vrt. xslt-esim/xslt2-music-site) music.xml XSLT-pros. tmp.xml XSLT-pros. tmp.svg m2tmp.xsl tmp2svg.xsl 209

15 Pieni datalähtöinen sovellusesimerkki Putkilinjaston idea Putkilinjastossa (pipeline) prosessointi jaetaan erityyppisiin käsittelyaskeliin (step), esim. - lukija - muunnin (yhdistäjä, filtteri, ehto, ) - tulostaja Putkilinjasto voi tehdä "mitä tahansa"; keskeinen rajoite on silmukoiden kieltäminen (ts. putki ei saisi edes epäsuoraan lukea omaa tulostettaan) Askel voi koostua aliputkilinjastosta jne. XML-putkissa askeleissa liikkuva tieto on tietenkin (pääosin) XML-muotoista, Tekniikoita: Cocoon, Ant, XProc, ' ' -operaattori, ; ks. esim. (Kuva: W3C 2007) 210

16 Pieni datalähtöinen sovellusesimerkki Huomautuksia (1/2) Toteutustapa #4 mahdollistaa toteutustavan #3 ohjelmoimisen esim. XSLT-prosessin muodossa (vrt. kaaviokuva ohessa) music.xml Käytännössä tämä tarkoittaa sitä että XSLTtekniikan avulla toteutettuja prosesseja voi abstrahoida "kapseloimalla" usein toistuvia tehtäviä "aliohjelmien" tavoin - so. määritellään dokumenttityyppi graphdata johon kerätään esitysgrafiikkaan liittyvä data määrämuotoisena ja toteutetaan vastaava (yleiskäyttöinen) XSLT-sovellus MakePie tms. Kätevää! (Vai onko?) XSLT-pros. graph-data.xml MakePie (XSLTpros. + g2p.xsl) out.svg...? m2gd.xsl pieconfig.xml 211

17 Pieni datalähtöinen sovellusesimerkki Huomautuksia (2/2) Periaatteessa kelpo toimistosovellus tai kuvankäsittelyohjelma voi osata lukea XML:ää sellaisenaankin (..jolle SVG on eräs grafiikkaformaatti) Käytännössä ei kuitenkaan ole taattua, että eri ohjelmien XML-formaatit noudattavat jotain standardia tekstiformaattia (esim. SVG), 2. on kelvollisesti dokumentoitu (julkisesti), tai 3. ovat pysyviä. Myös XSL-muunnosten rajat tulevat käytännössä melko nopeasti vastaan - ohjelmoinnin kömpelyytenä ja/tai - esim. funktioiden puutteena (XSLT1 ja max(x), XSLT2 ja sin(x)?) "oikea" XML-sovellusten ohjelmointi (prosessoriohjelmointi), - (muista kuitenkin miten helppoa on esim. muunnos XML CSV...) 212

18 11 Lyhyesti XML-sovellusohjelmoinnista Jos sopivaa XML-sovellusta ei löydy valmiina, voi sellaisen ohjelmoida itse. XML-sovellusohjelmointi ei oleellisesti poikkea "muusta sovellusohjelmoinnista"; kyse on vain tiettyjen annettujen rajapintojen (yl. SAX/ DOM-variantteja) parissa tapahtuvasta työskentelystä. Tässä yhteydessä tarkastelemme asiaa varsin pintapuolisesti. Kuten ohjelmoinnissa yleensä, myös XML-sovelluksen ohjelmoinnin helppous tai vaikeus riippuu lähinnä sovelluksesta (reunaehdot ja riippuvuudet). 213

19 11.1 XML-sovellusohjelmoinnin arkkitapaukset Kaikki sovellukset on joku tietenkin ohjelmoinut XMLsovellusohjelmoinnin avulla voidaan siis "tehdä mitä tahansa" Käytännössä pihvi käy ilmi tyypillisistä käyttötapauksista: 1. halutaan lukea tietyn tekstiformaatin mukainen XML-dokumentti ja kansoittaa sen sisältämien tietojen avulla oman ohjelman tietorakenne 2. halutaan toteuttaa oma (standardinmukainen) käsittelijä esim. XSLTprosessoriin, Cocooniin, tms. 3. halutaan hyödyntää jonkun toisen tekemää XML-ohjelmaa/sovellusta 4. halutaan tuottaa XML-dokumentteja ohjelmallisesti (!) On tietenkin melko hankalaa esim. kirjoittaa uusi verkkoselain tai hyvä XMLeditori (tyhjästä) sovellusten pulmat eivät siis usein liity XML:ään sinänsä 214

20 11.2 Pari sanaa suunnittelumalleista Suunnittelumalli (design pattern) on ohjelmistosuunnittelun menetelmällinen työväline jonka avulla pyritään ratkomaan usein toistuvia ohjelmointitehtäviä hyväksi havaittujen (abstraktien) ratkaisumallien avulla - esim. delegation, interface, factory, filter, treewalker - esim. m2csv.xsl voidaan tulkita adapter-suunnittelumallin mukaan XML-ohjelmoinnissa esim. (1) event listener ja (2) iterator - 1: Olio R lukee tietovirtaa. Olio EL rekisteröityy kuuntelijaksi (kiinnostunut tapahtumista a ja b). Kun A havaitsee tapahtuman a tai b, se välittää tiedon rekisteröityneille kuuntelijoille (myös EL:lle). - 2: Olio IT käy tietorakenteen (esim. lista) T läpi sopivassa järjestyksessä. IT:tä käyttävä sovellus voi läpikäydä T:n ilman sen sisäistä tuntemusta. Periaatteessa jopa itse XML-prosessori voidaan tulkita suunnittelumalliksi 215

21 11.3 XML-sovellusohjelmoinnin "kaksi tasoa" (1/2) "Matalan tason" ohjelmointi lähtee liikkeelle XML-dokumenteista tietorakenteina: ohjelmointia tavallisilla C/C++/Java/... -kehitysvälineillä 1. Tapahtumapohjainen ohjelmointi (SAX-rajapinta [Simple API for XML]) 2. DOM-pohjainen ohjelmointi (DOM-rajapinta [Document Object Model]) xml-dok. XML-prosessori (non-validating/ validating/ns/no-ns) SAX DOM Sovellus 1 Sovellus

22 11.4 XML-sovellusohjelmoinnin "kaksi tasoa" (2/2) "Korkeamman tason" sovelluskehitys hyödyntää standardisovelluksia (?- prosessorit,?-komponentit) - sovelluksen kuvaaminen prosessorin/komponentin avulla tai sen syötteenä/vasteena (esim. XQuery, XSLT, Web Services,...; kyselyt/filtterit/ muunnokset/viestit/...) "Tasot" eivät tietenkään ole poissulkevia (vrt. juuri XSLT & SAXohjelmointi) 217

23 11.5 XML-sovellusohjelmoinnista (1/2): Välineet Leijonaosa XML-sovelluksista kirjoitetaan Java-kielellä (vrt. kurssikirjan esimerkit) Muita yleisesti käytettäviä välineitä ovat esim. C/C++, Python, Perl, PHP,... Huomaa että esim. ohjelmointikieli ja kehitysympäristö (resurssienhallinta, työtila, editorit, yms.) voidaan yleensä vaihtaa toisistaan riippumatta XML-ohjelmointi eri ohjelmointikielillä on perusidealtaan samanlaista, mutta välinekohtaiset toteutukset (ja lisät) tuovat työhön omia erityispiirteitään - Esim. Java/C++: Xerces, Perl: XML::Parser, Python: xml.* - eri toteutusten taustalta löytyy usein samoja (alun perin C-kielellä kirjoitettuja) jäsentimiä 218

24 11.6 XML-sovellusohjelmoinnista (2/2): Suunnittelu XML-sovelluskehityksen taustalla on (jo nimensä mukaisesti) sisäänrakennettu kytkös XMLteknologiaperheen ja välineiden kanssa (XML-sovellus)ohjelmoinnissa voidaan nähdä kaksi keskeistä sovelluskenttää (vrt. käyttötapaukset): - prosessorimaiset sovellukset (esim. tuotetietojen koostaminen osana putkilinjastoa) - reaktiiviset sovellukset (esim. interaktiivinen, käyttöliittymätapahtumiin reagoiva XHTML- tai SVG-sovellus, taustalla erillinen sovelluslogiikka) Web-taustastaan huolimatta XML-tekniikka ei vaadi sovelluksilta esim. Internet-yhteyttä. Kaikki välineet eivät myöskään ole ilmaisia (!) Integroitujen Web-sovellusten näkökulma tarjoaa runsaasti mahdollisuuksia kehittäjälle; samalla sovellusten näkökulma tyypillisesti kasvaa yrityksen ja yksilön tasolta organisaation tai yhteisön tasolle 219

25 11.7 SAX: Simple API for XML SAX (1/2) on tapahtumapohjainen rajapinta XML-dokumenttien käsittelyyn <?xml version="1.0" encoding="iso "?> <muistio pvm=" "> <luokitus>hpn-projekti</luokitus> <otsikko>uusi tilaus tulossa?</otsikko> <kirjoittaja>teuvo Oinas</kirjoittaja> <asia> Brasilian tehdas on pyytänyt arvion Soijakattilan uusimisen kustannuksista. <!-- Sirpa korjasi kirjoitusvirheet > </asia> </muistio> - lähdedokumentin loogiset osat nähdään siinä järjestyksessä kun ne tulevat dokumenttia luettaessa vastaan (v1 ei osaa tallettaa tiedostoja, eikä ymmärrä nimiavaruuksia) SAX-pohjaisen XMLohjelman idea ~ startdocument() startelement("muistio") startelement("luokitus") characters("hpnprojekti") endelement("luokitus") startelement("otsikko")... endelement("muistio") enddocument() 220

26 11.8 SAX-ohjelmoinnin tyypillisiä käyttötapauksia Tyypillinen motiivi - ohjelman nopea suoritus ja pieni koko (myös muistinkulutuksen osalta) - käsittelijöiden kirjoittamisen helppous ("suurin pulma on etsiä dokumentaatiosta miten oma SAX-käsittelijä rekisteröidään") Esimerkkejä - Halutaan lukea XML-dokumentin tietoja konfiguraatiotiedostojen hengessä - Halutaan kirjoittaa SAX-käsittelijä johonkin XML-prosessoriin (esim. laajennuksena SAX-käsittelijä XSL-muuntimeen) Hankaluuksia: - vähääkään monimutkaisempi sovellus edellyttää oman (...puumaisen?) tietorakenteen rakentamista (tai assosiatiivisia taulukoita ) Tarkastellaan seuraavassa havainnollisuuden vuoksi XML-sovelluksen kirjoittamista aluksi Perl-kielellä, XML::Parser-moduulin nojautuen 221

27 11.9 Yksinkertaista XML-sovellusohjelmointia Perlillä Perl (Practical Expression Report Language) on erittäin suosittu (tulkattava) ohjelmointikieli (suosittu "skriptikieli") joka soveltuu hyvin esim. *nixtyyppisten käsittelijöiden toteuttamiseen - useita versioita - hyvä ja dokumentoitu pakettikirjasto, moduulit - dynaaminen tyypitys, nopea (käännös tavukoodiksi ennen suoritusta) - olio-ohjelmoinnin piirteet (niin haluttaessa...) Perlin "erikoisuus" on mahdollisuus kirjoittaa hyvin tiivistä syntaksia (=rivimäärässä lyhyitä mutta monipuolisia ohjelmia) sekä säännönmukaisten lausekkeiden (regular expression) vahva rooli sovelluksissa Perl-ohjelmoinnin vahvuus (ja heikkous) on dynaamisten tietorakenteiden avulla (skalaarit, taulukot ja listat, assosiatiiviset taulukot) helposti ja nopeasti toteutettavat tietorakenteet (yms. quick and dirty -ohjelmoinnin riskit) 222

28 11.10 Pieni tapahtumaohjattu XML-käsittelijä (Perl) Huomaa dokumentin lukujärjestykseen sidottu käsittely (kirjanpito!) use XML::Parser; $parser = new XML::Parser( Handlers => { Start => \&element_start, End => \&element_end, Char => \&characters}); $in_right_album = $in_right_name, $name=""; sub element_start { my ($xp, $element, %attr) if ($element eq "album" && $attr{id} eq "ds") { $in_right_album = 1; } if ($element eq "track" && $in_right_album==1) { $v = $attr{len}; $v =~ s/m/\./; $v =~ s/s//; push(@lens, $v+0); } if ($element eq "name" && $in_right_album==1) { $in_right_name = 1; 223

29 } } sub element_end { my ($xp, $element) if ($element eq "album" && $in_right_album==1) { $in_right_album = 0; } if ($element eq "name" && $in_right_name==1) { $in_right_name = 0; } } sub characters { my ($xp, $text) if ($in_right_name==1) { $name.= $text; } } $parser->parsefile('music.xml'); print "$name \n"; foreach my $k (@lens) { print "$k "; } 224

30 11.11 DOM: Document Object Model DOM (1/2/3) on objektipohjainen rajapinta XML-dokumenttien käsittelyyn - dokumentti jäsennetään ensin objektipuuksi, jossa voidaan liikkua solmusta toiseen kyselyjen ja iteraattoreiden avulla - vapaa liikkuminen puurakenteessa (monimutkaisuus ja muistinkulutus) DOM-pohjaisen XML-ohjelman idea ~ <luokitus> <otsikko> HPN-pro... Uusi while( (child=iterator.nextnode())!=null) { } process(child); <kirjoittaja <asia> Teuvo O... Brasilian..... Element liiteelement = doc.createelement("liite"); inode.appendchild(liiteelement);

31 11.12 Yksinkertaista XML-sovellusohjelmointia Pythonilla Python (nimi tulee Monty Pythonista...) on korkean tason ohjelmointikieli - useita versioita - hyvä ja dokumentoitu pakettikirjasto, moduulit - dynaaminen tyypitys, melko nopea (oletusarvoisesti tulkattava) - todella selkeä oliokieli, helppo kehittää myös olio-ohjelmia iteratiivisesti - suosio vahvassa kasvussa Python "erikoisuuksia" ovat syntaksi (pakotettu ohjelmakoodin sisennys) ja esim. tehokas listojen käsittely (esim. taulu[:1]) Python-ohjelmoinnin vahvuus on olio-ohjelmoinnin ja skriptikielen "hyvien piirteiden" onnistunut yhdistäminen, keskeisin heikkous lienee hitaiden ohjelmien kirjoittamisen helppous (koska paljon korkean tason välineitä on käytössä jo itse kielen tasolla) 226

32 11.13 Pieni DOM-pohjainen sovellus (Python) import xml.dom; # Lask. kpl pituudet yhteen ja lisätään from xml.dom.minidom import Node, Attr from fpformat import fix; doc = xml.dom.minidom.parse("music.xml"); nodes = doc.getelementsbytagname("album"); # Taas karseita olettamuksia kappaletietojen formaatin suhteen...(mitä?) for k in range(len(nodes)): total = 0 for node in nodes[k].getelementsbytagname("track"): tlen = node.getattribute("len"); if len(tlen)<1: continue; # lasketaan levyn pituus sekunteina total = total + float(tlen[:1])*60 + float(tlen[2:4]); total = fix(total/60,0) + "M" + fix(total-float(fix(total/60,0))*60,0) + "S"; nodes[k].setattribute("total",total); print doc.toxml(); doc.unlink(); 227

33 11.14 Yksinkertaista XML-sovellusohjelmointia Javalla Java on korkean tason ohjelmointikieli - useita versioita - hyvä ja dokumentoitu pakettikirjasto, "kaikki löytyy", runsas välinetuki - suoritus erillisen Java-koneen avulla (tavukoodi), "alustariippumaton" - selkeä ja monipuolinen mutta melko jäykkä oliokieli, kehitystyö vaatii usein eksplisiittisen määrittelyvaiheen - erittäin tunnettu, suosittu, "kaikki käyttävät", kritisoidaan yleensä raskaudesta (kun esim. käytetään skriptityyppisiin sovelluksiin) Varsin värikäs historia (mm. JavaStationeista kännyköihin), Java-koneita toteutettu kaikenlaisiin laitteisiin, taipuu suuriinkin projekteihin Javan "erikoisuus" on koodin pakottaminen luokkien mukaisiin tiedostoihin, sovellukset koostuvat usein suuresta joukosta tiedostoja 228

34 11.15 Sovellusohjelmointia Javalla a la Eclipse Monimutkaiset XMLsovellukset kirjoitetaan usein Javalla (tai C++:lla, tms.) Java-ohjelmointi sujuu mukavimmin sopivan kehitysympäristön avulla Tarkastellaan seuraavassa triviaalin XML-lukijan toteuttamista Eclipsessä, Xerces-parseriin perustuen 229

35 11.16 DOM2 pähkinänkuoressa (1/4): Node-rajapinta DOM-jäsennyspuun tunnistamat solmutyypit (*_NODE) ovat - ELEMENT, ATTRIBUTE, TEXT, CDATA_SECTION, ENTITY_REFERENCE, ENTITY, PROCESSING_INSTRUCTION, COMMENT, DOCUMENT, DOCUMENT_TYPE, DOCUMENT_FRAGMENT ja NOTATION DOM määrittelee oleellisesti joukon rajapintoja erityyppisten solmujen käsittelyyn. Perusrajapinta on Node (vrt. DOM 2 Core) interface Node { // NodeType (nyt tunnistenimien määrittely [ks. yllä] leikattu pois)... readonly attribute DOMString nodename; attribute DOMString nodevalue; // raises(domexception) on setting // raises(domexception) on retrieval 230

36 readonly attribute unsigned short nodetype; readonly attribute Node parentnode; readonly attribute NodeList childnodes; readonly attribute Node firstchild; readonly attribute Node lastchild; readonly attribute Node previoussibling; readonly attribute Node nextsibling; readonly attribute NamedNodeMap attributes; // Modified in DOM Level 2: readonly attribute Document ownerdocument; Node insertbefore(in Node newchild, in Node refchild) raises(domexception); Node replacechild(in Node newchild, in Node oldchild) raises(domexception); Node removechild(in Node oldchild) raises(domexception); Node appendchild(in Node newchild) raises(domexception); boolean haschildnodes(); Node clonenode(in boolean deep); 231

37 // Modified in DOM Level 2: void normalize(); // Introduced in DOM Level 2: boolean issupported(in DOMString feature, in DOMString version); // Introduced in DOM Level 2: readonly attribute DOMString namespaceuri; // Introduced in DOM Level 2: attribute DOMString prefix; // raises(domexception) on setting // Introduced in DOM Level 2: readonly attribute DOMString localname; // Introduced in DOM Level 2: boolean hasattributes(); }; 232

38 11.17 DOM2 pähkinänkuoressa (2/4): Document-rajapinta Kullekin solmutyypille on lisäksi oma erikoistunut rajapintansa, näistä (yleensä) tärkeimmät ovat Document (ks. alla) ja Element interface Document : Node { readonly attribute DocumentType doctype; readonly attribute DOMImplementation implementation; readonly attribute Element documentelement; Element createelement(in DOMString tagname) raises(domexception); DocumentFragment createdocumentfragment(); Text createtextnode(in DOMString data); Comment createcomment(in DOMString data); CDATASection createcdatasection(in DOMString data) raises(domexception); ProcessingInstruction createprocessinginstruction(in DOMString target, in DOMString data) raises(domexception); Attr createattribute(in DOMString name) raises(domexception); 233

39 EntityReference createentityreference(in DOMString name) raises(domexception); NodeList getelementsbytagname(in DOMString tagname); // Introduced in DOM Level 2: Node importnode(in Node importednode, in boolean deep) raises(domexception); // Introduced in DOM Level 2: Element createelementns(in DOMString namespaceuri, in DOMString qualifiedname) raises(domexception); // Introduced in DOM Level 2: Attr createattributens(in DOMString namespaceuri, in DOMString qualifiedname) raises(domexception); // Introduced in DOM Level 2: NodeList getelementsbytagnamens(in DOMString namespaceuri, in DOMString localname); // Introduced in DOM Level 2: Element getelementbyid(in DOMString elementid); }; 234

40 11.18 DOM2 pähkinänkuoressa (3/4): Element-rajapinta interface Element : Node { readonly attribute DOMString tagname; DOMString getattribute(in DOMString name); void setattribute(in DOMString name, in DOMString value) raises(domexception); void removeattribute(in DOMString name) raises(domexception); Attr getattributenode(in DOMString name); Attr setattributenode(in Attr newattr) raises(domexception); Attr removeattributenode(in Attr oldattr) raises(domexception); NodeList getelementsbytagname(in DOMString name); // Introduced in DOM Level 2: DOMString getattributens(in DOMString namespaceuri, in DOMString localname); // Introduced in DOM Level 2: void setattributens(in DOMString namespaceuri, 235

41 in DOMString qualifiedname, in DOMString value) raises(domexception); // Introduced in DOM Level 2: void removeattributens(in DOMString namespaceuri, in DOMString localname) raises(domexception); // Introduced in DOM Level 2: Attr getattributenodens(in DOMString namespaceuri, in DOMString localname); // Introduced in DOM Level 2: Attr setattributenodens(in Attr newattr) raises(domexception); // Introduced in DOM Level 2: NodeList getelementsbytagnamens(in DOMString namespaceuri, in DOMString localname); // Introduced in DOM Level 2: boolean hasattribute(in DOMString name); // Introduced in DOM Level 2: boolean hasattributens(in DOMString namespaceuri, in DOMString localname); }; 236

42 11.19 DOM2 pähkinänkuoressa (4/4) Kuten SAX2:n tapauksessa, DOM2:n myötä DOM-rajapinta mahdollistaa nimiavaruuksien käsittelyn DOM 2 koostuu itse asiassa neljästä osasta: - (1) DOM Level 2 Core Specification - (2) DOM Level 2 Traversal and Range Specification - (3) DOM Level 2 Events Specification - (4) DOM Level 2 Style Specification -...joista (1) esiteltiin edellä, (2) sisältää kulkurajapintoja ja mahdollistaa DOM-puun manipuloinnin ns. valinnan (range) avulla, (3) luo pohjan esim. skripteihin nojautuvien selainten toteutukseen (vrt. XHTML+Ecmascript) ja (4) määrittele CSS2:n DOM-puun Myös DOM 3 on olemassa; yleensä DOM2 kuitenkin riittää (paitsi esim. näppäimistötapahtumien osalta) 237

43 11.20 XML-pohjaista skriptiohjelmointia? DOM kehitettiin alun perin esim. selaimissa esitettävien XML-dokumenttien skriptiohjelmoinnin tarpeisiin - DOM sisältää tätä varten GUIrajapintamäärittelyn (& XML Events) Skritpiohjelmointi mahdollistaa periaatteessa minkä tahansa selaimen läpi näkyvän (skriptejä tukevan) XML-sovelluksen ohjelmoinnin - esim. SVG-esitysten manipulointi Ecmascriptillä - yleisesti ottaen kesk. ongelma ovat eri selaintoteutusten eroavaisuudet (toteutusten puutteet ja versiointi) ja sekä esim. saavutettavuuspulmat XML-sovellusohjelmoinnin näkökulmasta (selaimen) läpi tapahtuva skriptiohjelmointi voi olla pulmallista (paitsi jos selain tms. katseluohjelma voidaan kiinnittää hyvin tarkasti, esim. plugin-tekniikoin) 238

44 11.21 XML, DOM ja ohjelmointi Esimerkkejä - SVG ja DOM-puun rakenne - yksinkertaista DOM-ohjelmointia (SVGfraktaaliesimerkki) - tapahtumankäsittelijöistä (DOM2 vs. DOM3) - yms. 239

45 11.22 Vielä XSLT-ohjelmoinnista: XSLT 2 XSLT 2:n myötä XSLT-kielen sovellusala on laajentunut siten, että prosessorisovellusten toteuttaminen onnistuu XSLT:n avulla entistä paremmin. Keskeisiä uusia piirteitä ovat mm.: - muunnos voi kohdistaa sääntöjä myös sisäisten, itse tuottamiensa (puu)tietorakenteiden käsittelyyn - muunnos voi tuottaa useita tulosdokumentteja - tietotyyppien käyttö on mahdollista mm. muuttujissa ja hahmoissa - käytössä on laaja funktiokirjasto, myös omien funktioiden määrittely on mahdollista - kieltä on rikastettu mm. ryhmittelyn, sarjallistuksen ja hahmonsovituksen hallinnan osalta - ks

46 11.23 XSLT2-esimerkki: "RSS Burger 0.1" +==============+ /===============================\ +========+ rss-config.xml ==> /========\ +====+ /=========\ => out.html +==============+ populate => tree => printhtml +========+ \========/ +====+ \=========/ +==>\===============================/=+ debug? +=============================+ +========+ /secondary input files (RSS)/ +==> tree.xml +=============================+ +========+ Figure 1: A conceptual perspective to the internal XSLT Ks. esimerkki l20-xslt2-rss 241

47 11.24 Lopuksi XML-sovellusohjelmoinnin näkökulmasta "XML" näyttäytyy lähinnä standardinmukaisena tietorakenteena sekä valmiina saatavina jäsentiminä, sovelluksina ja rajapintoina -- XML-sovelluskehityksessä pyritäänkin yleensä hyödyntämään mahdollisimman paljon valmiskomponentteja Hyvä strategia oman sovelluksen toteuttamiseen: Onko valmista toteutusta saatavilla/ostettavissa? Mikä on keskeisesti puuttuva komponentti? Onko (osa)tehtävä kierrettävissä esim. muunnoksella sopivan sovelluksen kautta ja kuinka paljon koodia kirjoitetaan itse? Kannattaa muistaa, että yksinkertainen perustekniikka mahdollistaa usein monimutkaisten sovellusten ymmärtämisen; monimutkainen perustekniikka taas saattaa tehdä yksinkertaistenkin sovellusten ymmärtämisen vaikeaksi (paitsi muutaman oppikirjamaisen erikoistapauksen osalta). Tasapainon löytäminen monimutkaisuuden hallinnassa on erittäin vaikeaa ja rajatuissakin sovelluksissa edellyttää yleensä kokemuksen myötä tulevaa "ammattitaitoa" 242

10 Pieni datalähtöinen sovellusesimerkki

10 Pieni datalähtöinen sovellusesimerkki 10 Pieni datalähtöinen sovellusesimerkki XSL mahdollistaa erilaisten XML:ää tukevien välineiden hyödyntämisen osana omia sovelluksia. Julkaisutoiminnan näkökulmasta mielenkiintoisia (ja opiskelun kannalta

Lisätiedot

11 Lyhyesti XML-sovellusohjelmoinnista

11 Lyhyesti XML-sovellusohjelmoinnista 11 Lyhyesti XML-sovellusohjelmoinnista Jos sopivaa XML-sovellusta ei löydy valmiina, voi sellaisen ohjelmoida itse. XML-sovellusohjelmointi ei oleellisesti poikkea "muusta sovellusohjelmoinnista"; kyse

Lisätiedot

10 Pieni sovellusesimerkki: datalähtöinen grafiikka

10 Pieni sovellusesimerkki: datalähtöinen grafiikka Pieni sovellusesimerkki: datalähtöinen grafiikka 10 Pieni sovellusesimerkki: datalähtöinen grafiikka XSL mahdollistaa erilaisten XML:ää tukevien välineiden hyödyntämisen osana omia sovelluksia. Julkaisutoiminnan

Lisätiedot

10 Pieni sovellusesimerkki: datalähtöinen grafiikka

10 Pieni sovellusesimerkki: datalähtöinen grafiikka è è è Pieni sovellusesimerkki: datalähtöinen grafiikka 10 Pieni sovellusesimerkki: datalähtöinen grafiikka XSL mahdollistaa erilaisten XML:ää tukevien välineiden hyödyntämisen osana omia sovelluksia. Julkaisutoiminnan

Lisätiedot

XML-tietojenkäsittely

XML-tietojenkäsittely XML-tietojenkäsittely Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: XML tarjoaa välineitä tietojenkäsittelyyn

Lisätiedot

3.27 "Tuotantoesimerkkien" rakenne ja viittaukset (1/2)

3.27 Tuotantoesimerkkien rakenne ja viittaukset (1/2) 3.27 "Tuotantoesimerkkien" rakenne ja viittaukset (1/2) Tietomalli ja tiedon esitystapa Käsityön määrä ja laatu Palvelinpään vaatimukset Saavutettavuusohjeistuksen ala! #1: Käsityö ope-kkortti.html ope-kkortti.css

Lisätiedot

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML 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ätiedot

Helsingin yliopisto/tktl XML-metakieli XML:n-käsittely. XML:n käsittely ohjelmallisesti. XML:n käsittely ohjelmallisesti

Helsingin yliopisto/tktl XML-metakieli XML:n-käsittely. XML:n käsittely ohjelmallisesti. XML:n käsittely ohjelmallisesti XSLT+FO:n tarjoamat mahdollisuudet XMLdatan käsittelyyn eivät aina ole riittäviä: Tietojen käsittely on vuorovaikutteista Tietojen käsittely on kaksisuuntaista, ei vain datan esittämistä Esitysvälineiden

Lisätiedot

Luento 7: XML-ohjelmointirajapinnat

Luento 7: XML-ohjelmointirajapinnat Luento 7: XML-ohjelmointirajapinnat AS-0.110 XML-kuvauskielten perusteet Janne Kalliola 1 XML-ohjelmointirajapinnat Document Object Model (DOM) käyttö rakenne ja versiot perusrajapinnat rajapinnat tarkemmin

Lisätiedot

XML johdanto, uusimmat standardit ja kehitys

XML johdanto, uusimmat standardit ja kehitys johdanto, uusimmat standardit ja kehitys Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: on W3C:n suosittama

Lisätiedot

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus 9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus XSL-muunnos voi tietenkin tuottaa myös tiettyyn nimiavaruuteen liittyviä kohdedokumentteja (tarvitaan aina jo esim. XHTML-sovelluksissa!) Helpoimmillaan

Lisätiedot

W3C, Web-teknologiat ja XML

W3C, Web-teknologiat ja XML W3C, Web-teknologiat ja XML Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: XML on W3C:n

Lisätiedot

Paikkatiedot ja Web-standardit

Paikkatiedot ja Web-standardit Paikkatiedot ja Web-standardit Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: World Wide

Lisätiedot

3 Verkkosaavutettavuuden tekniset perusteet

3 Verkkosaavutettavuuden tekniset perusteet 3 Verkkosaavutettavuuden tekniset perusteet Saavutettavuuden toteuttaminen edellyttää lähtökohtaisesti tietoa laitteista ja sovelluksista, käyttäjistä ja käyttötavoista, sekä tekniikasta. Tekniikasta on

Lisätiedot

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002 , XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen 2002 XHTML CSS XSL Sisältö EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard Generalized Markup Language Kevyempi

Lisätiedot

4 Web & tekstiformaatit

4 Web & tekstiformaatit è è è Web & tekstiformaatit 4 Web & tekstiformaatit Verkkopalvelun käyttöliittymä ja sisältö eivät yleensä käsitä pelkästään (X)HTML-muotoisia dokumentteja. Tämä asettaa suuria haasteita teknisen saavutettavuuden

Lisätiedot

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Tutkitaan 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ätiedot

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Digitaalisen median tekniikat JSP ja 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1 Digitaalisen median tekniikat JSP ja XML 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. 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ätiedot

6 XML-työkalut 1. 6 XML-työkalut

6 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ätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM 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ätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen Projektiryhmä StanForD-XML Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen Rahoittajat Koskitukki Oy, Metsähallitus, Metsäliitto Osuuskunta, Pölkky Oy, Stora Enso Oyj, UPM- Kymmene Oyj, Vapo Timber Oy, Yksityismetsätalouden

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

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

WWW-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ätiedot

W3C ja alueellinen standardointi

W3C ja alueellinen standardointi W3C ja alueellinen standardointi Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: W3C on kansainvälinen konsortio

Lisätiedot

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

Lisätiedot

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto Semanttinen Web Ossi Nykänen ossi.nykanen@tut.fi Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto Esitelmä "Semanttinen Web" Sisältö Konteksti: W3C, Web-teknologiat

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten 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ätiedot

Digitaalisen median tekniikat. Luento 4: JavaScript

Digitaalisen median tekniikat. Luento 4: JavaScript Digitaalisen median tekniikat Luento 4: JavaScript Luennot 1. Intro 2. XHTML 3. CSS 4. JavaScript Historia Syntaksi Dom Esimerkki: kuvagalleria 5. JavaScript-kirjastot & AJAX 6. Käytettävyys & saavutettavuus

Lisätiedot

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

XPages 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ätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten 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ätiedot

Interfacing Product Data Management System

Interfacing Product Data Management System Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

W3C-teknologiat ja yhteensopivuus

W3C-teknologiat ja yhteensopivuus W3C-teknologiat ja yhteensopivuus Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: W3C asettaa

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

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

JWT 2017 luento 6. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari JWT 2017 luento 6 to 23.3.2017 klo 12-14 Aulikki Hyrskykari PinniB 1096 1 Viime luennolla o JavaScriptin perusteet Tänään o Edellisestä luennosta taulukoista, viittausalue-esimerkkejä DOM (Document Object

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

XML, XHTML ja CSS. T-111.361 Hypermediadokumentin laatiminen. Mikko Pohja

XML, XHTML ja CSS. T-111.361 Hypermediadokumentin laatiminen. Mikko Pohja XML, XHTML ja CSS T-111.361 Hypermediadokumentin laatiminen Mikko Pohja Sisältö XML Yleensä Eri kieliä XHTML CSS XSL XML EXtensible Markup Language W3C Recommendation helmikuu 1998 SGML:n osajoukko Standard

Lisätiedot

W3C ja Web-teknologiat

W3C ja Web-teknologiat W3C ja Web-teknologiat Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: World Wide Web Consortium (W3C) on kansainvälinen

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Luento 12: XML ja metatieto

Luento 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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

XML, standardointi ja kehitys

XML, standardointi ja kehitys XML, standardointi ja kehitys Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: XML on W3C:n suosittama perhe tekstiformaatteja

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Semanttinen Web Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto Esitelmä Hyvin lyhyt versio: Semanttinen Web (SW) on

Lisätiedot

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

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ätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjä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ätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Luento 3: Tietorakenteiden esittäminen

Luento 3: Tietorakenteiden esittäminen Luento 3: Tietorakenteiden esittäminen AS-0.110 XML-kuvauskielten perusteet Janne Kalliola Tietorakenteiden esittäminen XML-dokumentti puuna Muunnokset muodosta toiseen Perustietorakenteet listat puut

Lisätiedot

XSL-muunnokset. 9 XSL-muunnokset

XSL-muunnokset. 9 XSL-muunnokset 9 XSL-muunnokset XML-dokumenttien keskeinen rooli on välittää tietoa sovellusten välillä. Yksinkertaisimmillaan tämä tarkoittaa sitä että tieto tuotetaan suoraan tietyn sovelluksen tekstiformaattiin. Lähestymistavan

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Jä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ätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat 14.10.2010

WWW-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ätiedot

WWW-Sivustojen suunnittelu

WWW-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ätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Tietorakenteet, laskuharjoitus 7,

Tietorakenteet, laskuharjoitus 7, Tietorakenteet, laskuharjoitus 7, 14.-19.3. 1. "Tira meets software engineering, osa 1" Lue luentomonisteen kalvot 233-236. Toteuta luokka Opiskelijarekisteri joka tarjoaa seuraavat palvelut: opiskelijoiden

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

www.hohde.com Hohde Consulting 2004

www.hohde.com Hohde Consulting 2004 Luento 14: Kertaus AS-0.110 XML-kuvauskielten perusteet Janne Kalliola Kertaus XML nimiavaruus validointi XML:n käyttö tietorakenteiden kuvaus ohjelmointi XML-pohjaiset kielet peruskielet muut kurssilla

Lisätiedot

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Testidatan generointi

Testidatan generointi Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI

Lisätiedot

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

T-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ätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri Järjestelmäarkkitehtuuri (TK081702) ja Järjestelmäarkkitehtuuri Sovellukset ovat olemassa Järjestelmien uudistaminen vie yleensä arvioitua enemmän resursseja ja kestää arvioitua kauemmin Migration (Migraatio

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-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ätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-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ätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen

Lisätiedot

JWT 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. 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ätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

Rakenteisten dokumenttien jatkokurssi, syksy 2006

Rakenteisten dokumenttien jatkokurssi, syksy 2006 Rakenteisten dokumenttien jatkokurssi, syksy 2006 MATHM-57200 Rakenteisten dokumenttien jatkokurssi, 5 op opetetaan syksyn 1-2 periodeilla Kotisivu: http://matriisi.ee.tut.fi/hmopetus/rdj/index.html Luennot:

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot