UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV

Size: px
Start display at page:

Download "UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV"

Transcription

1 Martin Počkar UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV Diplomsko delo Maribor, avgust 2013

2 UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV Diplomsko delo Študent: Študijski program: Martin Počkar univerzitetni študijski program Računalništvo in informatika Smer: Mentor: Lektorica: Informatika izr. prof. dr. Aleš Živkovič Helena Bradač, univ. dipl. prev.

3 I

4 UPORABA TEHNOLOGIJE XQUERY NA PRIMERU ISKALNIKA AMISTV Ključne besede: povpraševalni jezik XQuery, iskalnik AmisTV, Saxon, test obremenitve, EPG UDK: : (043.2) Povzetek V diplomskem delu je predstavljena uporaba povpraševalnega jezika XQuery na primeru iskalnika po digitalnem televizijskem sporedu (angl. EPG) na storitvi AmisTV 1.5. Skozi delo so predstavljeni koncepti jezika XQuery in orodja za delo s tem jezikom. Delo predstavi delovanje produkcijskega iskalnika AmisTV 1.5, ki deluje z uporabo relacijske podatkovne baze in jezika SQL, ter praktično rešitev iskalnika z uporabo jezika XQuery. Obe rešitvi sta v diplomskem delu primerjani s statistiko, pridobljeno z izvajanjem testov obremenitve. Delo vsebuje tudi predloge, kako izboljšati zmogljivosti aplikacij v jeziku XQuery. II

5 USING XQUERY WITHIN THE AMISTV SEARCH ENGINE Key words: query language XQuery, AmisTV search engine, Saxon, load test, EPG UDK: : (043.2) Abstract The graduation thesis presents the use of the query language XQuery, by the example of the AmisTV search engine, which is a search engine for electronic program guide data on digital television AmisTV 1.5. The concepts of XQuery language and also some tools to work with it are presented. The thesis defines the main principles of AmisTV search engine, which operates on the use of relational data base and query language SQL; furthermore the practical solution for the search engine by using the query language XQuery is presented. Both solutions are tested with load tests and statistically compared. Consequently, the thesis includes suggestions how to improve performance of applications in XQuery language. III

6 KAZALO VSEBINE 1 UVOD OPIS TEHNOLOGIJE XQUERY Uvod Izrazi, operatorji Podatkovni model, tipi Funkcije XQuery po specifikaciji Prednosti tehnologije, primerjava s XSLT in SQL ORODJA ZA DELO Z XQUERY Procesorji XQuery Saxon Zorba Apache VXQuery XQuery urejevalniki Altova XMLSpy <oxygen/> XML Editix Podatkovne baze na osnovi XML in XQuery BaseX exist-db UPORABA PROCESORJA XQUERY SAXON Osnovne funkcije procesorja XQuery Analiza Prevajanje Evalvacija Serializacija Procesor Saxon Uporaba procesorja XQuery Saxon v.net OPIS STORITVE ISKALNIK AMISTV Storitev AmisTV Iskalnik AmisTV 1.5 v splošnem IV

7 5.3 Iskalnik AmisTV 1.5 podrobneje ISKALNIK AMISTV 1.5 Z UPORABO XQUERY TESTIRANJE ZMOGLJIVOSTI Testiranje obremenitve Testno okolje Testiranje Test 1 scenarij 1 nad različico z uporabo relacijske podatkovne baze SQL Test 2 scenarij 2 nad različico z uporabo relacijske podatkovne baze SQL Test 3 scenarij 3 nad različico z uporabo relacijske podatkovne baze SQL Test 4 scenarij 1 nad različico z uporabo XQuery Test 5 scenarij 2 nad različico z uporabo XQuery Test 6 scenarij 3 nad različico z uporabo XQuery Povzetek in analiza testov IDEJE ZA IZBOLJŠAVO Transformacija ali drugačna oblika dokumentov XML podatkovna baza Večnitnost SKLEP VIRI PRILOGE V

8 KAZALO SLIK Slika 3.1: Altova XMLSpy orodje za odpravljanje napak ("debugger") Slika 3.2: <oxygen/> XML Editor - orodje Tree editor Slika 3.3: <oxygen/> XML Editor - vmesnik pomočnika za odpravljanje napak Slika 3.4: Arhitektura podatkovne baze, osnovane na XML [12] Slika 3.5: Grafični vmesnik BaseX. V zgornji vrstici oken so od leve proti desni aktivirana okna: Editor, Folder, Map in Plot. V spodnji vrstici oken so od leve proti desni aktivirana okna: Text, Query info, Table in Tree Slika 5.1: Prikaz vnosa iskanja v storitvi iskalnika AmisTV na levi strani lahko z virtualno tipkovnico ali s črkami na daljinskem upravljalcu vnašamo iskalni niz, v sredinskem stolpcu pa lahko rezultate omejimo z izbiro žanra ali podžanra Slika 5.2: Iskalnik AmisTV 1.5 nam rezultat prikaže v obliki večstranskega seznama zadetkov KAZALO DIAGRAMOV Diagram 2.1: Hierarhija tipov v XQuery 1.0 in XPath 2.0 [3] Diagram 5.1: Diagram primerov uporabe za AmisTV Diagram 5.2: Entitetno-relacijski diagram podatkovne baze na AmisTV Diagram 5.3: Diagram primerov uporabe za produkcijsko rešitev z uporabo relacijske podatkovne baze SQL. Za iskanje po podatkih EPG je najprej potrebno parsanje Diagram 5.4: Diagram aktivnosti pri parsanju dokumentov XML na produkcijski različici Diagram 5.5: Poenostavljen prikaz delovanja iskalnika po podatkih EPG na produkcijski različici Diagram 6.1: Izpuščena je potreba po parsanju in zapisovanju podatkov v relacijske tabele Diagram 6.2: Diagram sodelovanja za rešitev iskalnika EPG z uporabo XQuery VI

9 KAZALO TABEL Tabela 3.1: Primerjalna tabela preizkušenih orodij za delo z jezikom XQuery Tabela 7.1: Scenarij Tabela 7.2: Scenarij Tabela 7.3: Scenarij Tabela 7.4: Rezultati Test Tabela 7.5: Rezultati Testa Tabela 7.6: Rezultati Testa Tabela 7.7: Rezultati za Test Tabela 7.8: Rezultati za Test Tabela 7.9: Rezultati testov obremenitve KAZALO GRAFOV Graf 7.1: Časi odgovorov za Test Graf 7.2: Časi odgovorov za Test Graf 7.3: Časi odgovorov za Test Graf 7. 4: Časi odgovorov za Test Graf 7.5: Časi odgovorov za Test VII

10 UPORABLJENE KRATICE API CIL Application Programming Interface Common Intermediate Language programski vmesnik skupni vmesni jezik CRID Content Reference Identifier referenčni identifikator vsebine EPG Electronic Program Guide digitalni televizijski spored FTP File Transfer Protocol protokol za prenos datotek JAXP JDOM Java API for XML Processing Java Document Object Model API za procesiranje XML v jeziku Java dokumentni objektni model za jezik Java JSON JavaScript Object Notation objektna notacija za jezik JavaScript OQL Object Query Language objektni povpraševalni jezik SQL Structured Query Language strukturiran povpraševalni jezik STB Set-top Box digitalni sprejemnik URI Uniform Resource Identifier enotni označevalnik vira W3C World Wide Web Consortioum konzorcij za svetovni splet XDM XQuery and XPath Data Model podatkovni model za jezika XQuery in XPath XML extesible Markup Language razširljivi označevalni jezik XOM XML Object Model objektni model za jezik XML VIII

11 XQJ XQuery API for Java API za procesiranje XQuery v jeziku Java XQL XML Query Language povpraševalni jezik za XML XSD XML Schema Definition shema XML XSLT Extensible Stylesheet Language Transformations razširljiv slogovni jezik za transformacije IX

12 1 UVOD Za diplomsko nalogo smo iskalnik po elektronskem televizijskem sporedu (angl. electronic program guide ali EPG; v nadaljevanju EPG) 1, ki je bil med študijsko prakso v podjetju Amis d.o.o. razvit s pomočjo povpraševalnega jezika SQL, razvili s pomočjo XQuery, povpraševalnega jezika za XML, in ob tem še dodobra raziskali ta jezik. S pomočjo tega bomo skušali jezik XQuery predstaviti kot jezik, ki je zmožen izrazno in zmogljivostno opravljati naloge povpraševanj v visokonivojskih aplikacijah, hkrati pa kot dostopna tehnologija z veliko odprtokodnimi rešitvami in pripomočki omogoča nizke stroške razvoja. Tako lahko postavimo dve tezi: 1. XQuery je dovolj izrazno močna, da lahko v visokonivojski spletni aplikaciji nadomesti klasičen pristop k podatkom s tehnologijo SQL. Prva teza te naloge je, da lahko jezik XQuery v takšnih okoliščinah oziroma v danem modelu enakovredno nadomesti relacijsko podatkovno bazo. 2. Uporaba tehnologije XQuery ima nižje stroške razvoja in je bolj organska tehnologija za razvijalca v primerjavi z uporabo relacijske podatkovne baze in jezika SQL. Skozi poglavja bomo predstavili tehnologijo XQuery, spoznali orodja za delo z XQuery, četrto poglavje pa se bo podrobneje osredotočilo na procesor Saxon, ki je bil uporabljen v praktičnem delu naloge. Naslednja poglavja se osredotočajo na praktično rešitev; peto poglavje na rešitev, ki je bila razvita v podjetju Amis, šesto poglavje pa se posveti rešitvi v jeziku XQuery. Ob koncu smo nad obema rešitvama izvedli obremenitvene teste in zbrali nekaj idej za izboljšave zmogljivosti rešitve z uporabo XQuery. XML je široko sprejet kot format za shranjevanje dokumentov in kot standardna oblika za izmenjavo podatkov med aplikacijami, pogosto tudi med različnimi organizacijami. Dobra sprejetost tehnologije je posledica zmožnosti vzdrževanja kompleksnih informacij in na drugi strani preprostosti in dostopnosti tehnologije [28]. XQuery kot povpraševalni jezik za XML je funkcionalno močna razširitev tehnologije XML, saj omogoča povpraševanje po podatkih v večjem številu dokumentov XML in celo 1 Electronic program guide ali EPG je neprestano osveževan seznam celotne televizijske ali radijske vsebine, ki ga zagotavlja ponudnik storitve digitalne televizije [30]. 1

13 povpraševanje po dokumentih XML na spletu ter s tem ponuja uporabno alternativo shranjevanju podatkov v relacijske podatkovne baze. 2

14 2 OPIS TEHNOLOGIJE XQUERY 2.1 Uvod XML je vsestranski označevalni jezik, zmožen označevanja informacij v različnih oblikah. XQuery je jezik, ki omogoča povpraševanja po strukturah podatkov XML, bodisi so ti fizično shranjeni kot dokument XML bodisi so prevedni v XML s pomočjo vmesnega programja (angl. middleware). Zaradi svoje vsestranskosti omogoča združevanje podatkov iz dokumentov XML, podatkovnih baz, spletnih strani in mnogih drugih virov [6]. Jezik XQuery je razvila skupina XML query working group oziroma Skupina za razvoj povpraševalnega jezika XML pod okriljem W3Consortium (v nadaljevanju W3C). W3C ali World Wide Web Consotium je osrednja mednarodna organizacija za standardizacijo World Wide Web tehnologij. Osnova za nastanek je bil povpraševalni jezik Quilt, pri katerem so združili lastnosti številnih drugih jezikov, vključno z XPath 1.0, XQL, XML- QL, SQL in OQL [5]. Prvi delovni dokumenti za specifikacijo jezika XQuery 1.0 so nastali februarja 2001, jezik pa je zaživel leta 2007, ko je W3C izdal priporočilo za specifikacijo 1.0. W3C priporočilo (angl. W3C Recommendation) je ekvivalentni dokument, kot 'standard' pri sorodnih organizacijah za standardizacijo. V osnovi je to skupek smernic. XQuery so podprli IBM, Microsoft in Oracle kot najpomembnejša podjetja, ki se ukvarjajo z razvojem podatkovnih baz [37]. V začetku leta 2013 je W3C izdal kandidata za priporočilo za specifikacijo XQuery 3.0 (na začetku znana pod delovnim imenom XQuery 1.1), ki bo nadomestila specifikacijo 1.0. Omenjena skupina je tesno sodelovala s Skupino za razvoj XSL, ki je razvila XSLT 2.0. Obe skupini sta skupaj razvili XPath 2.0 [36], ki je neke vrste podjezik jezika XQuery. XPath je v primerjavi z XQuery izrazno skromnejši jezik, vendar nepogrešljiv del pri povpraševanju z XQuery. Lahko bi se reklo, da XQuery 1.0 funkcionalno nadgrajuje XPath 2.0. Kateri koli izraz, ki je sintaktično in semantično pravilen v XPath 2.0, je pravilen tudi v XQuery 1.0, izvajanje tega izraza pa bo vrnilo enake rezultate. Specifikacija XQuery 1.0 zajema sledeče: Podatkovni model XQuery/XPath (XDM). 3

15 Formalno semantiko XQuery 1.0 in XPath, ki definira statično semantiko jezika XQuery, vsebuje pa tudi formalni (vendar ne definicijski) opis dinamične semantike. Sistem tipov XQuery, ki so definirani z XML Shemo; enaki tipi, kot se uporabljajo v XQuery, se uporabljajo tudi v XML oziroma v XML Shemi. Knjižnico vgrajenih funkcij in operatorjev, ki jih podpira XQuery. Ima vsaj dva sintaksna vhoda, prvi je sintaksa, ki je berljiva ljudem, drugi je sintaksa, ki je bazirana na XML. Sintaksa, definirana v obliki XML, je opisana z XQueryX [17]. 2.2 Izrazi, operatorji XQuery uporablja XPath sintakso za naslavljanje določenih delov dokumenta XML. Dopolnjuje ga stavkom SQL podobna skupina stavkov, poimenovana FLWOR (izgovarja se enako, kot angleška beseda 'flower'), ki je namenjena iteracijam in združevanju spremenljivk. FLWOR je v jeziku XQuery ekvivalent stavkom SELECT-FROM-WHERE v jeziku SQL. Izrazi FLWOR so najpomembnejši izrazi in posebnost jezika XQuery, ostali izrazi so opisani v drugi polovici tega poglavja. FLWOR sestoji iz petih stavkov: FOR ustvari zaporedje rezultatov (rezultat je ekvivalent SQL vrstici), LET poveže rezultat s spremenljivko, WHERE vsebuje Boolov izraz (angl. Boolean expression), s katerim filtrira rezultat, ORDER BY uredi rezultate, RETURN konstruira rešitve, ovrednosti se za vsak posamezen rezultat. Stavek RETURN nam omogoča vračanje rezultatov v obliki novega dokumenta XML, vseeno pa XQuery ne pozna konstruktov, kot so stavki INSERT, UPDATE, DELETE v jeziku SQL. Uporaba povpraševalnega jezika XQuery na primeru trgovskega podjetja z več poslovalnicami: 4

16 "podjetje.xml": <?xml version="1.0" encoding="utf-8"?> <podjetje> <poslovalnica id="1"> <naslov> <ulica>prešernova ulica 15</ulica> <postna_stevilka type="xs:integer">2000</postna_stevilka> <posta>maribor</posta> </naslov> <telefon>02/ </telefon> > <cas_poslovanja> <odpiralni>8</odpiralni> <zapiralni>18</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="2"> <naslov> <ulica>tržaška cesta 397</ulica> <postna_stevilka type="xs:integer">2000</postna_stevilka> <posta>maribor</posta> </naslov> <telefon>02/ </telefon> > <cas_poslovanja> <odpiralni>10</odpiralni> <zapiralni>21</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="3"> <naslov> <ulica>mariborska cesta 38</ulica> <postna_stevilka type="xs:integer">3000</postna_stevilka> <posta>celje</posta> </naslov> <telefon>03/ </telefon> > <cas_poslovanja> <odpiralni>9</odpiralni> <zapiralni>18</zapiralni> </cas_poslovanja> </poslovalnica> <poslovalnica id="4"> 5

17 <naslov> <ulica>dunajska cesta 100</ulica> <postna_stevilka type="xs:integer">1000</postna_stevilka> <posta>ljubljana</posta> </naslov> <telefon>01/ </telefon> <cas_poslovanja> <odpiralni>8</odpiralni> <zapiralni>21</zapiralni> </cas_poslovanja> </poslovalnica> </podjetje> XQuery za naslavljanje delov dokumenta uporablja izraze s sintakso XPath: doc("podjetje.xml")/podjetje/poslovalnica/naslov/ulica Funkcija doc() omogoča odpiranje dokumentov XML, /poslovalnica izbere vse poslovalnice v dokumentu, z /naslov se premaknemo en nivo globlje po drevesu, z /ulica pa še za en nivo globlje na element 'ulica'. Klic zgornje funkcije bi vrnil sledeči rezultat: <ulica>prešernova ulica 15</ulica> <ulica>tržaška cesta 397</ulica> <ulica>mariborska cesta 38</ulica> <ulica>dunajska cesta 100</ulica> Raba FLWOR izraza na tem primeru bi izgledala tako: for $x in doc("podjetje.xml")/podjetje/poslovalnica where $x/naslov/postna_stevilka=2000 order by $x/naslov/ulica return $x/telefon Stavek for izbere vse elemente, izbrane z izrazom XPath, v spremenljivko x. Stavek where filtrira elemente na izbor tistih, pri katerih je vrednost elementa postna_stevilka enaka kot 2000, stavek order by določi kriterij, po katerem se rezultati sortirajo, return pa pove, da naj izraz vrne vse telefon elemente. Zgornji izraz bi vrnil sledeči rezultat: <telefon>02/ </telefon> <telefon>02/ </telefon> 6

18 Izrazi so gradniki vseh povpraševanj v jeziku XQuery. Obstaja več vrst (skupin) izrazov [18]: Primarni izrazi (angl. primary expressions) literali, imena spremenljivk, opisi konteksta, konstruktorji, klici funkcij. Izrazi poti (angl. path expressions) locirajo elemente, atribute znotraj dokumenta XML. Izrazi poti so lahko: o Relativni (izraz je sestavljen iz enega ali več korakov, ki so med seboj ločeni z eno ali dvema poševnicama (/ ali //). o Absolutni (izraz se začne z eno ali dvema poševnicama (/ ali //), opcijsko (le če smo uporabili dve poševnici) pa se nadaljuje z relativno potjo. Izrazi zaporedij (angl. sequence expressions) operatorji, ki se uporabljajo za ustvarjanje, filtriranje in kombiniranje zaporedij predmetov. Predmeti so lahko atomarne vrednosti ali vozlišča. Aritmetični izrazi aritmetični operatorji - seštevanje, odštevanje, množenje, deljenje in modusi. Primerjalni izrazi operatorji, ki omogočajo primerjave: o Splošni primerjalni operatorji (=,!=, <, >, <=, >=) z njimi lahko primerjamo atomarne vrednosti, zaporedja ali kombinacije teh dveh. o Vrednostni primerjalni operatorji (eq, ne, lt, gt, le, ge) z njimi lahko primerjamo le atomarne vrednosti. Lahko jih nadomestimo s splošnimi primerjalnimi izrazi. o Vozliščni primerjalni operator (operator 'is') le za primerjavo med vozlišči. o Primerjalni operatorji za primerjavo zaporedja vozlišč primerjajo par vozlišč glede na njihovo mesto v dokumentu. Obstajata dva operatorja: <<: vrne 'true', če je operand 1 pred operandom 2, >>: vrne 'true' če je operand 1 za operandom 2. Logični izrazi ('and' in 'or' operatorja) logični izrazi lahko vračajo prazno zaporedje, zaporedje enega ali več vozlišč ali 'boolean' vrednost. Izrazi za ustvarjanje dokumentov XML konstruktorji, ki omogočajo ustvarjanje struktur XML znotraj povpraševanj. S konstruktorji lahko 7

19 ustvarjamo elemente, atribute, dokumente, tekst, komentarje in procesne inštrukcije. Poznamo: o Direktni konstruktorji vrednosti elementov, atributov itd. so konstante. Primer direktnega konstruktorja elementov, ki ustvari element z atributom in nekaj vgnezdenemi elementi: <oseba emso=" "> <naziv> <ime>martin</ime> <priimek>počkar</priimek> </naziv> </oseba> o Računski konstruktorji klic konstruktorja se začne s tipom vozlišča, ki ga želimo ustvariti (element, atribut... itd.), sledi mu ime vozlišča, sledi pa mu zaviti oklepaj ({}), v katerega se vstavi bodisi fiksna vrednost ali izraz, iz katerega se vrednost izračuna: <primer> <p>emšo Martina Počkarja je { data($x/@emso) }</p> <!--funkcija data() vrača vrednost (vsebino) elementa; več funkcij je opisanih v poglavju 2.5--> </primer> Ta izraz bi vrnil sledeče: <primer> <p>emšo Martina Počkarja je }</p> </primer> Izrazi FLWOR opisani v začetku tega poglavja. Izrazi razvrščanja urejajo zaporedje vračanja rezultatov nekaterih izrazov poti. Nimajo povezave z 'order by', ki spada med izraze FLWOR. Pogojni izrazi (if, else, then stavki). Kvantifikatorski izrazi (every, some): 8

20 o Kvantifikator 'some' vrne true, če je izraz, na katerega vpliva kvantifikator, vsaj enkrat v povpraševanju resničen, torej vrača vrednost 'true'. o Kvantifikator 'every' vrne 'true', če je izraz, na katerega vpliva kvantifikator, v vsakem primeru resničen in torej vrača vrednost 'true'. Izrazi tipa zaporedja (operatorja 'instance of' in 'cast as'). 2.3 Podatkovni model, tipi XQuery 1.0 in XPath 2.0 Data Model ali krajše XDM je formalni podatkovni model za jezik XQuery. XDM hkrati definira sledeče: vse dovoljene vrednosti izrazov, vse dovoljene vrednosti pri vmesnih kalkulacijah, vse dovoljene vrednosti, ki jih vrača izraz. To pomeni, da je vsak vhod, vsak izhod in vsaka vmesna kalkulacija instanca podatkovnega modela XDM. Parsanje podatkov XML v XDM in validiranje po shemi se izvede pred procesiranjem XQuery. Med generiranjem podatkovnega modela se dokument XML parsa v XDM instanco. Na kratko bi lahko XDM podatkovni model opisali kot zaporedje predmetov (angl. items), ki so bodisi atomarne vrednosti bodisi vozlišča, torej je to zaporedje (angl. sequence) zbirka nič ali več atomarnih vrednosti ali vozlišč. Atomarna vrednost (angl. atomic value) je tista, ki ima vrednost atomarnega tipa. Atomarni tip (angl. atomic type) je primitivni tip (angl. primitive simple type) ali tip, ki je derivat drugega atomarnega tipa. Pomembna lastnost modela je, da ne razlikuje med predmetom in zaporedjem, ki vsebuje ta predmet. Predmet je ekvivalenten zaporedju, ki vsebuje le ta isti predmet, in obratno. V XDM obstaja sedem različnih tipov vozlišč: dokument, 9

21 element, atribut, tekst, namespace, procesna inštrukcija, komentar. Vsako vozlišče v modelu ima svojo unikatno identiteto, ki ga razlikuje od vseh ostalih vozlišč, četudi so ta vozlišča sicer identična. Na drugi strani se atomarne vrednosti nanašajo na preproste tipe (angl. simple types), ki so definirani v W3C priporočilu XML Shema, Part 2. Preprosti tipi so string, Boolean, decimal itd. Točna sestava tipov po podatkovnem modelu XDM je prikazana v Diagramu 2.1: 10

22 Diagram 2.1: Hierarhija tipov v XQuery 1.0 in XPath 2.0 [3]. 11

23 2.4 Funkcije XQuery vključuje številne vgrajene funkcije, ki omogočajo upravljanje z numeričnimi vrednostmi, nizi, upravljanje z vozlišči in podobno. XQuery 1.0, XPath 2.0 in XSLT 2.0 si delijo knjižnico definiranih funkcij. Moč jezika XQuery pa leži tudi v možnosti definiranja uporabniško definiranih funkcij. V primerjavi z jezikom SQL so pomembnejše funkcije min (arg, arg,...), max (arg, arg,...), count (arg, arg,...) in avg (arg, arg,...), saj nudijo enake funkcionalnosti kot funkcije SQL. Najpomembnejša funkcija XQuery pa je doc (URI), ki omogoča naslavljanje in odpiranje dokumentov XML. Primer klica funkcij doc() in substring(): doc(''dokument.xml'')/podatki/naslov[substring(ulica,1,3)='smetanova'] Funkcije se lahko v grobem razdeli na naslednje kategorije [16]: upravljanje z nizi, npr. substring, contains, concat, regularni izrazi, npr. matches, replace, aritmetične funkcije, npr. count, sum, avg, min, max, lastnosti vozlišč, npr. name, node-name, upravljanje z dokumenti, npr. doc, doc-available. Uporabniško definirane funkcije se lahko definirajo znotraj povpraševanja ali v ločeni knjižnici. Funkcija se definira na sledeč način: declare function prefix:ime_funkcije($parameter AS tip_parametra) AS return tip_funkcije {...telo funkcije... } Preprost primer uporabniško definirane funkcije: declare function local:kvadratna_potenca ($x as xs:double) as xs:double { 12

24 <result>{$x*$x}</result> }; 2.5 XQuery po specifikaciji 3.0 Specifikacija XQuery 3.0 je trenutno v fazi kandidata za priporočilo, kar pomeni, da bo postala tudi uradno W3C priporočilo [32], ko bo specifikacija široko sprejeta in bo zadovoljevala vse tehnične zahteve. To se utegne zgoditi v kratkem, zato je primerno, da predstavimo razlike specifikacije XQuery 3.0 od prvotne različice XQuery 1.0. Predstavili bomo izbor najbolj bistvenih sprememb: Group by stavek v FLWOR izrazih stavek generira zaporedje izhodnih rezultatov, pri čemer je vsak rezultat skupina tistih vhodnih podatkov, ki imajo skupen grupacijski ključ [21]. Window stavek v FLWOR izrazih stavek iterira prek vezanega zaporedja (angl. binding sequence; predstavlja vrednost izraza, ki sledi besedi 'in' npr. for $x in $expr) in generira zaporedje rezultatov. Vsak rezultat predstavlja okno. Okno je zaporedje elementov, zaporedno povlečenih iz vezanega zaporedja. Vsako okno je določeno z najmanj eno in največ devetimi spremenljivkami. Imena spremenljivk so sicer uporabniško-specifična, vendar so njihove vloge sledeče (namenoma bomo uporabili angleška poimenovanja, ki jih uporablja W3C, saj bi se med prevodom utegnil pomen izgubiti): o Window-variable vezana na zaporedje elementov iz vezanega zaporedja in omejujejo okno. o Start-item vezana na prvi element v oknu. o Start-item-position vezana na zaporedno pozicijo prvega okenskega elementa v vezanem zaporedju in je tipa xs:integer. o Start-previous-item vezana na element v vezanem zaporedju, ki ima zaporedno pozicijo pred prvim elementom v oknu. o Start-next-item vezana na element v vezanem zaporedju, ki sledi prvemu elementu v oknu. 13

25 o End-item vezana na zadnji element v oknu. o End-item-position vezana na zaporedno pozicijo zadnjega okenskega elementa v vezanem zaporedju in je tipa xs:integer. o End-previous-item vezana na element v vezanem zaporedju, ki ima zaporedno pozicijo pred zadnjim elementom v oknu. o End-next-item vezana na element v vezanem zaporedju, ki sledi zadnjemu elementu v oknu [21]. Stavek count v FLWOR izrazih stavek se navezuje na zaporedno pozicijo vsakega rezultata v zaporedju rezultatov. Zaporedje vhodnih podatkov je enako kot zaporedje izhodnih rezultatov s to razliko, da so izhodni rezultati opremeljeni z dodatno spremenljivko, ki prikazuje zaporedno pozicijo tega rezultata v zaporedju rezultatov [21]. Try/catch izrazi zagotavljajo upravljanje z napakami, ki nastanejo zaradi napak pri uporabi tipov ali med dinamično evalvacijo. Podobno kot v visokonivojskih jezikih Java ali C++/C#, try/catch izrazi s catch stavki 'lovijo' napake, ki so leksikalno vsebovane v try stavku [21]. Deklaracija funkcij kot private ali public. Možnost dinamičnih klicov funkcij. Izraz switch izraz, dobro poznan iz drugih jezikov, pri katerem ključni besedi switch sledi switch operand, ki se nato primerja s case operandi. Če noben switch operand ne ustreza case operandu, je vrednost izraza enaka privzetemu stavku [21]. 14

26 2.6 Prednosti tehnologije, primerjava s XSLT in SQL Osnovne prednosti tehnologije XQuery so [34]: Izraznost jezik XQuery lahko vrši povpraševanja nad različnimi podatkovnimi strukturami, s svojo dobro podporo rekurziji pa je naravni jezik za povpraševanje po drevesnih strukturah in grafih. Jedrnatost stavki v jeziku XQuery so krajši kot podobni stavki, napisani v jezikih SQL ali XSLT Fleksibilnost v jeziku XQuery lahko povprašujemo po hierarhičnih kot tudi tabeliranih podatkih. Konsistentnost jezik XQuery ima konsistentno sintakso, ki jo je možno uporabiti tudi s sintakso drugih standardov XML, kot naprimer podatkovni tipi XML Sheme. Za razliko od jezika SQL, ki vrača tabele, jezik XQuery vrača drevesno strukturo podatkov. To nam omogoča, da neposredno ustvarjamo XHTML strukture, ki jih nato lahko uporabimo za spletne strani. XQuery je namenjen objektnim podatkovnim bazam na osnovi tehnologije XML, objektne baze pa pred podatkovnimi bazami, ki shranjujejo tabelirane podatke, prednjačijo po svoji fleksibilnosti. XQuery je lahko razumljiv in enostaven za učenje za vsakogar, ki pozna jezik SQL. Mnogi konstrukti so v obeh jezikih podobni: urejanje rezultatov oba jezika poznata 'order by' stavek, izbiranje določenih vrednosti oba jezika lahko na enostaven način povprašujeta po točno določenih vrednostih, razločevanje vrstic oba jezika poznata 'where' stavek. Velika prednost jezika XQuery pred jezikom SQL je v tem, da je XQuery naravni jezik za svetovni splet. Uporabnik lahko z jezikom XQuery povprašuje po spletnih straneh, česar mu jezik SQL ne omogoča. Tudi če uporablja podatkovno bazo na osnovi SQL, kamor shranjuje HTML/XHTML strani ali dele strani, bo izgubil veliko prednosti, ki jih nudi preprosto iskanje po oznakah in atributih. 15

27 Kot že napisano je XQuery jezik, ki je zlahka razumljiv nekomu, ki pozna jezik SQL, kar pa ne velja za jezik XSLT. Ta vsebuje veliko principov, ki se bodo zdeli nenaravni marsikateremu razvijalcu, vajenemu proceduralnih jezikov. Na eni strani je XSLT dober za statične transformacije enega tipa dokumentov v drugega, na drugi strani pa je XQuery dosti bolj dinamičen povpraševalni jezik, primeren za iskanje podatkov iz velikih dokumentov oziroma iz velike količine dokumentov. XSLT 2.0 in XQuery 1.0 sta bila razvita v tesnem sodelovanju obeh delovnih skupin, zato je kljub razlikam med jezikoma veliko prekrivajočih funkcionalnosti [15] in tako si delita sledeče koncepte: podatkovni model XDM, funkcije in operatorje, formalno semantiko, serializacijo [31]. 16

28 3 ORODJA ZA DELO Z XQUERY Z uveljavitvijo jezika XQuery se je pojavila tudi ponudba orodij za delo s tem jezikom. Razdelili smo jih na procesorje, urejevalnike in podatkovne baze na osnovi jezikov XML in XQuery. V tem poglavju se ne bomo osredotočali na tehnične rešitve orodij, ampak na uporabnost in namen teh izbrana orodja smo tudi preizkusili in primerjali, kar prikazuje Tabela 3.1: Tabela 3.1: Primerjalna tabela preizkušenih orodij za delo z jezikom XQuery. Procesorji Ime orodja Proizvajalec Licenca Podprte platforme Saxon Saxonica Saxon-HE odprtokodna; licence za plačljive izvedenke od 50 naprej Java,.NET Zorba C++, C, C#, Skupina s podporo FLWOR Foundation Odprtokodna Java, PHP, Python, Ruby VXQuery Skupina pod okriljem Apache Inkubatorja Odprtokodna Java Urejevalniki Ime orodja Proizvajalec Licenca XMLSpy Altova Professional Edition 399$; Enterprise Edition 799$ <oxygen/> XML SyncRo Soft Academic Edition 99$; Professional Edition 488$; Enterprise Edition 698$ Editix 2008 JAPISoft Editix 2008 brezplačna; Editix 2013 Small Business 79$; Editix 2013 Enterprise 139$ 17

29 Podatkovne baze na osnovi XML in XQuery Ime orodja Proizvajalec Licenca BaseX BaseX GmbH, podjetje raziskovalcev Univerze v Odprtokodna Konstanzu exist-db 2.0 exist Solutions GmbH Odprtokodna; Opcijsko doplačilo za uporabniško podporo 3.1 Procesorji XQuery Saxon Saxon je implementacija standarda XQuery podjetja Saxonica, napisana v Javi in omogoča delo z jezikom XQuery v javanskih aplikacijah. Sprva je bil to procesor XSLT, ki se mu je kasneje dodala tudi podpora za XQuery. Saxon poleg XQuery 1.0 implementira XSLT 2.0, XPath 2.0, XML Schema 1.0, podpira pa tudi prihajajoči XQuery 3.0, ki je trenutno kandidat za priporočilo (candidate recommendation) [13]. Implementacija je spisana v čisti Javi in je torej platformsko široko uporabna, obstaja pa tudi.net različica, ki pa je v bistvu prevedena javanska bajtna koda. Saxon je na voljo v več različicah, od katerih je ena prostodostopna in odprtokodna. Za namene te naloge smo uporabili in preizkusili odprtokodno različico Saxon-HE 9.3, prevedeno za.net. Več o Saxonu je opisano v četrtem poglavju te naloge Zorba Zorba je odprtokodni procesor XQuery, napisan v programskem jeziku C++. Projekt med drugim podpira tudi FLWOR Foundation in Oracle. Čeprav je spisan v C++, ima širok nabor programskih vmesnikov (angl. application programming interface ali API; 18

30 opredeljuje, kako naj določene programske komponente interaktirajo med seboj - v praksi so to knjižnice oziroma nabor knjižnic, ki specificira rutine, podatkovne tipe, razrede in spremenljivke [35]) in je tako na voljo iz številnih programskih jezikov, npr. C++,C, C#, Java (z ali brez XQuery API for Java), PHP, Python in Ruby. Procesor poleg XQuery kot povpraševalnega jezika za XML podpira še povpraševalni jezik JSONiq za JSON (JavaScript Object Notation standard za izmenjavo berljivih podatkov). XQuery in JSONiq si delita podobno semantiko, tako pri obeh veljajo izrazi FLWOR, oba uporabljata jezik XPath za navigacijo, tudi tipi in operacije so pri obeh jezikih enake. Tako si v procesorju Zorba oba jezika delita isti prevajalnik Apache VXQuery Apache VXQuery je procesor XQuery, implementiran v programskem jeziku Java, ki je trenutno še v fazi razvoja in se nahaja v Apachejevem Inkubatorju (angl. Apache Incubator). Apache Incubator je vstopna točka v The Apache Software Foundation (ASF) za vse projekte, ki želijo pridobiti podporo fundacije. Vsi zunanji projekti v fundacijo vstopijo skozi ta inkubator [29]. Razvoj procesorja se osredotoča na izvrševanje povpraševanj nad veliko količino podatkov XML, prav posebej na izvrševanje povpraševanj nad velikimi zbirkami relativno majhnih dokumentov XML [2]. 3.2 XQuery urejevalniki Urejevalniki so celovita orodja, ki ponujajo pomoč pri pisanju programske kode jezika XQuery v smislu barvnega označevanja programske kode, številčenja vrstic in samodejnega zapiranja posameznih sklopov programske kode (angl. source folding), pomoč pri vnašanju, vgrajene validatorje in vgrajene procesorje, ki omogočajo izvrševanje kode jezika XQuery nad datotekami XML ali podatkovnimi bazami, ki omogočajo povpraševanja v jeziku XQuery. 19

31 3.2.1 Altova XMLSpy XMLSpy je priljubljeno in zelo razširjeno orodje avstrijskega podjetja Altova, ki omogoča modeliranje, urejanje, transformiranje in odpravljanje napak v širokem spektru tehnologij XML. Poleg podpore jezikom XSLT 2.0, XPath 2.0 in XQuery 1.0 omogoča tudi integracijo v Microsoftov Visual Studio in javansko razvojno okolje Eclipse. Licenca za XMLSpy 2013 je plačljiva, za preizkus delovanja in funkcionalnosti pa so na voljo brezplačne 30-dnevne preizkusne različice. Za namen te naloge smo preizkusili preizkusno različico cenejše izvedenke Professional Edition, ki vključuje večino funkcionalnosti dražje izvedenke Enterprise Edition. Kot drugi podobni urejevalniki tudi XMLSpy razvijalcu pomaga z barvnim označevanjem programske kode, številčenjem vrstic in samodejnim zapiranjem posameznih sklopov programske kode. Za sintaktično pravilnost kode med shranjevanjem skrbi validator, za pravilno in hitrejšo pisanje kode pa je na voljo pomočnik, ki ponuja imena elementov XML, že definiranih spremenljivk, funkcij (vključno s prikazom tipov in števila argumentov). Močno orodje je tudi pomočnik za odpravljanje napak (angl. debugger), ki po vzoru orodij za razvoj aplikacij v visokonivojskih jezikih omogoča vpogled v proceduro kode po principu korak-za-korakom (angl. step-by-step debugging), ki predstavlja metodo odpravljanja napak, pri kateri se izvaja le ena programska vrstica naenkrat, ali z uporabo točke ustavljanja (angl. breakpoint), ki je točka v programski kodi, na kateri namenoma ustavimo izvajanje za namene odpravljanja napak. Potek opazujemo v štirih oknih v prvem vidimo dokument s povpraševanjem XQuery z morebitnimi točkami ustavljanja, v drugem lahko opazujemo vrednost spremenljivk, tretje okno nam prikazuje sklad klicev (angl. call stack) 2. To tretje okno je možno prilagoditi, da prikazuje druge informacije, zadnje, četrto okno, pa sproti izpisuje trenutni kontekst (rezultat) v obliki dokumenta XML. To orodje je dodelano in nudi dober vpogled v proceduro v primeru izvrševanja povpraševanj XQuery razvijalec lahko celo vidi, do katerih delov dokumenta XML procedura trenutno dostopa. 2 Sklad, ki kaže na mesto, od koder je bila neka rutina poklicana in s tem zagotavlja informacijo, kam mora ta rutina predati izvajanje. Ta sklad se uporablja pri rekurzivnih klicih rutin ali v situaciji, ko rutina kliče drugo rutino. 20

32 Slika 3.1 prikazuje vmesnik pomočnika za odpravljanje napak v urejevalniku Altova XMLSpy 2013: Slika 3.1: Altova XMLSpy orodje za odpravljanje napak ("debugger"). XMLSpy je standardno in kvalitetno orodje za delo s tehnologijami XML, ki se je v različici 2013 znebilo številnih napak preteklih različic, čeprav bi se tudi na tem področju dalo narediti še več (med preizkusom se je program sesul brez očitnega vzroka) <oxygen/> XML Urejevalnik <oxygen/> XML podjetja SyncRO Soft je na voljo v treh različicah, pri katerih že ime namiguje, čemu je katera namenjena [20]: <oxygen/> XML Editor celovito orodje za razvijanje aplikacij XML in urejanje dokumentov XML, <oxygen/ > XML Developer specializirano orodje za razvijalce XML, <oxygen/> XML Author poenostavljena različica Editor, osredotočena na urejanje dokumentov XML. 21

33 Vsaka od različic je na voljo v Professional in Enterprise verziji, različica Editor pa prihaja tudi v različici Academic, namenjeni študentom in izobraževalnim ustanovam. Preizkusili smo brezplačno 30-dnevno različico oxygen/> XML Editor Academic. Poleg klasičnih funkcionalnosti, kot so barvno označevanje programske kode, številčenje vrstic in samodejno zapiranje posameznih sklopov programske kode, je zelo uporabna funkcionalnost okno, poimenovano Outline, ki v skrčenem in preglednem načinu prikazuje dokument, ki ga urejamo, vključno z deklaracijami imenskih področij, spremenljivkami in funkcijami. Za razliko od XMLSpy, kjer je večina funkcionalnosti dostopna prek številnih tekstovnih menijev, se <oxygen/> XML ponaša z veliko bolj grafičnim vmesnikom, ki sicer zahteva nekaj trenutkov privajanja, vendar pa razvijalcu ponuja veliko bolj intiutivno izkušnjo ter omogoča veliko možnosti grafičnega urejanja dokumentov (npr. orodje Tree editor, ki omogoča urejanje in izdelavo dokumentov XML prek zelo preglednega in razumljivega grafičnega vmesnika). Validacija je z vsemi temi pripomočki sprotna in trivialna. Pomočnik za odpravljanje napak, ki je tukaj neke vrste 'podprogram' in zahteva zamenjavo uporabniškega pogleda, je morda šibkejša točka tega urejevalnika omogoča sicer točke ustavljanja in pristop korak-za-korakom, vendar je pri prikazu poteka procedure manj natančen kot XMLSpy ima pa na drugi strani določene uporabne funkcionalnosti, ki jih XMLSpy ne omogoča. Naprimer s klikom vrstico v izhodnem dokumentu (ki ga je generiralo povpraševanje XQuery) nam program prikaže vrstico v povpraševalni kodi, ki je generirala izhodno vrstico. Na voljo je XQuery Profiler, ki je pri XMLSpy na voljo le v Enterprise različici, ki omogoča razvijalcu, da identificira ozka grla in druge problematične dele programske kode. Naslednja Slika 3.2 prikazuje orodje Tree editor, Slika 3.3 pa prikazuje vmesnik orodja za odpravljanje napak v urejevalniku <oxygen> XML Editor: 22

34 Slika 3.2: <oxygen/> XML Editor - orodje Tree editor. Slika 3.3: <oxygen/> XML Editor - vmesnik pomočnika za odpravljanje napak. <oxygen/> XML je doraslo orodje, ki s kvalitetnim grafičnim vmesnikom ponuja dobro uporabniško izkušnjo. Med preizkusno uporabo nismo opazili nobenih napak v delovanju, 23

35 tako da je ta urejevalnik prav gotovo dober pripomoček za vsakega razvijalca XML in XQuery Editix 2008 Odločili smo se poiskati brezplačen urejevalnik in preizkusili Editix Program je sicer plačljiv v novejših različicah, nekaj let staro različico Editix 2008 z omejenimi določenimi funkcionalnostmi pa je možno brezplačno prenesti z njihove spletne strani. Razporejenost ukazne vrstice je zelo podobna kot pri XMLSpy, se pa takoj opazijo nekatere manjkajoče funkcionalnosti pri urejanju dokumentov XML ni številčenja vrstic, ni možnosti samodejnega zapiranja posameznih sklopov programske kode, programska koda pa je označena v tako neizrazitih barvah, da jih je med seboj težavno ločiti. Na spletni strani proizvajalec navaja, da je v tej različici omogočeno urejanje povpraševanj XQuery, vendar je ta možnost v programu zaklenjena, zato je ta program za naš kontekst popolnoma neuporaben. 3.3 Podatkovne baze na osnovi XML in XQuery Preden se lotimo opisovanja konkretnih implementacij podatkovnih baz na osnovi XML, bomo najprej predstavili koncept podatkovni baz, osnovanih na XML. Slika 3.4 prikazuje arhitekturo podatkovne baze, osnovane na XML: Slika 3.4: Arhitektura podatkovne baze, osnovane na XML [12]. 24

36 Stolpci, ki jih vidimo v Sliki 3.4, so virtualni, niso fizično shranjeni in jih nakazujejo le glave stolpcev. Glavna tabela vsebuje številčne ključe do indeksov oznak, URI (angl. Uniform resource identifier; zaporedje znakov, ki identificira abstraktni ali fizični vir [4]) naslovi imenskih področij in imen atributov. Besedila (vključno s procesnimi inštrukcijami, komentarji, in URI naslovi vozlišč) in vrednosti atributov so shranjeni v ločenih tabelah, ki so referencirane v glavni tabeli. Tabela Directory vsebuje kazalce na prvi identifikator vozlišča v vsaki glavni tabeli. Več podatkov je shranjenih kot Meta Data, kot naprimer ime podatkovne baze, velikost, datum zadnje spremembe, globina drevesa in podobno. Drevo zagotavlja dostop do imenskih področij BaseX BaseX je prostodostopna, odprtokodna in platformsko neodvisna rešitev, katere osrednja funkcionalnost je čistokrvna podatkovna baza, osnovana na XML. Programu je že priložena podatkovna baza, poimenovana factbook.xml, ki novemu uporabniku omogoča, da se seznani s funkcionalnostmi programa. Obširnih funkcionalnosti program ne omogoča grafični vmesnik omogoča vklapljanje in izklapljanje posameznih oken, od katerih je osrednje okno Editor, ki omogoča urejanje dokumentov XML ali vpisovanje povpraševanj XQuery in jih izpisuje v okno Text z možnostjo izpisa v realnem času. Ostala okna so posvečena pregledu podatkov v podatkovni bazi in pregledu rezultatov povpraševanj. Podatkovno bazo lahko pregledujemo v dveh različnih drevesnih načinih, prvi je poimenovan Folder, drugi pa Tree. Podatke v tabelirani obliki nam zagotavlja okno Table, okno Plot pa omogoča številne različne grafirane prikaze podatkov podatkovne baze. Okno Map uporabniku ponuja tabelarni pogled, ki sledi arhitekturi podatkovne baze. Uporabniške akcije v enem oknu (tudi hover 3 prek določenega podatka) sprožijo akcije tudi v drugih oknih in sproti prikazujejo ustrezne podatke. Statistične in performančne podatke o povpraševanju XQuery nam izpisuje okno Query info. Zanimivo pri tem programu je, da ima poleg možnosti iskanja s pomočjo povpraševanj XQuery na voljo tudi svoj lasten iskalnik za manj vešče uporabnike. 3 Mouse hover je premik kazalca miške nad določenim delom uporabniškega vmesnika. 25

37 Naslednja Slika 3.5 prikazuje grafični vmesnik podatkovne baze BaseX in razlaga posamezne elemente grafičnega vmesnika: Slika 3.5: Grafični vmesnik BaseX. V zgornji vrstici oken so od leve proti desni aktivirana okna: Editor, Folder, Map in Plot. V spodnji vrstici oken so od leve proti desni aktivirana okna: Text, Query info, Table in Tree. Na spletni strani je na voljo zelo razumljiv Wiki dokument in uporabnik lahko hitro ugotovi, da gre za preprost in precej neposreden program brez zapletenih funkcionalnosti in obsežnega vmesnika exist-db 2.0 exist-db je odprtokodna rešitev podatkovne baze, osnovane na jeziku XML, napisana v Javi, ki je v paketu brez uporabniške podpore brezplačno snemljiva s spletne strani. Grafični vmesnik aplikacije uporabljamo prek spletnega brskalnika prek lokalnega ali oddaljenega strežnika. Osrednja točka grafičnega vmesnika je nadzorna plošča, ki 26

38 omogoča izvajanje različnih nalog, kot so nalaganje podatkov v podatkovno bazo in upravljanje uporabniških računov, vključuje pa tudi aplikacijo exide za povpraševanje po podatkih v bazi in ustvarjanje lastnih aplikacij XQuery [9]. exist-db ni le podatkovna baza, saj omogoča razvoj modularnih aplikacij, ki so enostavno prenosljive na katerokoli podatkovno bazo, ki uporablja enako standardizacijo formata modularnih paketov [8]. Gre za ambiciozno orodje, ki z možnostjo modularnega dopolnjevanja ali izvažanja lastno kreiranih modulov in z upravljanjem prek strežnika nudi napredno izkušnjo. Vmesnik je uporabniku prijazen, tudi navodila za uporabo so dovolj razumljiva tudi za popolnoma novega uporabnika, se pa občasno pojavljajo manjše napake, ki pa so bolj v obliki nejasnega delovanja vmesnika, kot pa kakšnih kritičnih napak. Kot smo že v prejšnjem odstavku navedli, ne gre samo za podatkovno bazo, saj aplikacija nudi številne primere uporabe, na katerih se lahko učimo upravljati podatkovno bazo in uporabljati jezik XQuery, na spletni strani pa celo navajajo, da aplikacija exide omogoča tudi razvojno obliko korak za korakom pomoči pri odpravljanju napak, vendar te funkcionalnosti med preizkusom ni bilo mogoče aktivirati. 27

39 4 UPORABA PROCESORJA XQUERY SAXON V tem poglavju bomo predstavili eno trenutno najbolj aktualnih orodji za delo z jezikom XQuery v visokonivojskih jezikih Java in jezikih okolja.net, to je procesor Saxon podjetja Saxonica, namenjen procesiranju jezikov XQuery, XSLT in XPath. Saxon je v letih svojega obstoja pridobil status hitrega in zanesljivega orodja, ki v veliki meri spoštuje W3C specifikacije jezikov. 4.1 Osnovne funkcije procesorja XQuery Procesorji XQuery so sistemi za efektivno pridobivanje in hranjenje podatkov XML, pridobljenih z jezikom XQuery. Tipičen procesor XQuery vsebuje: Podatkovni model. Povpraševalni model, ki definira, kako se povpraševanja procesirajo. Optimizacijski modul, ki vsebujejo različne algoritme in indeksacijske tehnike za izboljšanje zmogljivosti procesiranja povpraševanj [11]. XQuery je v osnovi predstavljen kot preprost niz znakov, zato so potrebne tehnike prevajanja, da tak niz prevedemo v izvršljivo kodo. Pri procesiranju povpraševanj sta bistveni dve fazi: Statična analiza, ki se lahko nadalje razdeli v: o analiza, o prevajanje. Dinamična evalvacija, ki se lahko nadalje razdeli v: o evalvacija, o serializacija [12]. 28

40 4.1.1 Analiza Preden se povpraševanje lahko izvrši, mora biti vhodni niz interpretiran in trasformiran v izvršljivo podatkovno obliko. Pri tem se uporablja leksikalna analiza, ki kot rezultat generira leksikalne simbole [38]. V naslednjem koraku se skozi sintaktično analizo s pomočjo gramatike generira drevo izrazov. XQuery in vsa ostala W3C priporočila temeljijo na EBNF notaciji (angl. Extended Bacus-Naur form; metajezik za opisovanje drugih jezikov [38]) in so lahko razpoznana z LL(1) razpoznavalnikom 4. Razpoznavalnik izvede sledeče korake: 1. Ustvarjanje statičnega konteksta vsebuje globalne informacije o povpraševanju, kot recimo imenska področja, spremenljivke, funkcije ali statični dokumenti. 2. Vhod je analiziran in pretvorjen v izraze, ki skupaj tvorijo drevo izrazov. 3. Sprožijo se razpoznavalne napake, če vhod ne ustreza LL(1) gramatiki ali dodatnim gramatičnim omejitvam. 4. Ker lahko funkcija kliče drugo funkcijo, ki še ni bila definirana v povpraševanju, se vse funkcije verificirajo po razpoznavanju celotnega povpraševanja Prevajanje V XQuery 1.0 je definirana formalna semantika, vendar se zaradi komplesnosti jezika ta v specifikaciji XQuery 3.0 opušča. Vse implementacije lahko izberejo svoje korake prevajanja, v kolikor rezultati povpraševanja izpolnjujejo zahteve specifikacije. Prevajanje vsebuje korake, ki poenostavljajo in optimizirajo drevo izrazov: Statične operacije so pred-ocenjene. Izrazi se prepišejo, če so njihovi argumenti vedno true ali false. Izrazi FLWOR in definicije poti se poenostavijo. Predikati se prepišejo za dostop do prostih struktur indeksacije. 4 LL(1) razpoznavalnik (angl. parser) je top-down razpoznavalnik, ki razpoznava vhod iz leve proti desni. 29

41 Neznane oznake ali atributi se odstranijo. Preverjanje statičnih tipov se izvede še preden je povpraševanje evalvirano Evalvacija V koraku evalvacije se izračuna zaporedje rezultatov izraza. Za preprosta statična povpraševanja se vsi potrebni računski koraki izračunajo pri prejšnjem koraku optimizacije, vsa ostala kompleksnejša dinamična povpraševanja pa se izračunajo v tem koraku Serializacija Ko se izraz izračuna, je potreben še korak serializacije, ki rezultat transformira v breljiv format. Ta proces je prav tako formaliziran v priporočilu W3C za specifikacijo XQuery 1.0, čeprav ta del ni obvezen za implementacijo XQuery. V takšnih primerih procesor preda rezultat v objektni obliki, naprimer v izvajanje javanskemu navideznemu stroju (angl. Java Virtual Machine) Procesor Saxon Saxon je implementacija procesorja XQuery, napisana v Javi. Podpira XQuery po specifikaciji 1.0, aktualna različica Saxon 9.5 pa celo podpira XQuery po kandidatu za priporočilo 3.0 [13] [25]. Saxon prav tako vsebuje implementacijo XSLT 2.0, XPath 2.0 in XML Schema 1.0 (verziji PE in EE). Saxon je bil prvotno zamišljen kot procesor XSLT, kasneje pa so ga prilagodili tako, da nudi podporo tudi XQuery. Implementacija je zasnovana tako, da se dve sintaktično različni kodi (XSLT in XQuery) skozi prevajanje pretovorita v uniformirano objektno kodo in na enoten navidezni stroj (angl. runtime engine). Tako iz objektne kode niti ni možno razbrati, ali je bila prevedena iz enega ali drugega jezika. 30

42 Trenutno aktualna različica je 9.5, ta pa obstaja še v štirih različnih izvedenkah [27]: Saxon-HE (Home Edition) odprtokodna rešitev, ki zagotavlja podporo jezikom XSLT 2.0, XQuery 1.0 in XPath 2.0. Zagotavlja osnovno izpolnjevanje z W3C priporočili, razen podpore shemam. Ta različica ne podpira XQuery 3.0. Rešitev je brezplačna in jo je možno prenesti s spleta. Saxon-PE (Professional Edition) komercialna rešitev s podporo razširitvam vključuje tudi delno podporo za XQuery 3.0, XPath 3.0 in dokumentne objektne modele, kot so JDOM, XOM in DOM4J. Saxon-EE (Enterprise Edition) polno-funkcionalna komercialna rešitev s polno podporo za XQuery 3.0 in XPath 3.0 ter delno podporo za XSLT 3.0. Ta različica podpira tudi sheme XML; vsebuje procesor XSD 1.0 in XSD 1.1 in omogoča shemsko procesiranje jezikov XSLT in XQuery. Saxon-CE 1.1 (Client Edition) je klient različica, ki ponuja izvajanje jezika XSLT 2.0 v brskalniku. Izvedenka bazira na izvorni kodi različice 9.3 in je prevedena v jezik JavaScript. Rešitev je v celoti napisana v Javi. Verzija za.net je narejena s prevajanjem javanske bajtne kode v Microsoftovo CIL (CIL je nizkonivojski berljiv jezik, ki ga uporablja ogrodje.net Framework). V svoji rešitvi smo uporabili različico, namenjeno ogrodju.net. Glavne komponente orodja Saxon so [25]: Procesor XSLT 2.0; uporablja se ga prek ukazne vrstice ali iz aplikacije s pomočjo vmesnika API. Procesor XPath 2.0; uporablja se ga iz aplikacije s pomočjo vmesnika API. Procesor XQuery 1.0; uporablja se ga lahko prek ukazne vrstice ali iz aplikacije s pomočjo vmesnika API. Procesor XML Schema 1.0; lahko se ga uporablja za validacijo pravilnosti shem ali pa za validacijo dokumenta glede na definicije v shemi. Uporablja se ga lahko tudi v navezi s procesorjema XSLT in XQuery. Prav tako se ga lahko uporablja prek ukazne vrstice ali iz aplikacije. 31

43 Za jezik Java je na voljo več vmesnikov API. Na voljo so JAXP, XQJ in s9api. Za okolje.net je na voljo vmesnik API, ki omogoča tesno integracijo z ostalimi storitvami v.net, posebej z razredi v imenskem področju System.Xml. Prednosti orodja Saxon pred podobnimi produkti so [13]: strogo sledenje priporočilom W3C po navedbah virov [12] in [26] je Saxon v celoti skladen s priporočilom W3C za XQuery 1.0, zanesljivost, uporabnost, zmogljivost. 4.3 Uporaba procesorja XQuery Saxon v.net Vsi razredi za uporabo procesorja Saxon v.net se nahajajo v imenskem področju Saxon.Api, ki se nahaja v knjižnici saxonapi.dll. Prva stvar, ki jo moramo v aplikaciji narediti, je, da ustvarimo primerek razreda Processor. Ta vsebuje konfiguracijske podatke o procesorju Saxon ter nekatere deljene vire. Po želji lahko ustvarimo več primerkov. Nad primerkom razreda Processor nato kličemo metodo NewXQueryCompiler, ki ustvari primerek razreda XQueryCompiler. Temu objektu lahko nato nastavljamo določene lastnosti, ki določajo statični kontekst evalvacije. Nato kličemo metodo Compile, ki kot argument prejme povpraševanje v obliki stringa ali v obliki streama ter vrača primerek razreda XQueryExecutable. Objekt razreda XQueryExecutable predstavlja prevedeno povpraševanje. Evalvacija povpraševanja se lahko izvede večkrat, bodisi v isti niti bodisi v različnih. Pri evalvaciji se nad objektom kliče metoda Load. Ta kot rezultat ustvari objekt razreda XQueryEvaluator. Temu lahko nastavimo določene lastnosti, s čimer vzpostavimo dinamični kontekst evalvacije. Za dokončanje evalvacije nato kličemo metodo Run, če kot rezultat želimo novo ustvarjen dokument XML, oziroma Evaluate ali EvaluateSingle, če kot rezultat želimo zaporedje. 32

44 Vmesnik API vsebuje razrede, ki so osnovani na podlagi podatkovnega modela XDM. Podatkovni razredi, ki jih uporablja Saxon, so: XdmValue zaporedje bodisi vozlišč bodisi atomarnih vrednosti. XdmValue lahko nastopa kot parameter povpraševanja ali kot rezultat evalvacije povpraševanja. XdmItem je podtip (deduje od) XdmValue, pri katerem je vsak primerek zaporedje dolžine 1. Nad objektom razreda XdmValue se lahko kliče metoda GetEnumeration, ki omogoča iteracijo čez elemente zaporedja. XdmNode vozlišče XDM. Omogoča dostop do večine lastnosti, ki so določena za vozlišča v XDM. XdmAtomicValue atomarna vrednost XDM. Lahko se ustvari direktno s pomočjo integer, string, double itd. objektov ali pa se ustvari prek leksografsko določenega stringa s pripadajočo definicijo tipa QName [24]. 33

45 5 OPIS STORITVE ISKALNIK AMISTV Storitev AmisTV 1.5 Leta 2007 je Amis od Telekoma Slovenije odkupil njihovo rešitev IP televizije in jo začel tržiti kot storitev Amis Televizija. Leta 2009 so se v podjetju odločili, da bodo ponudili sodobnejšo rešitev, ki bo omogočala nekatere dodatne funkcionalnosti, kot so opomniki, iskalnik, videoteka, snemalnik, napredne časovne storitve (funkciji Na začetek in Pavza) idr. Storitev so na tržišče poslali jeseni 2009 in jo poimenovali AmisTV 2.0. Za uporabo teh storitev uporabnik potrebuje Albisovo STB enoto (angl. Set-top box, tudi receiver; naprava, ki omogoča sprejemanje in dekodiranje digitalnega televizijskega signala [23]) za sprejem TV signala, uporaba na Sagemovih STB enotah, na katerih teče starejša storitev Amis Televizija, pa ni mogoča. Ker je imel Amis veliko uporabnikov, ki so že bili opremeljeni s Sagemovimi STB enotami, sodobnih funkcionalnosti pa bodisi niso potrebovali bodisi zaradi tehničnih razlogov pri njih niso bile na voljo, so se odločili za Sagemove STB enote razviti storitev AmisTV 1.5. To naj bi bila v bistvu tehnološka evolucija Amis Televizije, ki bi ohranjala osnovno jedro nespremenjeno, a z enakim videzom in uporabniško izkušnjo kot AmisTV 2.0. Postopoma pa bi se naj uvajale tudi funkcionalnosti, ki so implementirane v AmisTV 2.0. Za uporabnike Sagemovih STB enot bi se nadgradnja iz Amis Televizije na AmisTV 1.5 izvedla oddaljeno ob naslednjem zagonu STB enote. AmisTV 1.5 je prilagojen za delovanje na v Sagemovo STB enoto vgrajen spletni brskalnik ANT Fresco, ta pa ima precej omejene specifikacije. Brskalnik ANT Fresco je posebej razvit za digitalne televizije, elektronske naprave za domačo rabo, kot npr. set-top boxi, integrirane televizije, DVD predvajalniki ipd. [1].Tako je odjemalčeva stran razvita v programskih jezikih HTML 4.01, CSS 1.0 ter JavaScript 1.3, strežniška stran pa v programskem jeziku C#. Podatki se shranjujejo v Microsoftovo podatkovno bazo MSSQL. V času zaključka razvoja iskalnika po podatkih EPG so bile funkcionalnosti AmisTV 1.5 videti tako, kot jih prikazuje sledeči diagram primerov uporabe Diagram 5.1: 34

46 Diagram 5.1: Diagram primerov uporabe za AmisTV Iskalnik AmisTV 1.5 v splošnem Vpogled v programsko kodo rešitve AmisTV 2.0 ni bil mogoč, saj se je ta razvijal zunaj podjetja in z uporabo popolnoma drugačnih pristopov (kot samostoječa aplikacija) kot AmisTV 1.5 (kot aplikacija, ki teče v brskalniku z odjemalec-strežnik arhitekturo). Iskalnik uporabniku omogoča, da prek uporabniškega vmesnika s pomočjo numeričnih tipk na daljinskem upravljalcu ali prek smernih tipk ter virtualne tipkovnice brska po podatkih EPG. Možen je vnos iskalnega niza ter dvonivojska izbira žanra (žanr podžanr). Specifikacije za razvoj iskalnika AmisTV 1.5 se je pridobivalo s podrobnim opazovanjem delovanja iskalnika v rešitvi AmisTV 2.0. Slika 5.1 in Slika 5.2, narejeni na grafičnem vmesniku iskalnika AmisTV 1.5: 35

47 Slika 5.1: Prikaz vnosa iskanja v storitvi iskalnika AmisTV na levi strani lahko z virtualno tipkovnico ali s črkami na daljinskem upravljalcu vnašamo iskalni niz, v sredinskem stolpcu pa lahko rezultate omejimo z izbiro žanra ali podžanra. Slika 5.2: Iskalnik AmisTV 1.5 nam rezultat prikaže v obliki večstranskega seznama zadetkov. 36

48 Izbira (potrditev s tipko 'OK') vrstice rezultatov uporabniku omogoči vpogled v podrobnosti najdene vsebine naslov, čas predvajanja, žanr in podžanr ter opis. Uporabnik ima na izbiro vračanje na seznam rezultatov ali odpiranje izbrane oddaje oziroma dodajanje med opomnike, če se oddaja še ni pričela. 5.3 Iskalnik AmisTV 1.5 podrobneje Amisov strežnik prejme podatke EPG s strani ponudnika v obliki stisnjene datoteke, v kateri se nahajajo datoteke XML za vsak posamezni televizijski kanal. Vsaka datoteka XML vsebuje podrobne podatke o vseh oddajah posebej za približno teden dni naprej: čas začetka, naslov oddaje, opcijski izvorni naslov oddaje (v izvornem jeziku), povzetek (opis), ključne besede, žanr, opcijske avdio-video atribute. <ProgramInformation programid="crid://amis_epg/1/00051/057/ @ T22:00:00Z"> <BasicDescription> <Title xml:lang="sl" type="main">mladi veterinarji</title> <Synopsis xml:lang="sl" length="long">resničnostna dokumentarna serija vas popelje v svet mladih veterinarjev veterinarske bolnišnice Alamenda East v Denverju, kjer se le-ti srečujejo s težavami različnih živalskih vrst.</synopsis> <Keyword type="secondary">dokumentarna serija</keyword> <Genre href="urn:tva:metadata:cs:dvbgenre:2005:c:2:0:0" /> </BasicDescription> <AVAttributes> <AudioAttributes /> <VideoAttributes /> </AVAttributes> </ProgramInformation> Vsako noč se zažene modul, imenovan EpgParser, ki iz strežnika FTP (angl. file transfer protocol) sname stisnjeno datoteko, jo shrani na svoj strežniški prostor in to datoteko razpakira. Iz relacijske podatkovne baze SQL pobriše obstoječe vnose, nato pa se začne 37

49 parsanje podatkov v dokumentih XML in njihovo shranjevanje v relacijsko podatkovno bazo MSSQL. Na tak način se v času najmanjše obremenitve v bazo naložijo najnovejši podatki EPG. Diagram 5.1 prikazuje entitetno-relacijski diagram podatkovne baze AmisTV 1.5: Diagram 5.2: Entitetno-relacijski diagram podatkovne baze na AmisTV 1.5. Ti v podatkovno bazo shranjeni podatki se nato uporabljajo za različne funkcionalnosti, med drugim tudi za iskalnik. Potrebno je izpostaviti, da se v tej nalogi posvečamo le enemu primeru uporabe sistema AmisTV 1.5, in sicer iskalniku, prikazanem na Diagramu 5.3. Celotni sistem vsebuje številne primere uporabe, ki pa za to nalogo niso pomembni. 38

50 Diagram 5.3: Diagram primerov uporabe za produkcijsko rešitev z uporabo relacijske podatkovne baze SQL. Za iskanje po podatkih EPG je najprej potrebno parsanje. Naslednji Diagram 5.4 prikazuje, kako potekajo aktivnosti pri parsanju dokumentov XML in njihovo prepisovanje v podatkovno bazo na produkcijski različici z uporabo relacijske podatkovne baze. Diagram 5.4: Diagram aktivnosti pri parsanju dokumentov XML na produkcijski različici. 39

51 Pri razvoju parserja dokumentov XML je bila pomembna lastnost odpornost parserja na napake in nekonsistentnosti v dokumentih XML. Dokumenti, ki jih je Amisu zagotavljal ponudnik, so namreč pogosto vsebovali nesmiselne podatke, kot naprimer dve televizijski oddaji, ki na istem programu tečeta ob istem času, ali pa televizijski čas, kjer v dokumentu ni bilo navedene nobene oddaje ipd. V naslednjem poglavju je predstavljena rešitev, ki korak parsanja podatkov v dokumentih XML in shranjevanja v podatkovno bazo izpusti in prek povpraševanj XQuery dostopa neposredno do dokumentov XML. Iskalnik po podatkih EPG na produkcijski različici je napisan kot spletna storitev z dvema javnima spletnima metodama ter tremi zaščitenimi metodami: Public string getresult (string input, string category) glavna rutina, ki izvede povpraševanja v podatkovni bazi SQL, sestavi rezultat v ustrezni format, ki ga zna prikazati odjemalec na uporabnikovi STB enoti in ga v tipu string vrne klientu. Public string getcategoryname (string category) pomožna metoda, ki služi preprečevanju izgube podatkov o izbranem žanru med tem, ko uporabnik preskakuje med meniji. Protected int vrnikategorijo (string input) kot argument metoda prejme ime žanra tipa string, ki jo je uporabnik izbral prek uporabniškega vmesnika, vrača pa indeks številko te kategorije v podatkovni bazi. Protected string vrnikategorijo (int input) zaradi različnih uporabniških situacij (primerov uporabe) ima ta metoda obrnjeno funkcionalnost kot prejšnja. Kot argument prejme indeks številko kategorije v podatkovni bazi, vrača pa ime žanra tipa string. Protected string vrniparentkategorijo (int kategorija) posamezna oddaja ima v podatkovni bazi tuj ključ, ki določa podžanr. Iz podžanra je za pravilen prikaz v uporabniškem vmesniku potrebno ugotoviti tudi žanr, kar stori ta metoda. Sledeči diagram aktivnosti, Diagram 5.5, pa prikazuje delovanje produkcijske različice iskalnika z uporabo relacijske podatkovne baze SQL: 40

52 Diagram 5.5: Poenostavljen prikaz delovanja iskalnika po podatkih EPG na produkcijski različici. 41

53 6 ISKALNIK AMISTV 1.5 Z UPORABO XQUERY Glede na v prejšnjem poglavju opisano delovanje iskalnika na produkcijski različici z uporabo relacijske podatkovne baze SQL se je porodila nekako logična ideja poskusa branja podatkov EPG neposredno iz dokumentov XML, ki so na strežniku. S tem se vsaj na primeru uporabe iskalnika izpusti potreba po zapisovanju podatkov v relacijske tabele, s čimer bi v primeru, da bi vse storitve, ki jih ponuja AmisTV 1.5, prilagodili na uporabo jezika XQuery, tudi znižali stroške delovanja digitalne televizije, saj bi nakup in vzdrževanje relacijske podatkovne baze postala odvečna. Diagram 6.1 prikazuje, kako smo se v različici iskalnika z uporabo XQuery izognili parsanju dokumentov XML, ki je potrebno v različici rešitve, ki temelji na relacijski podatkovni bazi SQL. Diagram 6.1: Izpuščena je potreba po parsanju in zapisovanju podatkov v relacijske tabele. Prva težava, ki jo lahko opazimo, je neprimerna struktura dokumentov XML. Najpomembnejši podatki za delovanje uporabniškega vmesnika iskalnika so: ime programa, naslov oddaje, čas začetka oddaje, čas konca oddaje, opis (sinopsis) oddaje. Manj bistveni, a v uporabniškem vmesniku potrebni podatki pa so še: žanr, podžanr, številka televizijskega programa. 42

54 Dokument XML ne vsebuje imena programa, ampak je vsebovan v imenu datoteke dokumenta skupaj z (za uporabniški vmesnik) nekoristnimi podatki o času izdelave dokumenta. Torej je potrebno ime programa pridobiti iz imena datoteke. Naslov oddaje in sinopsis sta uporabno shranjena v vrednosti elementov, zaplete pa se pri času začetka oddaje. Začetek oddaje se namreč skriva v referenci CRID (angl. content reference identificator; je shema, ki omogoča referenciranje trenutnih ali prihajajočih televizijskih ali spletnih medijskih vsebin [7]), ki nima podpore za delo v.net in tako je bilo potrebno čas začetka oddaje pridobiti iz te reference. Ta referenca je videti tako: "crid://amis_epg/1/00051/047/ @ t22:50:00z" Za znakom'@' se nahaja najprej datum oddaje, nato še ura začetka. Še večja težava pa nastane s časom konca oddaje. Ta namreč ni eksplicitno naveden v dokumentu XML - v produkcijski različici se v fazi parsanja in zapisovanja v relacijske tabele dejansko kot čas konca oddaje privzame začetek naslednje oddaje na istem televizijskem programu. Vendar je za pridobitev tega podatka potreben prehod čez vse podatke, kar stori parser, v naši rešitvi pa bi bilo to nesprejemljivo zamudno. Ker se podatki o žanrih in podžanrih ter zaporedje televizijskih programov načeloma ne spreminjajo, smo jih statično shranil v dokumenta programs.xml in genres.xml. Ker iz imena datoteke XML s podatki EPG pridobimo ime programa, lahko nato z dodatnim povpraševanjem nad datoteko programs.xml pridobimo še številko tega televizijskega programa. Žanr in podžanr se v dokumentih XML nahajata v nepoznanem formatu: "urn:tva:metadata:cs:dvbgenre:2005:2:0:0:0" Težavo smo rešili podobno, kot je bila rešena na produkcijski različici, namreč z obrezovanjem niza. Številska vrednost, ki sledi znaku '2005:', določa žanr, naslednja številska vrednost pa podžanr. Na Amisu je obstajala Excel razpredelnica s številkami teh žanrov, referenciranimi na imena žanrov. Podatki iz te razpredelnice so za to rešitev prenešeni v dokument genres.xml. Iz Diagrama 6.2 je razvidno, kako smo se lotili delovanja iskalnika z uporabo XQuery. 43

55 Diagram 6.2: Diagram sodelovanja za rešitev iskalnika EPG z uporabo XQuery. Najprej se izvede aktivnost, ki gre čez celoten dokument XML, nato pa se izvedejo primerjanja ustreznosti časovne značke (ali je oddaja že pretečena ali je še vedno aktualna) in ustreznosti kategorije. Ta procedura se iterativno ponavlja za vsako datoteko XML. Ali je ta način z vidika zmogljivosti najbolj ustrezen, bomo skušali ugotoviti v poglavju osem, kjer se bomo posvetili izboljšavam. Kot je razvidno iz diagrama, se rezultati, ki so prestali kriterije iskanja, shranjujejo v strukturo XDM, poimenovano rezultat. Ker se ta struktura 44

56 polni iterativno za vsak televizijski program, je takoj jasno, da bi bila pri takšni rešitvi potrebna majhna predelava uporabniškega vmesnika. Pri produkcijski različici je namreč kriterij razporejanja rezultatov čas začetka oddaje, pri različici z uporabo XQuery pa primarno televizijski program in šele nato čas začetka oddaje. Podobno kot pri produkcijski različici je tudi različica z uporabo XQuery spletna storitev, zamišljena kot storitev, ki na enostaven način nadomesti različico z uporabo relacijske podatkovne baze SQL. Storitev ima štiri globalno deklarirane objekte, štiri javne metode in eno zaščiteno metodo. Objekti: Metode: Processor procesor, XQueryCompiler xcompiler, XQueryExecutable xexe, XQueryEvaluator xeval. Public string getresult (string input, string kategorija) glavna rutina, ki izvaja povpraševanja XQuery, klice drugih metod, ob koncu pa rezultat sestavi v format, ki ustreza formatu, ki ga vrača produkcijska različica in ki ga razume odjemalec. Osrednja funkcionalnost te metode je povpraševanje XQuery, ki je videti tako: "for $x in doc('" + trenutna_datoteka + "')/ExtendedTVAMain/ProgramDescription/ProgramInformationTable /ProgramInformation/BasicDescription where contains(string($x), '" + iskalni_niz + "') or contains(string($x), '" + iskalni_niz_z_veliko_zacetnico + "') return <result program='" + ime_televizijskega_programa + "' order='" + številka_televizijskega_programa + "'> <start>{$x/../@programid}</start> <title>{data($x/title)}</title> <synopsis>{data($x/synopsis)}</synopsis> <genre>{data($x/genre/@href)}</genre> </result>"; Protected int isprogramskashema (string ime_programa) ni nujno, da vsi dokumenti XML, ki jih imamo na strežniku, spadajo tudi v televizijsko 45

57 programsko shemo. Teh dokumentov je več, zato je potrebno preveriti, ali dokument sploh spada v programsko shemo. Metoda s pomočjo povpraševanja XQuery pogleda v dokument programs.xml, kjer je zabeležena programska shema če najde zadetek, vrne številko televizijskega programa, če zadetka ni, vrne -1: "for $x in doc('" + programska_shema + "')/programs/program where $x/label = '" + ime_programa + "' return data($x/order_epg)"; Public string vrniparentkategorijo (string kategorija) metoda s povpraševanjem XQuery pogleda v dokument genres.xml, kjer je shranjena struktura žanrov, in za podžanr v argumentu vrne ime žanra: "for $x in doc('" + seznam_žanrov + "')/genres/parent where $x/@id = '" + argument + "' return $x/@name"; Public string vrnichildkategorijo (string parent_kategorija, string child_kategorija) kot argument metoda prejme številčne identifikatorje žanra in podžanra v obliki niza. Povpraševanje XQuery iz dokumenta genres.xml pridobi ime podžanra v obliki niza: "for $x in doc('" + seznam_žanrov + "')/genres/parent/child where $x/../@id = '" + argument + "' and $x/@id = '" + child_kategorija + "' return $x"; Public bool checktimestamp (string time_extract) časovno značko oddaje primerja s trenutnim časom. 46

58 7 TESTIRANJE ZMOGLJIVOSTI»Zmogljivostno testiranje je proces določanja hitrosti ali učinkovitosti računalnika, omrežja ali programske opreme.«[14]. Zmogljivostne teste lahko razdelimo na sledeče tipe: test zmogljivosti (angl. performance test), test obremenitve (angl. load test), stres test (angl. stress test), test kapacitete (angl. capacity test) [14]. Za namene te naloge smo obe različici iskalnika, torej produkcijsko različico z uporabo relacijske podatkovne baze SQL in različico z uporabo XQuery, podvrgli testom obremenitve. Za izvajanje teh testov smo uporabili namizni računalnik. 7.1 Testiranje obremenitve V tem podpoglavju bomo definirali termin test obremenitve.»test obremenitve je proces izpostavljanja računalnika, periferne naprave, strežnika, omrežja ali aplikacije na nivo, ki se približuje zgornji specificirani meji predvidene obremenitve. Testiranje obremenitve je lahko izvedeno v kontroliranih laboratorijskih razmerah za statistično primerjavo zmožnosti različnih sistemov ali za natančno merjenje zmožnosti posameznega sistema. Testiranje obremenitve pa se lahko izvaja tudi terensko za namen pridobivanja kvalitativnih predstav, kako sistem deluje v praksi. Praktični primeri preprostih testov obremenitve so: nalaganje serije večjih datotek s spleta, hkratno poganjanje več aplikacij na računalniku ali strežniku, dodajanje več nalog tiskalniku, obremenitev strežnika z veliko količino prometa, 47

59 neprestano zapisovanje in branje s trdega diska.«[22]. V našem primeru je test obremenitve v obliki večjega števila zahtev po podatkih EPG, kar je opisano v naslednjem podpoglavju. 7.2 Testno okolje Kot strežnik za testiranje smo uporabili namizni računalnik: procesor: Intel Core 2 Duo E8200 2,66 GHz, jedri tečeta na 2,90GHz, pomnilnik: 4x 1GB DDR2-800 v dual channel načinu, teče na 181 MHz, trdi disk: 500 GB, 7200 obratov/min, 32 MB medpomnilnika, operacijski sistem: Microsoft Windows 7 SP1. Testni kontekst smo ustvarili s pomočjo orodja Visual Studio 2012 Ultimate. Zagnali smo dve instanci; v prvi smo zaganjali spletno storitev v načinu release, ki storitev požene lokalno na strežniku Microsoft IIS, v drugi instanci pa smo izvajali teste. Prevajalnik pri prevajanju v release načinu ne producira simboličnih debugging informacij. Velikost izvršljive datoteke je tako manjša, izvajanje pa posledično hitrejše [19]. V vseh testih, ki jih bomo opisali v naslednjem poglavju, smo spletni storitvi izpostavili enaki obremenitvi. Ta obremenitev ustreza skrajnemu scenariju množice 100 uporabnikov, ki vsi pošiljajo zahteve storitvi: 2 začetna uporabnika, vsakih 15 sekund se število uporabnikov poveča za 5, vsak uporabnik potrebuje 6 sekund za 'razmislek', to je čas, preden sproži naslednjo zahtevo, maksimalno število uporabnikov je 100, test se izvaja 10 minut. 48

60 Določili smo tri različne scenarije: Tabela 7.1: Scenarij 1. Ime parametra Vrednost parametra input»dexter«category»«tabela 7.2: Scenarij 2. Ime parametra Vrednost parametra input»«category»komedija«tabela 7.3: Scenarij 3. Ime parametra input category Vrednost parametra»uničevalca mitovdokumentarna serija«7.3 Testiranje Test 1 scenarij 1 nad različico z uporabo relacijske podatkovne baze SQL Tabela 7.4 in Graf 7.1 prikazujeta rezultate Testa 1: Tabela 7.4: Rezultati Test 1. Število izvedenih testov 3766 Povprečje odgovorov/sekunda 6,28 Povprečen čas za odgovor 5,86 s Minimalni čas odgovora 0,21 s Maksimalni čas odgovora 8,63 s 49

61 Graf 7.1: Časi odgovorov za Test 1. Iz rezultatov je razvidno, da storitev, ki uporablja relacijsko podatkovno bazo SQL, ob majhnem številu uporabnikov še uspe zagotavljati odgovore v realnem času, z večanjem števila uporabnikov pa se čas odgovora začne daljšati v linearno. Upoštevati je treba, da testno okolje ni namenjeno opravljanju strežniških nalog. Ob podobnih scenarijih je Amisov strežnik odgovarjal z maksimalnimi časi 0,60 s Test 2 scenarij 2 nad različico z uporabo relacijske podatkovne baze SQL Tabela 7.5 in Graf 7.2 prikazujeta rezultate Testa 2: Tabela 7.5: Rezultati Testa 2. Število izvedenih testov 7443 Povprečje odgovorov/sekunda 12,4 Povprečen čas za odgovor 0,067 s Minimalni čas odgovora 0,041 s Maksimalni čas odgovora 0,140 s Graf 7.2: Časi odgovorov za Test 2. 50

62 V tem scenariju se je storitev odzivala v realnem času in je brez težav zagotavljala odgovore Test 3 scenarij 3 nad različico z uporabo relacijske podatkovne baze SQL Tabela 7.6 in Graf 7.3 prikazujeta rezultate Testa 3: Tabela 7.6: Rezultati Testa 3. Število izvedenih testov 7444 Povprečje odgovorov/sekunda 12,4 Povprečen čas za odgovor 0,046 s Minimalni čas odgovora 0,038 s Maksimalni čas odgovora 0,130 s Graf 7.3: Časi odgovorov za Test 3. Tudi v tem testu opazimo, da se je storitev uspela odzivati v realnem času, povprečni čas odgovora je celo krajši kot v Testu Test 4 scenarij 1 nad različico z uporabo XQuery Tabela 7. 7 in Graf 7.4 prikazujeta rezultate Testa 4: Tabela 7.7: Rezultati za Test 4. Število izvedenih testov 664 Povprečje odgovorov/sekunda 1,12 Povprečen čas za odgovor 55,7 s Minimalni čas odgovora 1,76 s Maksimalni čas odgovora 83,5 s 51

63 Graf 7. 4: Časi odgovorov za Test 4. Pri tem scenariju se je storitev, ki uporablja XQuery, pri majhnem številu uporabnikov odzivala v dokaj sprejemljivem časovnem okvirju (nekje do dveh sekund), z večanjem števila zahtev pa se je čas odgovora relativno hitro linearno povečeval. Časi odgovorov so se ustalili, ko je test dosegel maksimalno število uporabnikov (100) Test 5 scenarij 2 nad različico z uporabo XQuery Tega testa ni bilo mogoče opraviti, saj se je storitev z uporabo XQuery odzivala prepočasi in strežnik je vse zahteve po 300 sekundah zavrnil z request timeout napako. Napaka se sproži, ko čas odgovora na zahtevo traja dlje, kot je strežnik pripravljen sprejeti [10] Test 6 scenarij 3 nad različico z uporabo XQuery Tabela 7.8 in Graf 7.5 prikazujeta rezultate Testa 6: Tabela 7.8: Rezultati za Test 6. Število izvedenih testov 381 Povprečje odgovorov/sekunda 0,64 Povprečen čas za odgovor 93,5 s Minimalni čas odgovora 2,72 s Maksimalni čas odgovora 147 s 52

Prirejanje in preverjanje tipov

Prirejanje in preverjanje tipov Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično povezovanje (poenostavljeno) Skrivanje Dinamično povezovanje (s skrivanjem) Fragile

More information

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Vodnik skozi Google Analytics Beta verzija 1. del prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Ta vodnik je povzetek Googe vodiča ' Tracking Code Migration Guide Switching from urchin.js

More information

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije Obrazec P-5 Specifikacije 30K250316» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije KAZALO VSEBINE 1. Predmet javnega naročila...3 1.1. SKLOP-1: STORITEV VZDRŽEVANJA ORACLE LICENČNE

More information

Sistemske zahteve za SAOP

Sistemske zahteve za SAOP Sistemske zahteve za SAOP Samostojna delovna postaja višji). icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi procesi v podjetju. V tej postavitvi je SAOP icenter nameščen na

More information

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov ABBYY rešitve za prepoznavo in klasifikacijo dokumentov preabbyy FlexiCapture 9.0. Overview. 1 doc: 10977 Lokalna prisotnost ABBYY: Moscow, Russia; Munich, Germany; Bracknell, UK; Kiev, Ukraine; Milpitas,

More information

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA POPRBAZA je namenjen večji reorganizaciji podatkov v računalnikovem spominu. Reorganizacijo narekujejo bodisi zakonske spremembe, bodisi novosti v programu. Zato je

More information

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK UDK621.3:(53+54+621 +66), ISSN0352-9045 Informacije MIDEM 39(2009)2, Ljubljana IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK Sasa Klampfer, Joze Mohorko, Zarko Cucej University

More information

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA Državni izpitni center *M16178113* SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Četrtek, 2. junij 2016 SPLOŠNA MATURA RIC 2016 M161-781-1-3 2 IZPITNA POLA 1 1 1 2 1 3 3 4 1 5 3 6 2 7 1 8 1 9 1 10 3

More information

Navodila za interaktivne naloge Bober

Navodila za interaktivne naloge Bober Avtorji dokumenta: Dean Gostiša , Lovro Podgoršek Verzija dokumentacije: 1.1 Datum in kraj: 24. 7. 2013, Ljubljana Navodila za interaktivne naloge Bober Uvod 1.

