Meeskond "Unusual Suspects"

From ICO wiki
Revision as of 15:47, 2 June 2012 by Alumberg (talk | contribs) (→‎akaver)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Meeskond

Denis Veltson, Anu Kuusmaa, Mari Lehis, Alvar Lumberg

Idee

Luua rakendus Edelaraudtee sõiduplaanide haldamiseks.

Projekti kood

Projekti koodi koduks on https://github.com/dsour/veebirakendus_kt1

Esimene faas

XML

https://github.com/dsour/veebirakendus_kt1/blob/master/Unusual_Suspects/soiduplaan.xml

XSD

https://github.com/dsour/veebirakendus_kt1/blob/master/Unusual_Suspects/soiduplaan.xsd

XSLT sõiduplaanide kuvamiseks

https://github.com/dsour/veebirakendus_kt1/blob/master/Unusual_Suspects/soiduplaan-tabelina.xslt

Retsensioonid

Söörlösed

Arvustatud XML: https://wiki.itcollege.ee/index.php/Meie_XML,_%28selle_kohta_saab_arvustuse_kirjutada_;%29

Nii XML kui ka kogu projekt on hästi läbi mõeldud. Idee - EMHI teenuse abil koordinaatide järgi otsitava ilmainfo teenus - on väga praktiline ja nagu näha selle järgi, kuidas seda on alustatud, ka täiesti teostatav. Loomulikult on ilmateenuste valdkonnas olemas konkurents, aga koolitöö tegemise mõttes ei ole see primaarne, millega arvestada. Idee arvutada lähimate jaamade kauguste järgi keskmist ilma on igatahes tore.

Kui jõuda XMLi juurde, siis esiteks on see kenasti valideeruv http://validator.w3.org/ abil. XML on üles ehitatud selgesti. Info on elementideks ja atribuutideks liigitatud mõistlikul kombel. Näha pole midagi liigset. Mida aga võiks lisada, on sõnaline ilma kirjeldus - nt kas sajab midagi või on ilm selge, mis http://www.emhi.ee/ilma_andmed/xml/observations.php lehel on tag’i “phenomenon” all ingliskeelsena olemas. Lehel http://www.emhi.ee/index.php?ide=1,359,737,1206 on olemas ka väljendite eestikeelsed tõlked, mida saaks kasutada. Kahjuks pole seda infot alati lisatud, kuid vahel siiski.

XMLi ülesehituse kohalt on veel skeemifailil põhinev küsimus. Nimelt on koordinaatide puhul arvestatud kraadide arv laiuskraadidel 0-89 ning pikkuskraadidel 0-179, minutite ja sekundite arv aga igaks juhuks ühe võrra reaalsest suuremana ehk 0-60. Ega suurt vahet pole, aga ikkagi tekib küsimus, miks 0-60, mitte 0-59... Ja kui juba näidata kõiki laius- ja pikkuskraade (s.t kõiki ühel maailma veerandikul), siis miks mitte juba 0-90 ja 0-180? Aga asja sisuliselt küljelt on see norimine. Hea töö!

akaver

https://wiki.itcollege.ee/index.php/Unusual_Suspects_retsensioon_akaver_XMLile

Unusual Suspects retsensioon akaver teenusele

Teine faas: veebiteenus

https://github.com/dsour/veebirakendus_kt1/downloads Kasutajate andmebaasi loomist käsitlevad CreateDB-nimelised failid.

Peamine teenusefail, kust saab käivitada "start without debugging" käsuga testkliendi, on XmlScheduleService.svc.cs.

Retsensioonid

Söörlösed

Retsenseeritava projekti asukoht https://www.dropbox.com/sh/st7yxaxwt48bc2c/JwxAHWKM9P ja teenuse koodifail https://www.dropbox.com/sh/st7yxaxwt48bc2c/5RsKTgySU-/koguja/ilmaTeenus/servIlm.cs

Projekti dokumentatsioonist nähtub, et meeskond on teinud tihedat ja edukat koostööd ja julgelt õppejõu poolt tudengitele lubatud konsultatsiooniaega kasutanud. WIKI's on kronoloogiliselt kirjas kõik olulisemad kohtumised ja ülesannete jaotus, mis on töö käigus välja kujunenud.

