Praktikumid
Praktikumitundides tegeleme ühe rakenduse arendusega. Lahendus luuakse rühmatöö tulemina, igas rühmas peab olema kolm liiget. Lahenduse valmimiseks on rühmal aega 15 nädalat, mille jooksul iga rühm esitab seitse vahetulemit hindamiseks. Kokku annavad need seitse hindamiseks esitatavat etappi teile 50% aines jaotatavatest punktidest.
Praktikumid on jaotatud kaitsmispraktikumideks ja konsultatsioonideks. Kaitsmispraktikumid toimuvad etapi tähtajale järgneval nädalal, kõik ülejäänud praktikumid on konsultatsioonid. Konsultatsioonides saate praktikumijuhendajalt küsida nõu veebirakenduste arendamise ja aineprojekti teostamise osas. Soovituslik on kasutada konsultatsioone ka oma projekti teostusplaanide arutamiseks praktikumijuhendajaga - nii on võimalik vältida võtete teostamist ajakulukal või üleliia keerukal viisil.
Praktikumijuhendajad
- Siim Karus
- e-post: siim.karus@ut.ee
- Viimase aasta jooksul kasutatud veebiarendusplatvormid ja -tehnoloogiad: XHTML, CSS, Javascript, XSLT, PHP, MySQL, ASP.NET, C#, MSSQL
- Aineprojekti tehes kasutaksin: XHTML + CSS + Javascript + XSLT + PHP + MySQL
- Magnar Aruoja
- e-post: magnar.aruoja@gmail.com
- Viimase aasta jooksul kasutatud veebiarendusplatvormid ja -tehnoloogiad: MySQL/Postgres, Spring (Java), JavaScript, AngularJS, jQuery, CSS, Bootstrap
- Aineprojekti tehes kasutaksin: MySQL/Postgres + Spring Boot (Java) (+ Hibernate) + HTML + JavaScript (AngularJS) + Bootstrap CSS
- Karl Martin Teras
- e-post: karl.martin@ter.as
- Viimase aasta jooksul kasutatud veebiarendusplatvormid ja -tehnoloogiad: MySQL/PostgreSQL, JavaScript, CSS, Spring Boot (Java), Node.js (JavaScript), Django/Flask (Python)
- Aineprojekti tehes kasutaksin: Spring Boot, MySQL, HTML, JavaScript (jQuery), CSS (Bootstrap/Materialize)
- Andre Sinisalu
- e-post: andresinisalu@gmail.com
- Viimase aasta jooksul kasutatud veebiarendusplatvormid ja -tehnoloogiad: PostgreSQL, MySQL, Node.js, Spring Boot, Django, React.
- Aineprojekti tehes kasutaksin: Node.js, PostgreSQL, HTML + CSS (Bootstrap) + JavaScript (jQuery) või React.
- Ivo Kubjas
- e-post: ivokub@ut.ee
- Viimase aasta jooksul kasutatud veebiarendusplatvormid ja -tehnoloogiad: SQLite3, PostgreSQL, Java, gorilla toolkit (Go), Django (Python), jQuery (JavaScript), Bootstrap, Highcharts. Gitlab CI/CD, Jenkins, Selenium, Behave
- Aineprojekti tehes kasutaksin: Django, SQLite3 dev + PostgreSQL prod, Bootstrap, jQuery.
Etapid
Praktikumiprojekti hinnatakse etappide kaupa. Kokku on etappe 7. Etappide tähtajad on jäigad - kui õigeks ajaks on töö/võtted esitamata, jäävad etapi tööd kaitsmata. Tööde kaitsmine toimub etapi tähtajale järgnevas praktikumis. Kaitsmisel tuleb teistele tutvustada enda veebirakendust ning demonstreerida etapil kasutatud võtteid. Iga rühma liige peab esinema oma projektiga vähemalt kahel kaitsmisel. Iga puuduva esinemise eest trahvitakse 1 punktiga. Iga praktikumirühma kaitsmiskorral valitakse publiku poolt välja kaks parimat, millest kõrgemini hinnatud töö projektitiimi liikmed saavad 1 lisapunkti ja teisele kohale jäänud töö liikmed 0,5 lisapunkti. Lisapunktid on eraldi arvestuses ega ole piiratud projektipunktide maksimumiga.
Etapp | Tähtaeg | Kommentaar |
---|---|---|
Etapp 1 (2n) | 16.09 | |
Etapp 2 (2n) | 30.09 | |
Etapp 3 (2n) | 14.10 | |
Etapp 4 (3n) | 04.11 | |
Etapp 5 (2n) | 18.11 | |
Etapp 6 (2n) | 02.12 | |
Etapp 7 (2n) | 16.12 |
Praktikumihinde kujunemine
Praktikumides hinnatakse erinevate igal etapil veebiarendusvõtete kasutamist. Maksimaalselt on võimalik praktikumiprojekti eest saada igal tudengil 50 punkti. Projekti eest antakse punktid projektimeeskonnale. Need punktid tuleb meeskonnal ise jaotada meeskonna liikmete vahel. Kui meeskond teisiti ei teavita, eeldatakse, et punktid jaotuvad liikmete vahel võrdselt. Kui mõne meeskonnaliikme panust ei suuda meeskond kaitsta, võib praktikumijuhendaja selle liikme punkte ära võtta. Kui meeskonnal pole uusi võtteid teostatud, tuleb praktikumis teha umbes 5 minutiline ettekanne mõnel teiste jaoks kasulikul teemal.
Projekti eest saadavad punktid jaotuvad järgnevalt:
- Kasutatud võtted - ajas kahaneva punktisummaga (vt. võtted).
- Eritähtajalised ülesanded - kindla punktisummaga kuid tähtajaks tegemata jätmise korral kaotatakse edasiste esitatud tulemuste eest pooled punktid (sh. perioodiliselt hinnatavad). Pärast funktsionaalsuse realiseerimist saadakse edasi taas täismahus punkte. Eritähtajalisi ülesandeid hinnatakse tähtaja saabumisel - varasemates etappides neid esitada ei saa.
- Jooksvalt ehk alates teisest etapist iga esitatud vahetulemuse puhul kontrollitavad (kokku 72 punkti):
- (X)HTML kehtivus (2p/etapp)
- CSS kehtivus (2p/etapp)
- Kujundus, sisu ja loogika on eraldatud (CSS, HTML, Javascript, server-side code, andmebaas) (2p/etapp)
- Vastavus WCAG 2.0 standardile (validaator) (NB! Kõiki nõudeid ei saa automaat kontrollida) (olenevalt tasemest kuni 2p/etapp):
- Tase A (0,5p/etapp)
- Tase AA (oodatav normtase) (1p/etapp)
- Tase AAA (2p/etapp)
- Bootstrap Accessibility - abiks, kui soovite kasutada Bootstrapi ning saada WCAG 2.0 AAA tase.
- Veebilehitsejate tugi - toetatud veebilehitsejate versioonid peaksid moodustama vähemalt 60% veebilehitsejate levikust töölaual ja mobiilsetes seadmetes (1p/etapp)
- Pooled punktid saab kui toeatate vähemalt 2 enimlevinumast 10-st töölauaveebilehitsejate versioonist ja 1 enimlevinud 5st mobiillsete veebilehitsejate versioonist.
- Aknasuuruste tugi (1p/etapp)
- Täispunktide saamiseks peab olema veebilehe kujundus dünaamiliselt kohanduv (testime ka http://browsershots.org/)
- Pooled punktid saab kui on toetatud järgmised ekraanisuurused (8 enimlevinud ekraanisuurust veebi kasutamisek kasutatavatel seadmetel):
- 640x360
- 1366x768
- 1920x1080
- 1024x768
- 667x375
- 1440x900
- 1280x800
- 568x320
- Heade praktikate järgimine (3p/etapp)
- Veebilehitseja edasi-tagasi nuppude tugi (ka Javascriptiga uuendatud lehtede korral)
- Infoturbe heade praktikate järgimine
- Paroole ei tohi olla koodihoidlas
- SQL päringud on parametriseeritud
- XSS tõrje
- SQL päringute head praktikad
- Rakendus ei teosta INSERT ega UPDATE päringuid (protseduuride kasutamine andmete muutmiseks)
- Rakendus ei teosta SELECT päringuid mittekonstantsetel tabelitel (vaadete kasutamine andmete pärimiseks)
- POST, GET, PUT, HEAD jt. käskude korrektne kasutamine
- URI-de korrektne kasutamine
- Põhifunktsionaalsus (st. kõik, mis ei ole mugavusfunktsionaalsus) töötab ka Javascriptita (käitumine võib erineda javascripti toe korral käitumisest)
- Reaktiivsete/kohanduvate veebipraktikate järgimine
- suhtühikute kasutamine absoluutsete asemel (st. mõõtude puhul absoluutühikuid kasutatakse vaid piltide ja muu rastergraafika juures, mujal on kasutuses suhtühikud)
- Aknalaiusega arvestav CSS (veebilehe sisu ümber paigutamine veebilehitseja akna laiust arvestdes)
- Koodi dokumenteerimine
Hinnatavad lahendusvõtted ja ülesanded
Igal etapil tuleb hindamiseks esitada tiimi poolt valitud alamhulk alltoodud ülesannete lahendusi või kasutatud võtteid:
- Tehnilised võtted (norm 76 punkti):
- 1. etapp
- Rakenduse koodirepositooriumi üles seadmine (1p)
- Prototüüp (3p)
- Projektiplaan (5p)
- 2. etapp
- Lihtsad võtted (1p/võte):
- Andmete salvestamine andmebaasi
- Andmebaasi andmete esitamine (sh. JOIN lause)
- Agregeeritud andmete esitamine
- Javascript-ga lehel muudatuste tegemine vastusena kasutaja tegevustele (Soovitatud raamat: JavaScript: The Good Parts - võimalik laenutada ka kooli raamatukogust)
- Leheosade hilisem laadimine
- interaktiivne ehk rakendusesisene abiinfo
- AJAX viited (bookmarks)
- XML-põhiste keelte kooskasutus (HTML laiendamine teiste keeltega kasutades nimeruume elementide, töötlusjuhiste ja atribuutide eristamiseks)
- Meldimise (i.k. log in) järel näidatakse lehte, millele kasutaja soovis minna (st. millele viidati)
- CDN failide test: kui CDN serverile ligipääs puudub kasutatakse kohalikku faili
- Automaatteavitus
- Faililaadimisevorm
- Keskmise keerukusega võtted (3p/võte):
- Andmete surumine (st. data push)
- Pangalingi kasutamine
- Autentimine (Facebook, Google Account, Live Id, OpenId, LDAP/Kerberos, ...)
- AJAX kasutamine
- Veebilehel sisu esitamine kaardil
- Võrguühenduseta kasutatav vähemalt osa funktsionaalsust
- mitmekeelne kasutajaliides
- Autoriseerimine (st. ainult meldinutele kättesaadav funktsionaalsus ja sisu)
- Otsingumootoritele optimeerimine
- Keerukamad võtted (6p/võte)
- Autentimine (ID-kaart või Smart ID)
- Külastajate statistika kogumine
- SSL? kasutamine
- 6. etapp
- Päringute arvu ja mahu piiramine (st. veebirakenduse optimeerimine, sh. cache päiste kasutamine, Google PageSpeed?) (6p)
- Automaattestid (6p)
- Jõudlustestid (6p)
- 1. etapp
- Funktsionaalsus (kokku 5p)
- Funktsionaalsusest realiseeritud järgmine 20% (punktid ei kahane ajas)
Võtete tähtaeg on 4. etapp (va. kus on märgitud teisiti). Võtte eest saadavad punktid arvutatakse valemiga
Seega hilinemine kaotab 20% punktidest/etapp ja varem esitamine annab juurde 20% punktidest/etapp.
Näiteks AJAX kasutamine 4. etapiks annab 3*(1+0,2*(4-4))=3p, 6. etapiks annab ainult 3*(1+0,2*(4-6))=1,8p ja 2. etapiks 3*(1+0,2*(4-2))=4,2p.
Eritähtajaga (st. kindlaks etapiks nõutavate) võtte lahendusega hilinemisel jagatakse kõik etapi eest saadavad punktid kahega (seda ka tähtajale järgnevate etappide hindamisel kuni eritähtajaga võte saab teostatud). Näiteks, kui projektiplaan esitatakse alles neljandaks etapiks, kaotatakse esimeses, teises ja kolmandas etapis pooled punktid (esitamisele järgnevateid etappe selle ülesande eest ei trahvita). Juhul kui tähtajaks on esitamata mitu eritähtajaga ülesannet, rakendatakse trahvi iga hilinenud ülesande kohta korra (st. 2 hilinenud ülesannet tähendab, et saate vaid veerand punktidest). Jooksvalt kontrollitavate punktide saamise eeldus on vähemalt ühe võtte esitamine etapil.
Projektid
Ainekursuse jooksul tuleb valmis teha üks reaalne veebirakendus. Selleks veebirakenduseks võib olla üks järgmistest:
- Teie välja mõeldud veebirakendus (hiljemalt esimese etapi lõpuks tuleb praktikumijuhendajaga kooskõlastada kavandatava projekti funktsionaalsed nõuded)
- VL hindamissüsteem
- Raamatute otsingukeskkond
- Uus veeb Eesti Kirjandusmuuseumile
- e-hääletamine
Punktid antakse meeskonnale ühiselt. Meeskonna ülesanne on punktid jaotada oma liikmete vahel õiglaselt. Vaikimisi eeldavad praktikumijuhendajad, et kõik meeskonnaliikmed saavad punkte võrdselt. Juhul kui soovite punkte jaotada teisiti (nt. mõni liige ei teinud etapil tööd), tuleks sellest esimesel võimalusel praktikumijuhendajat teavitada. Juhul kui praktikumijuhendaja ise avastab, et mõni liige ei ole etapil tööd teinud, on tal õigus selle liikme punktid ära võtta (seega jääb tiimile vähem punkte).
Organisatoorsed märkused
- Lähtekoodi haldamiseks tuleb kasutada Git võimalusi. Iga meeskond peab looma git projekti, millele saab praktikumijuhendaja ligi. Tulemite esitamiseks tuleb projektis antud etapi tulemeid märgendada (i.k. tagging) Git-s konkreetse kodutöö numbriga (nt 1, 2, 3). NB! Esimese praktikumi tulemid tuleb saata praktikumijuhendaja e-mailile, kuna selle tulemid ei ole versioonihalduse poolt hallatavad.
- Igal etapil esitatud lisatud töövõtete ja funktsionaalsuse loetelu tuleb kirja panna projekti viki lehena, millele viidatakse projekti viki pealehelt.
- Hinde saab rühm tervikuna. Kui mõne rühmaliikme panus ei ole Git-i statistikast tuvastatav siis tuleb sel rühmaliikmel arvestada praktikumijuhendaja kõrgendatud tähelepanuga. Praktikumijuhendaja võib rühmaliikme panuse puudulikkuse korral liikme teenitud punktisummat korrigeerida.
- Iga etapi tulemeid tuleb praktikumis teistele rühmadele tutvustada ning praktikumijuhendaja täpsustavatele küsimustele vastada. Säärase hindamise tulemina saab iga etapi parim rühm igale liikmele ühe lisapunkti ja teisele kohale jäänud rühm pool lisapunkti igale liikmele.
KKK
- Kas projektis tohib kasutada veebiraamistikke?
- Jah. Lubatud on kasutada veebiraamistikke, malligeneraatoreid jt. vahendeid. Keelatud on kasutada sisuhaldussüsteeme (CMS) ja vikisid. Ehk siis kasutatavad abiteegid ei tohi pakkuda veebipõhist sisu redigeerimise/lehtede loomise funktsionaalsust.
- Kuidas mõjutab veebiraamistike ja teekide kasutamine hindamist?
- Veebiraamistiku poolt realiseeritud võtted ei anna punkte. St. kui teie kasutatav veebiraamistik kasutab lehel muudatuste tegemiseks Javascripti, siis teie selle eest punkte ei saa (st. punktide saamiseks peate ka ise kirjutama lehel muudatusi tegevat Javascripti).
- Rakenduse üldkvaliteeti hinnatakse koos kõigi kasutatud raamistikega. Ehk siis, kui teie kasutatav raamistik või teek põhjustab teie rakenduse kasutajale esitatava HTML või CSS koodi kehtetuks muutumise, te kehtivuse eest punkte ei saa.
- Minu rakendusesse ei sobi võte X kasutusse. Kas me peame ikka seda tegema?
- Rakendusi, kus ei saaks ühte või teist funktsioonalsust kasutada, on vähe - tegemist on tänapäeva veebirakenduste arendamise põhivõtetega. Samas kohustust kõiki võtteid kasutada pole - kasutamata võtete eest lihtsalt punkte ei saa. Erandjuhul võib olla põhjendatud mõne võtete loetelus toodud võtte asendamine mõne teise loetelus puuduva võttega, kuid see tuleb läbi rääkida praktikumijuhendajaga ja põhjendada ning dokumenteerida teie projekti vikis.
- Mida tuleb näidata esitlusel?
- Projektide kaitsmisel tuleb:
- demonstreerida etapi jooksul tehtud töid (näidata, kuidas te erinevaid võtteid kasutasite, millise funktsionaalsuse lisasite)
- vastata praktikumijuhendaja ja kaasüliõpilasste küsimustele
- Projektide kaitsmisel tuleb: