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.

Retsensioon .NOT meeskonna poolt

C# & Windows Forms klientrakendus:

Sel korral uuendasin andmebaasi enne rakenduse avamist ning väga tore oli näha, et andmebaasi oli lisatud hulganisti andmeid. Kasutajaliides on samaks jäetud, mida on rõõm näha. Administraatorina sisse logides näidatakse kohe kõik registreeritud kasutajad ette. Kõiki kasutajaid kuvades võiks olla ka veerg, mis kuvab seda kas kasutaja on tavakasutaja või admin. Väga kerge oli leida kõiki lennujaamasid, mis asuvad (näiteks) Pariisis. Tundub, et rakendus kuvab neid nüüd õigesti. Ühe vea leidsin ma kontinentidega seotult. Nimelt kui valida ükskõik millise kontinendi ning seejärel Riikide valikust "kõik riigid", tuleb exception (programm ei leia 'xml2.XML' faili kaustas 'C:\airports\') ja programm jookseb kokku. Lennujaama ei saa lisada ilma riikideta kontinentidele, kuna neil pole riike ega linnasid lisatud ning rakendus nõuab, et kõik väljad oleksid täidetud. Aga Euroopasse ja Põhja-Ameerikasse töötas kontinendi lisamine edukalt. Latitude ja Longitude järgi otsimine töötab ka edukalt. Samuti on Longitude ja Latitude validatsiooni paremaks tehtud. Enam ei jää nende maksimaalseteks väärtusteks ebareaalne 700, juhul kui sisestada sinna arv, mis on suurem kui 700, vaid Latitude maksimaalseks väärtuseks jääb 90 ning Longitude maksimaalseks väärtuseks 180. Üks suhteliselt häiriv asi on see, et administraator saab iseennast kustutada andmebaasist. Peale iseenda (kasutaja, millega sisse logiti) kustutamist andmebaasist jäin sisse logituks ning isegi login staatuse näitaja akna paremal üleval servas ütleb, et olen selle kasutajaga sisse loginud. Ikka hüppab välja üks messagebox, mille sisuks on ainult kasutaja ID ning peale selle sulgemist teavitatakse, et kasutaja on edukalt kustutatud. Samuti võiks olla nupukene juures kasutajate nimekirjal, millega saaks muuta kasutaja administraatori staatust. Üks pisiasi, mis häiris, on see, et välja logides pannakse kogu rakendus kinni. Tore oleks siiski kui mindaks tagasi sisselogimise vaatesse. Suureks probleemiks on see, et ei kontrollita kas kasutaja ning parool klapivad andmebaasis, kuna ma sain sisse logida kasutajaga, keda pole baasi lisatud ning suvalise parooliga (küll õnneks ainult tavakasutaja rollis, kuid siiski). Õnneks kui kasutajanimi on administraatori oma ning parool on vale, logib rakendus sisse ainult tavakasutaja vaatega. Koodi poole pealt võiks olla kommentaare ning StaticMethods failis on natukene häirivalt välja kommenteeritud koodi. Samuti jäi mõistmatuks see, mille jaoks on vaja kontinentidele lühendeid ning rahvaarvu, riikidele lühendeid ja rahaühikuid. Plussid: Kasutajaliides on kena, otsing töötab (mingil määral), lennujaama lisamine töötab edukalt, kasutajate kustutamine töötab enamjaolt (iseenda kustutamine pole just kõige toredam feature), lennujaamade kustutamine töötab, Latitude ja Longitude järgi otsing töötab väga kenasti, andmed andmebaasis on väga asjalikud Miinused: Otsides kõiki riike crashib rakendus kokku, admin saab iseennast kustutada, sisse saab logida igaüks, välja logides pannakse rakendus niisama kinni (nupu tekst on pisut eksitav), kasutajate admin-staatuse haldamine võiks olla pisut parem

PHP klientrakendus:

Klientrakenduse sain tööle ainult nii hästi, et kasutajaliides töötab. Kui mingi query teha, siis sain kohe Fatal errori, kuna teenus ei tööta isiklikus Enoses. Kasutajaliides ise näeb kena ning minimalistlikult funktsionaalne välja (kuigi tundub, et disain ise pole meeskonna enda poolt tehtud, vaid kusagilt mujalt võetud). Textboxis ja nupud on lehel loogilistes kohtades. Mõned kirjavead on sisse tulnud, kuid need ei häiri üldpilti. Inglise ja eesti keelte vahel seigeldes ei teki probleeme. Segaseks jääb see, mille jaoks on textbox ning nupp, mis selle kõrval on, sisuga "GO". Kahjuks ei mõista ükski meist piisavalt PHP-d, et teenus tööle hakkaks. JQuery autocomplete-ga oleks saanud teha otsingut palju lihtsamaks (linna nime kirjutamise käigus oleks soovitatud vastavaid linnasid). Options (eesti keeles Valikud) all on minu enda arust pisut tagasihoidlikult liigitatud need lisafunktsioonid: Olled Linn lehel, ongi ainukene valik lennujaamade otsing linnas; Riikide lehel olles pakutakse linnasid riigis ja lennujaamasid riigis; Kontinentide lehel pakutakse riike kontinendil ning lennujaamu kontinendil; see kõik võiks olla pisut nähtavamal kohal olla, sest algselt ei tundunudki, et sellised lisavõimalused olemas on.

Retsenseerijateks olid Meeskond ".NOT" liikmed