More information

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool Session:E07 GALIO - DB2 index advisor, how we implemented it and Viktor Kovačević, MSc Hermes Softlab 6th October 2009 14:15 (60') Platform: UDB / LUW OUTLINE Application & Database tuning Self made index

More information

DB2 podatkovna baza v praksi

DB2 podatkovna baza v praksi DB2 podatkovna baza v praksi Aljoša Trivan, Mikropis holding d.o.o. aljosa.trivan@mikropis.si 2007 IBM Corporation Agenda Mikropis Splošno Fleksibilnost Vzdrževanje Backup SQL objekti in SQL stavki Novosti

More information

Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript

Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript Predavanje 2 Ponovitev Predavanje 1 Naloge Uvod v JavaScript Pravila Primeri Priprava na laboratorijske vaje Pregled orodij ldos.fe.uni-lj.si >študij

More information

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Roman Gorišek Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54 v brskalniku vpišemo

More information

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Zoran Povh, IT specialist zoran.povh@si.ibm.com 2007 IBM Corporation Vsebina Kaj je Lotus Quickr? Integracija z namiznimi programi Skupinski prostori

More information

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje doc.dr. Mira Trebar 2 Vaja 1 (11.10.2010) Vaje so obvezne (delo v laboratoriju + doma) S1: Logisim MIPS procesor eno-cikelna izvedba ( logisim ) MIPS

More information

Specification and Implementation of a Light-Weight Internet Content Delivery Platform

Specification and Implementation of a Light-Weight Internet Content Delivery Platform University of Ljubljana Faculty of Computer and Information Science Marko Čeferin Specification and Implementation of a Light-Weight Internet Content Delivery Platform DIPLOMA THESIS First cycle professional

More information

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54

More information

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode RMZ - Materials and Geoenvironment, Vol. 53, No. 2, pp. 221-227, 2006 221 Calculation of volume with the use of NTF method Izračun volumnov z uporabo NTF metode Milivoj Vulić 1, Anes Durgutović 2 1 Faculty

More information

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Ernest Štukelj Razvoj jezika za iskanje, povezovanje in predstavitev podatkov DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU SMER PROGRAMSKA OPREMA

More information

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF RMZ Materials and Geoenvironment, Vol. 55, No. 1, pp. 127-134, 2008 127 How we calculate volume with the use of NTF method Kako izračunamo volumen z uporabo metode NTF An e s Du r g u t o v i ć 1, Mi l

More information

Hitra rast hranjenih podatkov

Hitra rast hranjenih podatkov Tomaž Borštnar - član uredništva računalniške revije Monitor od začetka (oktober 1991; ne-pc okolja (Unix, etc) - sodelavec YUNAC in ARNES od začetka - postavil in upravljal večino strežnikov na SiOL -

More information

PODATKOVNE BAZE NOSQL

PODATKOVNE BAZE NOSQL PODATKOVNE BAZE NOSQL Aljaž Zrnec, Dejan Lavbič, Lovro Šubelj, Slavko Žitnik, Aleš Kumer, Marko Bajec Univerza v Ljubljani, Fakulteta za računalništvo in informatiko, Laboratorij za podatkovne tehnologije,

More information

Obravnava izjem (exception handling)

Obravnava izjem (exception handling) Obravnava izjem (exception handling) Ko umre programer Uvod Ne glede na to, kako dobro smo načrtovali nek program, je še vedno možnost, da lahko med izvajanjem pride do kakšnih napak. Dobro načrtovan program

More information

Primerjava orodij za razvoj mobilnih aplikacij

Primerjava orodij za razvoj mobilnih aplikacij UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miloš Jovanov Primerjava orodij za razvoj mobilnih aplikacij DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike Strojni vid pri tehnoloških meritvah formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike formati slike in branje slike slika je običajno

More information

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Q: Do You made a backup before upgrade? A: Only cowards make backups! Q: Do You made a backup before upgrade? You z malo - you A: Only cowards make backups! Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies.

More information

Imenski prostori, poti in kazalci v XML

Imenski prostori, poti in kazalci v XML Imenski prostori, poti in kazalci v XML Iztok Savnik 1 Imenski prostori v XML XML dokument lahko uporablja atribute, elemente in definicije, ki se nahajajo v drugih datotekah Modularna zasnova Ne sme priti

More information

Naslavljanje v IP. Miran Meža

Naslavljanje v IP. Miran Meža Naslavljanje v IP Miran Meža Omrežje vseh omrežij Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Omrežje vseh omrežij Usmerjanje prometa: poznati

More information

Osnove algoritmov in podatkovnih struktur I (OAPS I)

Osnove algoritmov in podatkovnih struktur I (OAPS I) Univerza v Ljubljani Fakultetazaračunalništvo in informatiko Igor Rožanc Osnove algoritmov in podatkovnih struktur I (OAPS I) 2. letnik, VSP Računalništvo in informatika, vse smeri PROSOJNICE ZA 8. PREDAVANJA

More information

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Nejc Poljanšek Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Rok Bertoncelj. Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Rok Bertoncelj. Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Rok Bertoncelj Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Marko Bajec Ljubljana, 2010 IZJAVA O AVTORSTVU

More information

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Navodila za vaje pri predmetu Internetne tehnologije VAJA 2 Dušan

More information

Uvod v svetovni splet

Uvod v svetovni splet Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo Uvod v svetovni splet Računalništvo in informatika, GR-UNI, GR-VSŠ Tehnična dokumentacija in informatika, VKI-UNI št. leto 2007/08, 1. semester

More information

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Matjaž Reberc UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Diplomsko delo Maribor, junij 2011 I Diplomsko visokošolskega strokovnega študijskega programa UPORABA SILVERLIGHT 4

More information

Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami

Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Rajnar Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami DIPLOMSKO DELO NA UNIVERZITETNEM

More information

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi RMZ Materials and Geoenvironment, Vol. 54, No. 3, pp.419-425, 2007 419 UDF for volume calculation with the use of NTF method Lastne Excel funkcije za izračun prostornin po NTF metodi Mi l i v o j Vu l

More information

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Nejc Župec Twitter Bootstrap in razvoj spletnega repozitorija za Cacti DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI

More information

Prometno načrtovanje xdsl

Prometno načrtovanje xdsl Prometno načrtovanje xdsl 1 Kazalo Prometno načrtovanje naročniške zanke Prometno načrtovanje MSAN Izbira agregacijskega modela Izbira opreme 2 Potrebe po pasovni širini Zahtevana pasovna širina na uporabnika

More information

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 1 Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 2 družina standardov, ki opisujejo delovanje lokalnih (LAN) in mestnih (MAN) omrežij delo opravljano v delovnih skupinah več na

More information

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nedim Husaković Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL DIPLOMSKO DELO VISOKOŠOLSKI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Transakcije v MariaDB/MySQL (transakcija A)

Transakcije v MariaDB/MySQL (transakcija A) Transakcije v MariaDB/MySQL (transakcija A) Pomožni elementi In [1]: # pyodbc import pyodbc try: cn1.close() except: pass # MariaDB/MySQL conn = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=localhost;DATABASE=sandbox;UID=tu

More information

APLIKACIJE ZA SOCIALNA

APLIKACIJE ZA SOCIALNA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Boštjan Lotrič APLIKACIJE ZA SOCIALNA OMREŽJA DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Zoran Bosnić Ljubljana, 2011 Rezultati

More information

Razširitve CMS z lastnimi moduli

Razširitve CMS z lastnimi moduli Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Čepar Razširitve CMS z lastnimi moduli DIPLOMSKA NALOGA NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Andrej Brodnik Ljubljana 2014 Rezultati

More information

Sistem za dinamično upravljanje izgleda klienta IPTV

Sistem za dinamično upravljanje izgleda klienta IPTV Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Jurečič Sistem za dinamično upravljanje izgleda klienta IPTV DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

Osnove programskega jezika C++

Osnove programskega jezika C++ Osnove programskega jezika C++ 1 O S N O V E P R O G R A M I R A N J A V C + + U P O R A B A P R O G R A M A CODE::B L O C K S programski stavek Nekaj osnovnih pojmov (1.) definicija, deklaracija, ukaz

More information

Vgradnja objektno usmerjenih gradnikov v programski jezik PINS

Vgradnja objektno usmerjenih gradnikov v programski jezik PINS Univerza v Ljubljani Fakulteta za računalništvo in informatiko Toni Kocjan Turk Vgradnja objektno usmerjenih gradnikov v programski jezik PINS DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE

More information

Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto. Maturitetna seminarska naloga

Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto. Maturitetna seminarska naloga Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112, 8000 Novo mesto Maturitetna seminarska naloga Šolsko leto 2007/08 Avtor: Mentor: prof. Albert Zorko Novo mesto, 10.7.

More information

Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI

Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI Univerza v Ljubljani Fakulteta za računalništvo in informatiko Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI diplomska naloga na visokošolskem

More information

SPLETNA APLIKACIJA ZA SPREMLJANJE PODATKOV O FILMIH

SPLETNA APLIKACIJA ZA SPREMLJANJE PODATKOV O FILMIH Simon Cedula SPLETNA APLIKACIJA ZA SPREMLJANJE PODATKOV O FILMIH Diplomsko delo Maribor, december 2012 I Diplomsko delo univerzitetnega študijskega programa SPLETNA APLIKACIJA ZA SPREMLJANJE PODATKOV

More information

Analiza uporabe GWT za razvoj spletnih aplikacij

Analiza uporabe GWT za razvoj spletnih aplikacij Univerza v Ljubljani Fakulteta za računalništvo in informatiko Saša Makorič Analiza uporabe GWT za razvoj spletnih aplikacij DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN

More information

Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server

Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Uroš Kastelic Izdelava aplikacij s podporo delovnih tokov za okolje SharePoint Server DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Ljubljana,

More information

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matej Rojko Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku MAGISTRSKO

More information

Tehnike spletnega luščenja podatkov

Tehnike spletnega luščenja podatkov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Peter Grlica Tehnike spletnega luščenja podatkov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Strukturirani poizvedovalni jezik SQL

Strukturirani poizvedovalni jezik SQL Računalništvo Strukturirani poizvedovalni jezik SQL Danijel Skočaj, Evelin Vatovec Krmac Univerza v Ljubljani Fakulteta za pomorstvo in promet Literatura: Evelin Vatovec Krmac, Računalništvo in informatika,

More information

Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django

Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Damjan Vidonja Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJ RAČUNALNIŠTVO IN IINFORMATIKA

More information

Programski jezik Java

Programski jezik Java Programski jezik Java Interno gradivo za predmet Algoritmi in programski jeziki (4. letnik) ArrayList (neprečiščeno besedilo) ArrayList Java class ArrayList(java.util.ArrayList) je hiter in za uporabo

More information

Navodila za uporabo izdelkov programske opreme Microsoft

Navodila za uporabo izdelkov programske opreme Microsoft Navodila za uporabo izdelkov programske opreme Microsoft Kazalo Navodila za konfiguracijo odjemalca za e-pošto Outlook Splošno 3 Nastavitev poštnega predala s protokolom MAPI v odjemalcu Outlook 2007 s

More information

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO MATJAŽ MRGOLE OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV DIPLOMSKO DELO UNIVERZITETNEGA ŠTUDIJA Mentor: doc. dr. Boštjan Murovec Ljubljana,

More information

Jernej Vidmar. Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko

Jernej Vidmar. Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Jernej Vidmar Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM

More information

Spletni urejevalnik JSON datotek s podano vsebinsko shemo

Spletni urejevalnik JSON datotek s podano vsebinsko shemo Univerza v Ljubljani Fakulteta za računalništvo in informatiko Marko Struna Spletni urejevalnik JSON datotek s podano vsebinsko shemo DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

Program za avtomatsko preverjanje algoritmov napisanih v programskem jeziku C++

Program za avtomatsko preverjanje algoritmov napisanih v programskem jeziku C++ Univerza v Ljubljani Fakulteta za računalništvo in informatiko Tadej Golobič Program za avtomatsko preverjanje algoritmov napisanih v programskem jeziku C++ DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Dean Črnigoj. Izdelava odjemalca NFS za Windows DIPLOMSKO DELO

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Dean Črnigoj. Izdelava odjemalca NFS za Windows DIPLOMSKO DELO UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Dean Črnigoj Izdelava odjemalca NFS za Windows DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Funkcije, neskončna zaporedja in java

Funkcije, neskončna zaporedja in java Funkcije, neskončna zaporedja in java LALGinar, 4. oktober 2013 Luka Fürst Funkcijsko programiranje Funkcije kot osnovni gradniki funkcije kot argumenti funkcij funkcije, ki vračajo funkcije Funkcijsko

More information

SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI

SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Miha Pavlinek SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI Diplomska naloga Maribor, marec 2008 I FAKULTETA ZA ELEKTROTEHNIKO,

More information

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF)

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF) Univerza na Primorskem FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE ZAKLJUČNA NALOGA Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle

More information

Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah

Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Malej Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Aleš Čadeţ SISTEM ZA ANALIZO OBISKOV SPLETNEGA MESTA

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Aleš Čadeţ SISTEM ZA ANALIZO OBISKOV SPLETNEGA MESTA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Aleš Čadeţ SISTEM ZA ANALIZO OBISKOV SPLETNEGA MESTA DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU LJUBLJANA, 2009 UNIVERZA V LJUBLJANI FAKULTETA

More information

Primerjava izvornega in hibridnega razvoja mobilne aplikacije

Primerjava izvornega in hibridnega razvoja mobilne aplikacije UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Luka Vidmar Primerjava izvornega in hibridnega razvoja mobilne aplikacije DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH

RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO David Sedlar RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH DIPLOMSKO DELO NA UNIVERZITETNEM

More information

Razvoj aplikacij na platformi Google App Engine

Razvoj aplikacij na platformi Google App Engine UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Jure Vrščaj Razvoj aplikacij na platformi Google App Engine DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Janez Demšar Ljubljana,

More information

Spletno luščenje podatkov z uporabo Pythona in knjižnice BeautifulSoup

Spletno luščenje podatkov z uporabo Pythona in knjižnice BeautifulSoup UNIVERZA V LJUBLJANI NARAVOSLOVNOTEHNIŠKA FAKULTETA ODDELEK ZA TEKSTILSTVO, GRAFIKO IN OBLIKOVANJE Spletno luščenje podatkov z uporabo Pythona in knjižnice BeautifulSoup Seminarska naloga Ime in priimek:

More information

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA VISOKOŠOLSKI STROKOVNI ŠTUDIJ Računalništvo in Informacijske Tehnologije POROČILO PRAKTIČNEGA IZOBRAŽEVANJA V Cloudkick, Inc. - San Francisco, Kalifornija, Združene Države Amerike Čas opravljanja od 26.09.2010

More information

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku Univerza v Ljubljani Fakulteta za računalništvo in informatiko Tilen Faganel Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVO

More information

Mobilna aplikacija za pregled informacij o prometu v Sloveniji

Mobilna aplikacija za pregled informacij o prometu v Sloveniji UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Majzelj Mobilna aplikacija za pregled informacij o prometu v Sloveniji DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Ljubljana,

More information

Testiranje spletne aplikacije z orodji Selenium in Windmill

Testiranje spletne aplikacije z orodji Selenium in Windmill UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Bogdan Urdih Testiranje spletne aplikacije z orodji Selenium in Windmill DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY

RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Borut Radi RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY Diplomsko delo Maribor, julij 2015 Fakulteta za elektrotehniko,

More information

Mobilna aplikacija za pregledovanje slik visokih ločljivosti

Mobilna aplikacija za pregledovanje slik visokih ločljivosti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Anže Sršen Mobilna aplikacija za pregledovanje slik visokih ločljivosti DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Nataša Knez. Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze

Nataša Knez. Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Nataša Knez Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze DIPLOMSKO

More information

Aplikacija za prikaz prostorskih podatkov

Aplikacija za prikaz prostorskih podatkov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Rok Klemen Aplikacija za prikaz prostorskih podatkov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVA IN INFORMATIKE

More information

Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris

Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Repas Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE

More information

LATEX. Ponovimo: Kaj je to logično urejanje? Peter PEER. Ima sintakso, torej je sila podobno programiranju!!!

LATEX. Ponovimo: Kaj je to logično urejanje? Peter PEER. Ima sintakso, torej je sila podobno programiranju!!! LATEX Peter PEER http://www.lrv.fri.uni-lj.si/~peterp/temp/latex.pdf Fakulteta za računalništvo in informatiko Ponovimo: Kaj je to logično urejanje? Ima sintakso, torej je sila podobno programiranju!!!

More information

Navodila za nastavitev varne povezave po protokolu SSH

Navodila za nastavitev varne povezave po protokolu SSH Datum: 28. 9. 2010 Navodila za nastavitev varne povezave po protokolu SSH 1. Pogoji za zagotovitev varne povezave po protokolu SSH Za uspešno zagotovitev in nastavitev varne povezave po protokolu SSH je

More information

Razvoj Windows Store aplikacij

Razvoj Windows Store aplikacij Univerza v Ljubljani Fakulteta za računalništvo in informatiko Elmedin Osmanagić Razvoj Windows Store aplikacij DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Aplikacija za podporo delovanja svetovalcev

Aplikacija za podporo delovanja svetovalcev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Primož Cigoj Aplikacija za podporo delovanja svetovalcev DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: doc. dr. Rok Rupnik Ljubljana,

More information

Knjižnjice krmiljenje zaslona Uvod v sistemsko programiranje

Knjižnjice krmiljenje zaslona Uvod v sistemsko programiranje Knjižnjice krmiljenje zaslona Uvod v sistemsko programiranje Standardna knjižnjica C Funkcije z nizi int strlen( s) Vrne število znakov v nizu s (brez nultega znaka). char *strchr(s, c) Vrne kazalec na

More information

Enterprise modelling with UML

Enterprise modelling with UML Elektrotehniški vestnik 68(2 3): 109 114, 2001 Electrotechnical Review, Ljubljana, Slovenija Enterprise modelling with UML Aljaž Zrnec, Marko Bajec, Marjan Krisper University of Ljubljana, Faculty of Computer

More information

Sistemske zahteve za Saop icenter

Sistemske zahteve za Saop icenter Sistemske zahteve za Saop icenter Izdaja 27 080 13 20 info@saop.si www.saop.si 18.6.2018 Sistemske zahteve 2 Samostojna delovna postaja icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi

More information

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Slobodan Jovanović Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov

Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Roman Orač Uporaba strežnika SharePoint za vodenje poteka dela pri izvajanju kompleksnih projektov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI

More information

Aleksander Berus Analiza ogrodja MonoGame za medplatformni razvoj iger na mobilnih platformah

Aleksander Berus Analiza ogrodja MonoGame za medplatformni razvoj iger na mobilnih platformah Univerza v Ljubljani Fakulteta za računalništvo in informatiko Aleksander Berus Analiza ogrodja MonoGame za medplatformni razvoj iger na mobilnih platformah DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor:

More information

Časovno omejevanje dostopa do interneta

Časovno omejevanje dostopa do interneta Univerza v Ljubljani Fakulteta za računalništvo in informatiko Edi Medvešček Časovno omejevanje dostopa do interneta DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN

More information

ORODJE ZA TESTNO VODEN

ORODJE ZA TESTNO VODEN UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO GREGOR STAMAĆ ORODJE ZA TESTNO VODEN RAZVOJ JAVASCRIPT APLIKACIJ DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU MENTOR: PROF. DR. SAŠA DIVJAK LJUBLJANA,

More information

Oddaljen dostop do namiznega računalnika

Oddaljen dostop do namiznega računalnika UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Siniša Grubor Oddaljen dostop do namiznega računalnika DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje.

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Delo z datotekami Razred File Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Deklaracija objekta File poteka tako: File ime = new File(pot_do_datoteke_in_ime);

More information

Izdelava hibridnih mobilnih aplikacij z ogrodjem Ionic

Izdelava hibridnih mobilnih aplikacij z ogrodjem Ionic Univerza v Ljubljani Fakulteta za računalništvo in informatiko Janez Čadež Izdelava hibridnih mobilnih aplikacij z ogrodjem Ionic DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

C in Java. Šolski center Celje Splošna in strokovna gimnazija Lava. Raziskovalna naloga. Mentor: Mojmir KLOVAR, univ. dipl. inž.

C in Java. Šolski center Celje Splošna in strokovna gimnazija Lava. Raziskovalna naloga. Mentor: Mojmir KLOVAR, univ. dipl. inž. Šolski center Celje Splošna in strokovna gimnazija Lava C in Java Raziskovalna naloga Mentor: Mojmir KLOVAR, univ. dipl. inž. Avtorja: Staš ŽNIDAR 4.F Jurij REPAR 4.F Celje, marec 2006 Kazalo Kazalo...

More information

Primerjava dveh ogrodij za izdelavo grafičnih uporabniških vmesnikov: Windows Presentation Foundation in Windows Forms

Primerjava dveh ogrodij za izdelavo grafičnih uporabniških vmesnikov: Windows Presentation Foundation in Windows Forms UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Kaja Krnec Primerjava dveh ogrodij za izdelavo grafičnih uporabniških vmesnikov: Windows Presentation Foundation in Windows Forms DIPLOMSKO

More information

TI C2000: Družina za vgrajene (embedded) aplikacije

TI C2000: Družina za vgrajene (embedded) aplikacije CPU MIPS RAM (words) ROM (words) Flash (words) BootROM (words) Event Manager CAP/QEP TIMER PM(CMP) ADC TIMER Resolution 12 # ofchan 16 Conv time McBSP EXMIF atch Dog SPI SCI (UART) CAN Volts (V) # I/O

More information

Predelava javanskega navideznega stroja za štetje ukazov zložne kode

Predelava javanskega navideznega stroja za štetje ukazov zložne kode Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nikolaj Janko Predelava javanskega navideznega stroja za štetje ukazov zložne kode DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information