Projekti allalaadimine ja käivitamine osutus paraku keerukamaks kui oleks soovinud - Dropbox'is on kenasti üleval küll andmebaasi varudnusfail ja kõik üksikud projektifailid, kuid kõiki faile kokkupakituna, mida korraga arvutisse laadida, ei leidnud. Seepärast jäi projekti retsenseerimise käigus realiseerimata plaan teenuseid Visual Studio testkliendiga testida ja leppida tuli koodifailide lugemisega.

Teenuse koostamisel on kinni peetud õppejõu poolt väljatöötatud metoodikast, soovitustest ja tööle esitatud nõuetest – projektifailid on liigendatud teenuse-, hosti- ja rakenduse alamkaustadesse. Teenuse koodifail servIlm.cs on hästi loetav, varustatud piisava hulga kommentaaridega ja loodetavasti ka töötab vastavalt. Kohati tundub kommentaare isegi liialt olevat, sest nende vahelt on keeruline programmikoodi leida. Realiseeritud on kasutajatehaldus ehk teenuse kasutajaid on võimalik tuvastada, hallata nende õigusi/rolle rakenduse kasutamisel, ning pidada kasutussstatistikat kasutajate lõikes. Teenuses on meetodeid, mis on kasutatavad nt. Ainult administraatoriõiguses kasutajatele, nt. GetTemp. Andmete pärimiseks baasist on kasutatud Linqut ja jääb loota, et päringud ka toimivad.

Nuriseda saaks jaamadevahelise temperatuuride arvutamise metoodika üle, sest see ei ole kuigi täpne. Aga paistab, et töö autorid teavad seda ka ise, märkidest kommentaaridesse „algoritm töötab kõige paremini, kui objekt jääb täpselt kahe jaama vahele“. Olukorra parandamiseks soovitakski kasutada võimalusel mitte ainult kahe lähima jaama temperatuuri, vaid nelja lähima, erinevas ilmakaares asuva jaama temperatuure. Kuna jaamade koordinaadid on teada, peaks see idee poolest teostatav olema.

Kolmas faas: klientrakendus

Jätkuvalt: https://github.com/dsour/veebirakendus_kt1/downloads

Retsensioonid

Söörlösed

Söörlöste projekti eriti tugevaks küljeks, mida on mainitud varemgi, on koodi arusaadavus tänu Anneli kommentaaridele. Lahti on selgitatud kõik tähtsamad kohad - mida mingi meetod teeb; kus erinevad koodifailid üksteisega suhtlevad; kus tulevad sisse vormielemendid (nt label nimega lKraadid jne) jne. Meie meeskond mainis juba teenuse retsensioonis, et projekti reaalne käivitamine oli kahjuks natuke keeruline. Seda enam oli koodi mõistmisel kasu headest kommentaaridest.

Teenuse funktsionaalsus on peaasjalikult koondatud C#-faili "form1.cs" ja faili "kaart.htm", kus asuv javascript suhestab kaardi kuvamise ja klikkide püüdmise C#-koodiga (ja selle kaudu teenusega). Lisaks on olemas sisselogimisaken, mis on ühendatud kasutaja üle arvepidamise funktsionaalsusega ehk kõik, mida töö juures vähegi nõuti või millele vihjati, on ellu viidud.

Javascripti-osa on lühike ja konkreetne: laetakse üles ja seadistatakse Google'i kaart, valitakse selline kursor, mis lubab kasutajal intuitiivselt mõista, et nüüd võiks hakata klikkama, ja lisatakse lihtne eventListener. Kliki järel kutsutakse koordinaatide põhjal väja C# meetod. Kõik on väga lihtne ja elegantne.

Form1.cs on samuti konkreetse ja loogilise ülesehitusega - seadistatakse vorm ja lipik, millel hakatakse kuvama temperatuure. Eraldi funktsionaalsusega jupp, kus reaalselt lipikule tekst kirjutatakse, asub ka kenasti eraldi meetodis. Pöördumine teenuse poole on samuti asjakohane ja lihtne: tehakse sisendandmete vajalikud teisendused ja pöördutakse teenuse poole.

Nagu meie meeskond mainis ka loengus, on koodi juures väikeseks puuduseks segakeelsus - osad muutujate ja meetodite nimed on eesti-, osad inglisekeelsed.

