Talk:Meeskond "HM"

From ICO wiki
Jump to navigationJump to search

Loodud on lennujaamade XML fail, mis on tehtud kombineerides olemasolevaid vabavaralisi lennujaamade andmebaase. Idee tundub olevat kasulik ning huvitav. Kasutusel on kuus loogilist dimensiooni, mis on enam kui ülesande püstituses on nõutud. Atribuute on kasutatud parajalt, kuid kontinent tag pole oluline ega vajalik, kuna lennujaamade joaks on tähtis riik. Kui lennukiga lennata siis pole oluline, kas inimene vahetab kontinenti. Oluline on mis linnast mis linna lennata. Samas kontinent võiks olla ka, et lihtsamini riike eraldada. Rahvaarv igal kontinendil pole ka oluline, kui arvestada, et tegu on lennujaamade andmebaasiga. Riik tag’is olevad raha ja rahanimi on suhteliselt ebaolulised arvestades, et tegu on jällegi lennujaamade andmebaasiga. Pigem võiks riigi ID kõrval olla atribuudina riigi nimi. Linnadel on ID’ks linna nimi ning eraldi välja toodud ka nimi tag’ina. Kaks korda sama asja pole vaja välja tuua. Lennujaamade ID välja toomine on hea, sest seda ID’d kasutatakse rahvusvaheliselt lennujaamade- ja turismiinfosüsteemides. Samuti on väga hea, et välja on toodud GPS koordinaadid. Nii on võimalik andmebaasist otse võtta lennujaamade asukoht. Kood on ühtlaselt ja loogiliselt kirjutatud, pole erinevaid suuri ja väikeseid tähti, vaid on kasutatud ühtset stiili. Välja arvatud root elemendi puhul, kus element <Maa> algab suure tähega. Kahjuks pole koodi aga kommenteeritud, mis teeb selle lugemise natukene raskemaks.

Retsenseerijateks oli Meeskond ".NOT"

Veebiteenuse Retsensioon

Valminud teenus omab kasutajate poolset sisselogimist, mida on näha teenuse käivitamisel, kui küsitakse kasutajanime ja parooli, mille otsimiseks õnneks eriti kaua ei läinud, sest andmebaasi uurides selgus, et koos andmebaasi loomise skriptiga oli 'by default' tehtud ka kasutaja 'Administraator', mille sain kätte ühe lihtsa SELECT päringuga. Põhjalikumal andmebaasiga tutvumisel selgus, et pole tehtud lennujaamasid ja kontinente, mis võib-olla oleks võinud koos andmebaasi loomise skriptiga kaasa tulla, kuid Administraatori rollis olev kasutaja saab neid ise lisada.

Algul tundus, et lennujaama sain ilusti lisatud kasutades Administraatori paneelis Lisa lennujaam funktsionaalsust. Kontrollides üle SELECT päringuga ei olnud seda lennujaama andmebaasis. Ning kaldun arvama, et ainuüksi lennujaama nimest, lühendist ja koordinaatidest jääb väheks, kuna lennujaamu saab otsida kontinentide, riikide ja linnade järgi. Või on see rakendus piisavalt arukas, et paigutab koordinaatide järgi automaatselt lennujaama vastavasse riiki ning linna?

Peale kontinentide lisamist andmebaasi tundus, et lennujaamade otsimine hakkas justkui tööle, kuid kuna riike ning linnasid pole veel lisatud andmebaasi, siis tulemuste tabelisse tuli imelik "lennujaam": ID on 1, Nimi on "puudub", Latitude ning Longitude on 0 ning lühend on tühi.

Peale mõnede kontinentide, riikide, linnade ning lennujaamade lisamist andmebaasi tundus, et otsing hakkab tööle, kuid riigid ning linnad on kuidagimoodi valesti seotud kontinentidega. Enda arust sisestasin kõik õigesti SQL päringutega (kontrollisin üle mitu korda), kuid enda sisestatud Eesti sai seotud kuidagi Aafrika kontinendiga, kusjuures linnadest ainult Tallinn (lisasin ka Tartu, seda pole üldse näha). Ehk tundub et iga riigiga on seotud üks linn (õigesti), kuid kontinentidega on valesti läinud. Ning ka siis ei tööta otsing õigesti/üldse, annab tulemuseks ikka lennujaama mille ID on 1, nimi puudub jne.

Longitude ja Latitude valideerimine töötab osaliselt. Tähti ega stringe küll ei saa kirjutada textbox'i, kuid tuleks võtta Latitude maksimaalseks väärtuseks 90 ning minimaalseks -90 (nagu on kaartide peal, s.h. Google Maps); Longitude maksimaalseks väärtuseks on sel juhul 180 ning minimaalseks -180. Kui sisestada käsitsi arv, mis on suurem kui 700, siis jääb väärtuseks sinna 700, kui sisestada arv, mis on väiksem kui 700 ning suurem kui 0, siis jääb vastuseks see arv koos komakohtadega. Komakohtade ümardamisega ei tundu olevat probleeme: kui kirjutada arv väiksema täpsusega kui 10 kohta peale koma, siis lisatakse nullid otsa arvule ning kui on täpsus suurem kui 10 koma-kohta, siis ümardab õigesti arvu selle täpsuseks. Kui sisestada arv, mis on negatiivne (ehk näiteks -4), siis muutub see väärtus 0-ks.

Koodi on natukene liiga vähe kommenteeritud ja sellest tulenevalt läheb mõni kord natukene kaua, et hakata aru saama koodist. LINQ päringutel soovitaksin soojalt kasutada First() meetodi asemel FirstOrDefault() meetodit, kuna kui päringust tagastatakse null, siis võib programm kokku joosta kui kasutatakse First() meetodit. Seda on õppejõud maininud mitmetel kordadel.

Andmebaasi kohta mainiks ära nii palju, et kõikidel tabelitel võiks olla uuendamise ja loomise kuupäevade atribuudid, sest siis saaks parema ülevaate sellest, mis on andmebaasis toimunud (ehk millal kanti andmed sisse, millal andmeid uuendati, millal eemaldati jms).

Kasutajate haldamine on natukene poolik. Oleks tore kui saaks kasutajate andmeid ka muuta (parool, isAdmin jms). Samuti ei saa kasutajaid luua teenuse kaudu. Aktsepteeritavam oleks, kui seda saab teha kasutaja ise sisse logimise aknas, sest hetkel toetub asi puhtalt andmebaasile ligi pääsevale inimesele. Teenuse kasutajate ja kasutusstatistika üle ei saa arvet pidada, see on üks nõuetest veebiteenusele. Failid ise on kõik kenasti puhtad, et neis ei ole välja kommenteeritud vana ja/või mitte töötavat koodi ning trepitud on koodi kenasti.

Töötavad asjad: Kasutajate nimekiri, lennujaamade laiuskraadide validatsioon, kuvab riigid/linnad/kontinendid dropdown menüüs kui need on lisatud andmebaasi Mitte töötavad asjad: lennujaamade otsing (nii kontinendi/riikide/linnade järgi kui ka laiuskraadide vahemikus), lennujaama lisamine formi kaudu, kasutajate kustutamine, lennujaamade kustutamine.

Retsenseeris Meeskond ".NOT" liikmed

Klientrakenduse retsensioon

by Meeskond "Harold" (disclaimer: retsensiooni kirjutas User:Anroots oma subjektiivsel arvamusel ja heade kavatsustega, püüdes jääda võimalikult poliitiliseks)

Live demo

Veebiliides

Esmalt tagasiside praktikumis kuuldu/nähtu põhjal. Esimese asjana hakkas silma kujundus. Öeldakse, et kujundus ei mängi tehniliste katsetuste puhul rolli, olen sellega enam-vähem nõus; siiski tuleks oma tahtmist selgelt väljendada. Mis ma sellega öelda tahan on järgmine: kui disainerit pole võtta ja projekt ei lähe turustamisele on kõige parem mõte võtta mõni vabavaraline kujundusraamistik (CSS framework) ja kasutada selle võimalusi. Teie poolt valitud kujundus tundus ebamugavalt suurena ning jäi sisutühjaks.

Edasi sarnasel teemal: kasutajaliidese elementide paigutuse ja väljanägemisse võiks natuke panustada. Näiteid: Avalehe otsingu nupp võiks olla samal real sisestuskastiga. Tekstid (tabeli pealkirjad, stringid) võiksid alata suure tähega ning olla valitud keeles, mitte andmebaasi kujul. Inimesed on emotsionaalsed olevused ja võtavad otsuseid tihti vastu tunnete, mitte loogika põhjal; eks õpetata seepärast ju ka äripsüholoogiat. Igasugustes prototüüpides on mõnikord tähtsam väljanägemine kui see, et väiksem funktsionaalsus töötaks. Ebameeldiv esmakogemus kasutajaliidesega võib saada põhjuseks miks mina, külastaja, paaril esimesel saidil/rakendusel viibinud sekundil juba Back nuppu otsin.

