Talk:Hubris
Veebiteenuse ja klientrakenduse retsensioon meeskonna VariableMoods poolt
Klientrakenduse retsensioon
Meeskond Hubris on õppeaine, Võrgurakendused II: hajussüsteemide ehitamine, raames loonud klientrakenduse projekti, kasutades Microsoft Windows ASP.NET MVC 5 tehnoloogiat ja Model View Controller (MVC) arendusmustrit. Klientrakenduse puhul on tegemist lihtsa ja üldiselt selge veebiliidesega, kus on võimalik kasutajal sisse logida, lisada postitusi ja vaadata teiste poolt lisatud postitusi. Klientrakendus kasutab kontrollerites andmete pärimiseks osaliselt veebiteenust, kuid osaliselt pöördub otse alternatiivse andmebaasi poole, näiteks PostType kontrolleri edit actioni puhul ning selle tulemusel tekivad rakenduses tõsised vead. Seetõttu saab küll uut PostType luua, kuid muutmine, kustutamine ning detailvaade ei funktsioneeri. Vaadetes on väljade --pealkirjad võetud otse mudeli väljanimede järgi, selle asemel võiks kasutada displayname annotatsioone mudelites. Ka klientrakenduses kuvatakse igale sisseloginud kasutajale sõltumata temale määratud kasutajarollides kõiki administraatori vaateid (see tähendab, et kasutaja saab koheselt ligipääsu ja muutmisvõimaluse kõikide teiste kasutajatega seotud andmetele). Klientrakenduses on kasutusel tugevalt tüübitud vaated ning on selle jaoks loodud ka kõik vajalikud vaatemudelid. Vaatemudelite mappimine toimub aga otse kontrollerites - viisakas oleks selline funktsionaalsus teisaldada eraldi kihti. Samuti on kasutusel ühe sama kontrolleri raames mitu erinevat vaatemudelit - teatud juhul on see õigustatud, kuid näiteks create ja edit puhul ei ole kindlasti vajalik eraldi vaatemudelite olemasolu ning sellest tulenevad näiteks erinevused nõudmistes postistuste või kommentaaride teatud väljade piirangute osas (vt eelpool mainitud anomaaliaid). Lisaks tasuks mõelda ka edasise arendustegevuse hõlbustamiseks kõikvõimalike stringide "hardcodemise" asemel vastavate ressursifailide kasutuselevõttu, mis võimaldaks hiljem ka vajadusel erinevate keelte tugesid. Andmete töötlused ja filtreerimised võiksid samuti olla tõstetud eraldi äriloogika kihti, mitte toimuda kontrollerites, nagu see hetkel on.
Veebiteenuse retsensioon
Meeskond Hubris on õppeaine, Võrgurakendused II: hajussüsteemide ehitamine, raames loonud veebiteenuse projekti, kasutades Microsoft ASP.NET Web API 2 tehnoloogiat ja MVC arendusmustrit. Veebiteenuse puhul on tegemist lihtsa veebiteenusega, kus kasutajad saavad luua isikliku konto peale mida on neil võimalik lisada, muuta ja kustutada erinevaid andmeid andmebaasist. Antud juhul siis erinevaid raamatuid, filme, muusikat ja mänge.
Projektis on koodi poole pealt arenduses lähtutud Code-First tehnoloogiast, kasutades ära Entity Frameworki võimalusi. Tegemist on kindlasti hea ja kiire lahendusega selliste väikeste projektide loomiseks, samuti aitab see paremini mõista erinevate olemite vahelist suhtlust ning vajadusel saab kiiresti sisse viia ka vajalike muudatusi. Veebiteenuse arenduse raames on samuti ära kasutatud erinevaid arendusmustreid peale code-first lähenemise. Olemas on repositooriumid ja ühine unit of work, mis hõlbustab andmete pärimist andmebaasist. Kuigi Viki lehel lahenduse üldkirjelduses on meeskond maininud, et veebiteenus peaks tagastama minimaalse, kuid kõige vajalikuma informatsiooni, siis hetkel ei ole olemas äriloogika kihti selleks vaid kõik andmed päritakse korraga ilma piiramata. Sellise filtreerimise olemasolu aitaks ka kindlasti pikemas perspektiivis parandada veebiteenuse jõudlust. Olemas veebiteenuses puuduvad hetke seisuga DTO mudelite kasutus, siinpuhul soovitaksime julgelt need kasutusele võtta, et piirata üleliigsete andmete serialiseerimist ja deserialiseerimist JSON kujul. Andmebaasi mudelid on üldjoontes hästi koostatud. Mudelitel on olemas väljadel atribuutide piirangud, kuid võiks lisada veel sõne pikkuse piirangud Post ja Comment mudelite Body väljadele, mis hetke seisuga kasutavad maksimaalset süsteemi poolt lubatud võimalikku pikkust. Positiivne on ka, et meeskond on kasutusele võtnud aine kursuse raames etteantud identity laiendus süsteemi, mis võimaldab kasutajaid ja rolle siduda teiste tabelitega. Antud lahendus on kenasti realiseeritud. Logimine ja registreerimine toimub läbi veebiteenuse laitmatult. Sellegipoolest ei ole kasutajahaldusel rõhku pandud turvalisusele. Kõiki kasutajaid on võimalik pärida ja nende andmeid näha ning muuta. Lisaks ei ole veebiteenus tööle pandud HTTPS protokolli peale, mis samuti vähendab veebiteenuse kasutamise turvalisust. Meeskond ei ole oma veebiteenuses realiseerinud kasutajate ja kasutusstatistika üle arvepidamist kasutajate lõikes. Kindlasti mõjuks ka väga positiivselt kasutajate päringute piiramine veebiteenuse poole, selline tegevus aitaks ära hoida erinevaid kahtlaseid tegevusi pahatahtlike osapoolte poolt. Peamised must have funktsionaalsused on täidetud nagu näiteks posituste vaatamine nimekirjana ja üksik vaates, posituste lisamine ning kustutamine. Posituste puhul nende muutmine, hindamine ja raporteerimine ei tööta. Üldjoontes töötab veebiteenus turvamata ja olemuselt lihtsal kujul. Kontrollerid on loodud kasutades Visual Studio Scaffolding tehnoloogiat ja läbi on viidud ainult mõningased peamised muudatused nagu näiteks, et andmeid küsitakse läbi Unit of Worki mitte andmebaasi contexti.
Tegi meeskond VariableMoods
Kuupäev: 02. juuni 2015
XML retsentsioon meeskonnalt Liisa ja Poisid
- XML on üldjoontes suhteliselt kena ja lihtsasti mõistetav. XML koodis ei ole üleliigset pahna ja kood on ilusti trepitud. CDATA-s olev informatsioon on hea ja kongreetne. Töö vastab nõuetele. Likes ja dislikes võiks kuidagi teistmoodi lahendatud olla, kuid praeguna on ka okei.
- XSD on hea. Koodis on kasutatud unsignedInt-i, mis on antud koodi puhul täiesti sobilik. Jällegi, kood vastab nõuetele ja sellega ei tohiks tekkida probleeme tulevikus.
- XSLT koha pealt, kõik mis on, tundub täiesti korralik ja hea. Esimene kuvab ilusti välja kõik mis on xml-is. Teine kuvab kõik raamatud ja kolmas kõik, millel on rohkem kui 100 like-i. Kahjuks ei olnud koodi, mis muudaks xslt xml-iks, kuid pole hullu, kõik muu on väga hää.
XML retsensioon meeskonnalt VariableMoods
- Ülesandepüstituses on nõutud kolmel dimensioonil atribuute, mis on enamat kui 'id'. Antud töös leidub atribuute ainult ühel dimensioonil ja ainult üks atribuut, mis ei ole 'id'. Oleks võinud veel otsida atribuutide jaoks kasutuskohti. Näiteks elemendid 'videourl' ja 'weburl' võiks ühendada üheks elemendiks 'url' ning atribuudiga määrata sellele tüüp. Nii oleks võimalik hiljem veel vajadusel erinevaid url-e lisada. Segadust tekitas ka elemendi 'date' eesmärk: kas tegemist on sisestuse avaldamise või lisamise kuupäevaga (need võivad ju erineda). Lisaks võiks 'date' olla lammutatud kolmeks alamelemendiks vastavalt 'day', 'month' ja 'year', mis hõlbustaks kuupäeva töötlemist. Viimane soovitus on lisada struktuuri veel üks element 'author'. Antud juhul on muusika/raamatu puhul olemas pealkiri ja kirjeldus, aga autorit mitte.
- XSD puhul märgiks ära, et advert-elemendi id puhul tuleks kinni pidada CLS(Common Language Specification) nõudest kasutada id väärtuste salvestamiseks integer tüüpi.Kuupäeva hoitakse hetkel string-tüübina. Võib-olla oleks sobivam kasutada date-andmetüüpi või meie soovituse järgi kuupäev tükkideks jagada ning kasutada unsignedShorti aasta puhul ning byte-tüüpi kuu ning päeva puhul.
- XSLT transformatsioonid töötavad hästi. Väljund HTML-kood võiks samuti valideeruda (hetkel 1 viga - element 'head' puudumine).
- Kokkuvõttes on töö korralik, väikeste puudujääkidega.Soovime teile edasiseks palju jõudu ja edu!
Tegi meeskond VariableMoods
Kuupäev: 19.märts 2015
ALTER eGO kliendirakenduse retsensioon
Meeskonna loodud ASP.NET MVC klientrakendus eristub käima panemise hetkel juba sellega, et vaikimisi seatud hall taust on asendatud hubase, koduse taustapildiga, mis kirjeldatud projekti üldises CSS failis.
Loodud rakenduse puhul on väga kenasti info esitletud menüü sektsioonides, et teada saada, mis on täpsemalt Hubris. Näiteks /Home/About pealt on näha ja võimalik lugeda projekti puudutavat informatsiooni ning sealt selgubki, et tegu on meelelahutusvaldkonna reklaamikeskkonnaga, kus kasutajad saavad end toimuvaga kursis hoida.
Autentimata kasutajal on võimalik näha vaid olemasolevaid postitusi ning neid filtreerida otsinguribale sisendeid tulistades. Samuti ei ole lubatud autentimata kasutajal postitustel muudatusi teha: hinnata, kommenteerida, postitust kustutada.
Esmakordsel uue kasutaja loomisel saab veateate. Üritades sisse logida meeskonna Wiki lehel kirjeldatud kasutaja ja parooliga Admin/Admin123 õnnestub sisselogimine ning rakendusest avaneb laiem pilt. Admin kasutajaga välja logimise järgselt õnnestub luua ka uus kasutaja. Samuti on registreerimisel andmetele määratud kriteeriumid, mis peavad olema täidetud, et üleüldse saaks kasutaja luua. Kui aga juhtub sisselogimisel õige kasutajanime puhul minema kaasa vale salasõna, siis saab Server ERROR’i. Sellest hoolimata rakendus ühes teenusega tuvastab erinevaid kasutajaid. Küll aga tundub, et admin kasutajal on samad õigused võrreldes teiste kasutajatega ning seda arvamust kinnitab ka see, et kontrolleritel ei ole kirjeldatud erinevaid õiguste gruppe. Kasutajale piisab vaid sellest, et ta oleks autenditud ning seeläbi saab kõike teha (sh. teisi kasutajaid kustutada, muuta).
Kasutajal on võimalik uusi valdkonna tüüpe, kuid nende muutmise ja kustutamisega jäädakse hätta ning saadakse Server ERROR.
Mis puudutab koodi, siis rakenduse kontrollerites on ilusti unit of work’i kasutatud CRUD operatsioonide täide viimisel. PostsController’is on vaeva nähtud, et otsingu puhul tagastaks nimelt kasutaja sisendile võimalikult täpsed vasted, seejuures on tegu väga kasutajasõbraliku lisaga. Samuti on kuvade tarvis loodud ViewModel objektid, et vaates välja näidata vaid vajaminev.
Üldjoontes on tegu hästi tehtud kliendirakendusega, kui välja arvata üksjagu saadud Server ERROR’id (mis võivad ka vabalt olla lokaalse masina iseärasusest tingitud). Kood oli loetav ning läbimõeldud, kommentaaride järele vajadust ei nähtud. Rakenduse vaates kõige olulisem funktsionaalsus ehk postituste lisamine, haldamine ja otsimine töötasid. Vaeva on nähtud.