Meeskond "Söörlösed"

From ICO wiki
Jump to navigationJump to search

Plaan

Teeme väga hajusa rakenduse ehk veebiteenuse mis omakorda tarbib veebiteenust. Plaan järgmine: EMHI pakub iga tunni aja tagant tasuta ilmainfot oma mõningatest vaatlusjaamadest Lehel: http://www.emhi.ee/index.php?ide=32,1255 Seal on link http://www.emhi.ee/ilma_andmed/xml/observations.php kus värskelt mõõdetud ilmaandmed on kättesaadavad 10 minutit peale igat täistundi.

Meil on plaan tekitada veebiteenus, mis vastavalt sisestatud GPS koordinaatidele ja kuupäev-kellaajale kuvab ilmainfo. Ilmainfo kuvamiseks peame esmalt tekitama XML faili mõõtejaamade kohta. Jaamad, mis meie XML faili lähevad peavad vastama alljärgnevale kahele tingimusele:

  • 1. Iga jaam peab olema jaamade listis, mis on kirjas

http://www.emhi.ee/ilma_andmed/xml/observations.php failis (s.t tema mõõteandmed edastatakse iga tunni tagant)

Esmalt peame valmis tegema n.ö staatilise ehk siis käsitsi sisse löödud XML faili meid huvitavate (punkt 1. olevate) jaamade koordinaatidega. Teise XML faili saame eelpool nimetatud lingilt: http://www.emhi.ee/ilma_andmed/xml/observations.php XSLT abil paneme need 2 kokku - seda esitame oma XML-i pähe.

Edasi on meil plaan kirjutada 2 C# juppi.

  • 1. Programm, mis hakkab iga tunni tagant EMHI käest ilmaandmeid küsima ja neid andmebaasi kirjutama.
  • 2. Veebiteenus, mis saadud kuupäeva-kellaaja ja Eesti piires olevate koordinaatide abil arvutab välja ilmaandmed.

Ilmainfo väljaarvutamiseks kasutaks esialgu kahe lähima jaama vahel lineaarset interpoleerimist. S.t see võiks käia nii: N: Roomassaare jaamas on 1 kraad sooja ja Virtsu jaamas on 4 kraadi sooja. Nende andmete põhjal tahan teada, palju Kuivastus on sooja. Olgu Roomassaare-Virtsu vahemaa 80 km ning Kuivastu-Virtsu vahemaa 15 km. Roomasaarest -Virtsu tõuseb temp. iga kilomeetri kohta 3/80 kraadi, seega saan välja arvutada suvalise punkti temperatuuri, mis jääb Roomassaare-Virtsu vahele. Et Kuivastu on 15 km Virtsust-Roomassaare poole, siis lahutan 4-(15*3/80)=4-45/80=4-0,55=3,45 kraadi.

XML

Jaamade koordinaatide XML

Jaamade koordinaadid koos õhutemperatuuriga HTML-i XSLT abil

XSLT, mis teeb valmis meie XML-i kasutades koordinaatide XML-i ja EMHI reaalaja XML-i

Meie XML, (selle kohta saab arvustuse kirjutada ;)

Meie XML Schema

Veebiteenus

Teenuse meetodite koodifail on see https://www.dropbox.com/sh/st7yxaxwt48bc2c/5RsKTgySU-/koguja/ilmaTeenus/servIlm.cs


Teenuse koguprojekt asub siin koos andmebaasi varundusfailiga https://www.dropbox.com/sh/st7yxaxwt48bc2c/JwxAHWKM9P

Kasutajate haldamiseks on loodud ASP.NET Membership andmebaas, mis sisaldub EMHI.bak failis ja WCF'ile sai selle kasutamiseks õigused ka antud, mis nähtub App.config failidest nagu näiteks siin: https://www.dropbox.com/sh/st7yxaxwt48bc2c/DLp70MYYF8/koguja/WCFilmaKlient/app.config Muuhulgas sisaldab eelpool mainitud servIlm.cs meetodit kasutajanime järgi viimase logimisaja pärimiseks, rohkema kasustajastatistikaga me käesolevas töös ei tegelenud.

Klientrakendus

Temperatuuri saamiseks vajasime rakendust, mis annaks näiteks klikates GPS koordinaadid, mis oleksid sisendparameetriteks meie teenusele. Seepärast on vormi sisse istutatud Google kaart.

Kaardil klõpsates ilmub kaardile vastavalt lähimate ilmajaamade andmebaasist viimase kättesaadava ilmaandmete järgi jaamade kauguse järgi interpoleeritud temperatuur.

Kui teil pole aega/tahtmist/võimalust kogu projekti oma arvutitesse püsti ajada, siis võin koolis näidata, et see päriselt ka töötab :)

Päevik: XML

18.03 Reget tuleb välja kontseptsiooniga, mida teha, Anneli nõustub, et on uhke asi küll.

22.03 Reget jaamade XML koordinaatide faili valmis. Annelile jäi nuputada kuidas see ilma andmetega XSLT abil kokku panna. Reget saadab ka mäidise muutuja kasutamisest.

27.03 Anneli katsetus teha XSLTd, mis näitaks kahe XMLi dokumendi sisu, läheb aia taha, sest selline trikk ei ole XML sissejuhatavas teemas, veebiotsingud päädivad programmide leidmisega küll C#, Javast ja jutuga XPathist.

28.03. Reget avaldab näidst andes saladuse, kuidas kaht XMLi ühte siduda. Anneli kirjutab XSLT lõpuni valmis.

03.04 Reget paneb ette, et nüüd võiks teha ka XSD ja töö esitada. Lõpuks saab ta seda siiski ise teha.

Annelile jääb teiste tööde retsenseerimine.


Päevik: veebiteenus

01.05 koguneme, et tekitada XML failist andmebaas LINQ päringute abil. Koguja nimelise konsoolirakenduse Program.cs all on väljakommenteerituna see kood, mis tõstis XML failist andmed baasi. Teiseks tegime ka programmijupi, mis jälgib EMHI kodulehel (http://www.emhi.ee/ilma_andmed/xml/observations.php)iga tunni tagant tekkivaid uusi ilmaandmeid ja kogub need meie andmebaasi sellisel moel, et EMHI ilmaandmete esimese elemendi atribuut timestamp on baasis ILM tabeli primaarvõtmeks ja kogu XML on salvestatud tekstina ühte lahtrisse. Vahepeal jäime LINQga nats jänni ja helistasime õppejõule ning nõudsime kohest ärkamist ja märkamist. Üritasime panna ka windowsi Task Scheduleri arvuti käimise ajal iga tunni tagant ilma-andmeid baasi koguma, aga Anneli kopeeris kogu projekti koodi teise kohta ja tegi paranduse kunagi hiljem.

Lisasime ka vastavalt õppefilmile WCF Service Library, mille nimeks sai ilmaTeenus, mille all arendame teenusekoodi ja ..., mille nimeks sai ilmaHost, ning häälestasime hosti vastavalt õppevideole teenuseklassi tarbima. Lõime ka ka WCF kliendi, mille nimeks sai ilmaKlient, et oleks võimalik teenust turvaliselt tarbida.

Olles poolteist tundi vaadanud turvamise videot ning jõudnud sellega 12, minutisse, läksime laiali, olles kokku leppinud, et Reget tegeleb vahepeal funktsionaalsete meetodite väljamõtlemisega ja Anneli katsub turvaosa ära teha.

05.05 takerdus Annelil teenuse turvamine salapärase IMetadataExcange veateate taha, mille tekkepõhjuseks oli lõppkokkuvõttes hajameelselt koostatud hosti web.config-i secureBehavior, millest juhuslikult puudusid serviceMetadata ja serviceDebug.

12.05 toimuski Regeti ja Anneli ühisjõul ülalmainitud vea parandamine ning Regeti meetodite lisamine projekti (taidaKoordinaadid, sordiKoordMas, leiaLahimad, interpoleeri) ning lõpliku teenuse programmeerimine. Reget helistas ka õppejõule, et küsida, kuidas saaks andmeid niimoodi klassifailis hoida, et neid iga kliendi puhul poleks vaja uuesti andmebaasist pärida, kuid lõpptulemusena sai "static" meetodite nimetustest ära kustutatud ja jäi nii, et iga uue kliendi puhul päritakse kõik andmebaasist otsast peale. Lisatud said veel meetodid leiaLahimAeg, mille puhul otsustasime, et kuna kasutaja tõenäoliselt mingi minevikuilma vastu huvi ei tunne, oleks meil baasist vaja lihtsalt viimaseid ilmaandmeid. Arendatud sai ka meetod getTemp, mis hangib ILM baasis leidvast XMList kahe lähima ilmajaama temperatuurid ning interpoleerib need üheks. Anneli kirjutas tegevused päevikusse ning tema ülesandeks jäi vaadata turvamise video lõpuni ning vaadata kõik üle ning kommenteerida.

Retsensioonid

Unusual Suspects https://wiki.itcollege.ee/index.php/Talk:Meeskond_%22Unusual_Suspects%22

Kolmas https://wiki.itcollege.ee/index.php/Talk:Meeskond_%22Kolmas%22_2012