...veel nurinat, navigatsioon: menüüd (city/country/continent/advanced, samuti paremas tulbas olev analoog) on liiga keerukad. Keerukad just selles mõttes, et ekraan on infot täis. Vaadakem Google esialgset kasutajaliidest, üks otsingukast ja valmis. Teie otsingufunktsionaalsus, mis hetkel on alamlehtedele peidetud erineb tegelikult vaid ühe kriteeriumi poolest, seega oleks loogiline ta ka kenasti ühte kohta kokku panna.

Admin-liides

Jällegi, esimese paari sekundi muljest rääkides: mulle tundus, et olin sattunud lennujuhtimiskeskusesse, sest Windows Forms Admin liides oli sedavõrd keeruka väljanägemisega. Siis süvenesin natukene ja sain aru, et tegelikult on lihtne funktsionaalsus paigutatud kõik ühe lehe peale ja keerulist pole seal midagi. Siiski - esmamulje. Andmete sisestamine admin liidesest töötas, aga võiks jällegi lihtsam olla. Mingisugused auto-complete tekstboxid, rippmenüüde asemel näiteks aadressiotsingu kast, mis Googlest abi küsib... või midagi sellist.

Meeldis see, et oli mõeldud kahe andmeallika peale, esmalt andmebaas ja redundancy XML fail... kuid nagu küsimusest selgus, oli XML-iga siiski natuke probleeme, nimelt just sünkroniseerimine andmebaasiga. Päriselt kasutuses olevas rakenduses oleks see lubamatu viga.

Kood (PHP)

  1. Kood on kommenteerimata
  2. Miks on kasutatud hardcoded väärtusi?
  3. Kasutatud mõningaid (vaieldavalt) halbu praktikaid: globaalsed muutujad, kihtide (MVC vms) puudumine, konfiguratsiooni hoidmine otse koodis (punkt 2), veatöötluse puudumine

Arvan, et sellisel kujul olev kood on raskesti hooldatav, loetav ning laiendatav. Näeksin meelsasti vaadete, loogika ja andmeallika eraldamist. Koodi ei olnud kerge lugeda ja mõista, kasuks tuleks ka suurem reavahetuste ja loogeliste sulgude kasutamine. Meeldis, et kasutusel oli konventsioon muutujate nimetamisel ning nimed olid ingliskeelsed.

Kas koodi turvalisusele on mõeldud? Nii alloleva teenuse kontekstis kui operatsioonisüsteemi osas, mis PHP rakendust jooksutab.

Juhumõtted

  • Google Maps, mis kuvatakse lennujaamade asukohtadega, võiks olla interaktiivne.
  • Lennujaama andmetele annab igasuguseid põnevaid linkimisi teha, näiteks otsida nime/aadressi järgi välja selle jaama Wikipedia artikkel vms
  • Parema menüü otsingukast ei tööta
  • Lehel võiks olla tervitus-, tutvustus- ja abitekstid, samuti kontakt e-mail (mis mõningates kohtades on igas avaldatud rakenduses kohustuslik)
  • Otsing paistab problemaatiline, mängisin sellega natuke erinevaid sisendandmeid (nii vigaseid kui õigeid) kasutades ja sain üllatavaid tulemusi
  • HTML ei valideeru

Kokkuvõtteks

Idee on iseenesest korralik. Kuigi lennujaamade otsingut on kindlasti realiseeritud juba mitmel erineval korral sobib selline ülesandepüstitus aine konteksti. Meeskond sai valmis enamjaolt töötava veebiteenuse ning seda kasutavad klientrakendused.

Üldmuljet rikkusid avastatud hooletusvead nii kujunduse kui testimata/lõpetamata funktsionaalsuse osas, samuti eksis retsensent koodi lugedes ära, sest kood oli kommenteerimata.

Vabandused otsese ning karmi kriitika eest. Hakkasin lihtsalt algusest kirjutama ning panin kõik mõtted ausalt kirja. Loodan, et sellise retsensiooni mõttega läbilugemine annab Teile midagi kasuliku nii tehnoloogilises- kui ärimaailmas.