Märkuse tahaks teha klientrakenduse kujundusliku poole pealt. Hetkel on temperatuurid kuvatud viisil, mis ei ole kergesti eristatav kaardi taustast - samasugune must peen kiri heledal taustal nagu kaardi enda tonaalsus ja tekstid. Nagu näha koodist, on mingi hetkel kujunduse nähtavamaks muutmist ka katsetatud (väljakommenteeritud "this.lkraadid.BackColor = Color.Blue" faili Form1.cs real nr 56). Ilmselt ei oleks see konkreetne tulemus jäänud kuigi ilus, aga oleks võinud edasi katsetada.

Üldjoontes on aga mulje väga hea. Nagu oli hea juba idee ise, nii on hea, lihtne ja elegantne ka klientrakenduse kood.

akaver

Andres kirjutas kliendirakenduse Windows Phone 7 mobiili OSile. Rakendus näitab EAMK'i võistluste kalendrit mõnusalt minimalistlikult (must ja valge) ja samas stiilselt. Valides nimekirjas võistluse on võimalik sama meeldivalt näha ka lisainfot valitud võistluse kohta. Kui nüüd (eestlastlikust kadetusest) natuke norida, siis oleks võinud lahendada ka nõutud võistlejate registri :) . Samas on näha, mis OS'i Andres igapäevaselt kasutab.

Koodi peale vaadates on näha, et inimene ei kirjuta koodi teine päev ja selle kohapealt võin ainult öelda, et Best Practice on igati kasutuses. Võiks ju viriseda, et kood on kommenteerimata, kuid teades kaua autor on koodi kirjutanud, siis on see täiesti loomulik, et lisajutu kirjutamine ei käi asja juurde.

Ja siiski .... oleks Andres võinud, puhtalt õppe eesmärgil, natuke kommentaare kirjutada. Selle eest võtan 1 tugriku maha. Kokku tuleb tugrikuid siiski 10.

Mõeldud-tehtud

  • 20.03.2012 - Denisil tuli mõte luua Edelaraudtee sõiduplaanide kasutamise rakendus.
  • 23.03.2012 - Mari tegi esialgse XML-faili
  • 28.03.2012 - Denis kompunnis Mari XMLi ja VSi projekti kokku ja asi läks githubi.
  • 29.03.2012 - Denis genereeris XSD ja algatas XSLT
  • 30.03.2012 - Ühiste jõududega said (vist) kõik osalised oma VSid github'iga suhtlema. Anu ja Denis tegid XSLTs paar comboboxi
  • 01.04.2012 - Anu tegi veel ühe XSLT, mis kuvab sõiduplaanid html'is.
  • 09.04-10.04 - Alvar ja Anu said maha retsensioonidega.
  • 21.04.2012 - Alvar tegi hoogtöö korras valmis teenuse, mis oskab serveerida peatuste nimekirja, serveerida liinide nimekirja, näidata liini peatusi koos aegadega ja näidata konkreetse peatuse väljumisi.
  • 19.05.2012 - Lahendamata on kasutajate haldamise küsimus. Mari ja Anu tegelevad lahenduse otsimisega.
  • 20.05.2012 - Mari tekitas kasutajate haldamiseks andmebaasi ja tegi vajalikud muudatused veebi konfiguratsiooni failis. Enne tähtaja kukkumist võiks projektis olevad failid kuidagi süstematiseerida. Eks näis, kes, kas ja kuidas.
  • 22.05.2012 - Anu asub tegema klientrakendust vormirakenduse vormis. Denis tutvub Windows Phone'i võimalustega.
  • 23.05.2012 - Päeva kolmandal tunnil saab Anul valmis klientrakendus, mis otsib ühest dropdown-menüüst lähtejaama, kuvab teises sellele vastavat sihtjaamade valikut ning otsib reise. Kuvatakse jrg 24h reisid ajalises järjekorras alates otsingu hetkest, jrg kuupäeva reiside järel on märge "homme". Seejärel saab otsida ka tagasireise.
  • 24.05.2012 - Denis annab projektile viimase lihvi ja hajutab süsteemi lõplikult. Teenus ja klient paiknevad nüüd eraldi solution'ites, et saaks teenuse eraldi käima tõmmata ja klient siis temaga ühenduda.
  • 28.05.2012 - Mari kirjutas midagi retsensiooni-laadset Söörlöste teenusele. Edasi jätkab Alvar akaver'i teenusega, Anu Söörlöste ja Denis akaver'i kliendiga.