Võrgurakendused I 2018: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Martinv (arutelu | kaastöö)
P Martinv teisaldas lehekülje Võrgurakendused I pealkirja Võrgurakendused I 2018 alla: Eelmise aasta aine arhiveerimine
 
(ei näidata 3 kasutaja 314 vahepealset redaktsiooni)
5. rida: 5. rida:
</td>
</td>
<td>
<td>
Ainekood: ITV0110<br>
Ainekood: ITV0110/ITI0205 vastavalt õppperühmale <br>
Link: http://www.lambda.ee/index.php/V%C3%B5rgurakendused_I ehk http://www.lambda.ee/index/itv0110<br>
Link: http://www.lambda.ee/wiki/V%C3%B5rgurakendused_I <!-- ehk http://www.lambda.ee/index/itv0110<br> -->
Punkte: 3.5 AP ehk 5 EAP<br>
Punkte: 6 EAP<br>
Lektor: [http://www.facebook.com/tanel.tammet Tanel Tammet]<br>
Lektor: [http://www.facebook.com/martin.verrev Martin Verrev]<br>
Kontakt: tanel.tammet@ttu.ee, 6203457<br>
Kontakt: martin.verrev@ttu.ee<br>
olemas on ka [[Võrgurakendused_I 2013| 2013 aasta arhiiv]] koos kõigi eelmise aasta materjalidega.<br>
olemas on ka [[Võrgurakendused_I 2017| 2017 aasta arhiiv]] koos kõigi eelmise aasta materjalidega.<br>
</td>
</td>
</tr>
</tr>
</table>
</table>
== NB! <font color="red">Lisandunud lõpptulemused</font> ==
=== <font color="red">Lõpptulemused</font> ===
Aine tulemused on nähtavad [https://docs.google.com/spreadsheets/d/1VgBn1tstOlaVDjbgpWmM60ETaF20sZwDJsp_kXbe0lo Google Drives]
Vastavalt GDPR reeglitele on üliõpilaskood krüpteeritud
Andmed on kujul:
* '''Kood:''' üliõpilaskood millega ainele deklareerustie, hashitud MD5 algoritmiga.
* Enda intitsiaalid.
* '''P1 .. P5''' ja '''P. kokku''': Praktikumide vahetulemused eraldi ja nende kogupunktisumma
* '''KT''': Kontrolltöö punktisumma
* '''Teadus''': Punktid teadustöös osalemise eest
* '''Kokku ja hinne''': Koondtulemus ja lõpphinne
Kui sul on mingid tulemused selgelt puudu või valesti, siis palun anna asjaoludest võimalikult täpselt teada (a la mitmenda praksi tulemustest jutt, millal umbes esitasid, kellele) emailitsi martin.verrev@taltech.ee.
Pane tähele, et kontrolltöö loetakse sooritatuks, kui said vähemalt 20 punkti. Kursuse edukaks lõpetamiseks peab sul olema tehtud esimesed neli praktikumi ja kontrolltöö ning praktikumid+kontrolltöö saadud kokku vähemalt 51 punkti.
==== Enda tulemuse leidmiseks: ====
Arvutage MD5 räsi enda üliõpilaskoodist, näiteks kui üliõpilaskood on ''123456IABB'', siis räsi vastavalt ''4cb839dbc9a2298400d31f3672813725''
Kõige lihtsamini saate selle leida kui kasutate [https://www.md5hashgenerator.com/ mõnda online generaatorit]. Salvestage räsi kusagile kättesaadavasse kohta nii et saate seda hiljem hõlpsasti kasutada.
Kes veel seda teinud ei ole saavad lisapunkte uurimistöös osalemise eest kuni hinnete kinnitamiseni ÕISis.
== <font color="red">Uurimistöös osalemine!</font> ==
Palun kõigil tudengitele teha läbi http://semantics.littlebit.cc/surveys uuring, kus tuleb hinnata erinevaid mõisteid ja nende tekitatud assossatsioone.
Uuringus osalemise eest saab 25. jaanuarini lisapunkte järgmiselt: 2 mõiste hindamisel - 1p, 3 mõiste hindamisel 2p, 4 mõiste hindamisel 3p. Keskkond võimaldab soovi korral uuringutulemused anonümiseerida.
Uuring on osa minu teadustööst tähenduse kvantifitseerimisel ja praeguse etapi eesmärgid on andmete kogumine kasutatava meetodi valideerimiseks ja piirväärtuste leidmine skaalade visualiseerimiseks.
== <font color="red">Kontrolltöö ja kursuse lõpetamine</font> ==
<!--
Viimased loengud on järgmistel teemadel:
* neljap 30 detsember: ülevaade kontrolltööst
* neljap 7 detsember: loeng Transferwisest: nende frameworkid, vahendid, põhimõtted ja kogemused veebirakenduse tegemisel
-->
Kursuses on peale praktikumide ka üks kohustuslik kontrolltöö, mis toimub semestri viimasel nädalal ja annab maksimaalselt 40 punkti. Edukaks sooritamiseks pead kontrolltöös saama vähemalt 20 punkti ja kogu kursuse eest (praktikumid+kontrolltöö) vähemalt 50 punkti.
Kontrolltöö jaoks on sul valida kaks võimalikku päeva.
* kolmapäev 19. detsember kell 16:00 loengute toimumise kohas.
* neljapäev 20. detsember kell 16:00 auditooriumis U05-103
Peale 21. detsembrit on kursus lõppenud: ülesandeid enam ei vaadata ja rohkem kontrolltöösid ei tehta.
Vaata ka: [[Võrgurakendused_I_kontrolltöö_sisust]]
== Praktikumides hindamine ainult sinu grupi ajal ==
Juhime kõigi praktikumijuhendajate poolt tähelepanu, et praktikumitöö arvestamine ja hindamine toimub ainult sinu grupi ajal! Muude gruppide aegadel võetakse töid vastu ainult juhul, kui ei ole kedagi õigest grupist, kes sooviks tööd esitada / konsulteerida, st reeglina mitte arvestuse viimasel nädalal.
== Videoloengud ==
<b>Selle aasta loengud on vaadatavad [https://echo360.org.uk/section/57eff6f0-2769-4130-a527-269afaec482c/home sellelt lingilt]</b>
Eelmise aasta loengud leiad [https://echo360.org.uk/section/f6d0fee3-dfd9-4c23-a354-2e2537fa5e48/public siit lingilt].
NB! Ei ole mingit garantiid, et loengud jäävad üles mitmeks kuuks või et kõik loengud võrku ilmuvad.


== Aeg, koht, tulemus ==
== Aeg, koht, tulemus ==


Loenguid nädalas: 2 tundi (üks loeng) teisipäeviti 10:00-11:30 ruumis CYB - VEENUS
Loeng igal kolmapäeval kell <font color="red">16:00-17:30 </font> ruumis EIK-316 (IT Kolledžis 3. korrusel). Loengud on peamiselt pühendatud praktikumide seletamisele ja aeglasele, selgitustega osalisele ette-programmeerimisele. Teisisõnu, loengute mõte on aidata praktikume teha.


Praktikume nädalas: 2 tundi (üks praktikum). Praktikume juhendab Roger Kerse. Kui pole teisiti märgitud, toimuvad praktikumid:
Praktikumid toimuvad eri gruppidele kolmel erineval ajal.  Praktikumijuhendad on Tanel Prikk, Rasmus Retpap ja Markus Tarn. Esimesel nädalal on juhendajaks Martin Verrev, järgmistel tuleb praktikumijuhendajaid juurde.
* esmaspäeval 08:00-09:30 ruumis ICT-401 rühmadele  IABB31,  IABB32,  IABB33
 
* teisipäeval 16:00-17:30 ruumis ICT-501 rühmadele IABB37,  IAPB37,  IATM11
<b>NB!</b> Praktikumide eesmärgiks on teha ise ülesande kallal tööd, küsida juhendajalt probleemide korral abi ja esitada valmis või osaliselt valmis töid juhendajale. Praktikumides enamasti ei esitata üldist infot/materjale/näiteid kõigile vaatamiseks: selleks on loeng.
* neljapäeval 10:00-11:30 ruumis ICT-501 rühmadele  IAPB31,  IAPB32
 
* reedel 08:00-09:30 ruumis ICT-501 rühmadele  IAPB33,  IAPB34,  IAPB35
* teisipäeval kell 16:00 ruumis ICT-402 IAIB31
* kolmapäeval kell 12:00 ruumis ICT-402 IAIB33
* kolmapäeval kell 14:00 ruumis ICT-403 IAIB32,   


Kursus lõpeb hindelise arvestusega. Hinne sõltub kursuse jooksul tehtud praktikumide tulemustest (60%) pluss kursuse lõpus toimuva kontrolltöö tulemustest (40%).
Kursus lõpeb hindelise arvestusega. Hinne sõltub kursuse jooksul tehtud praktikumide tulemustest (60%) pluss kursuse lõpus toimuva kontrolltöö tulemustest (40%).
=== Varasemate aastate tulemuste arvestamine ===
* Kui olete kuulanud ainet Võrgurakendused I rohkem kui aasta tagasi, siis kontrolltööle pääsemise eeltingimusena peate edukalt kaitsma kõik selle semestri kohustustlikud praktikumid 1-4, s.t. varasemaid tulemusi ei arvestata. 
* Kui kuulasite ainet 2017/18 aasta sügissemestril ja mõni praktikumitöö jäi esitamata nii et kontrolltööle ei pääsenud, siis eelmisel aastal kaitstud praktikume uuesti tegema ei pea, välja arvatud juhul kui soovite punktisummat tõsta. Oma eelmise aasta punkte saate vaadata [[Kogu 2017 võrgurakenduste kursuse tulemused siin|siin]].
* Kui kuulasite ainet  2017/18 aasta sügissemestril ja pääsesite kontrolltööle s.t. kaitsesite ära kohustuslikud praktikumitööd, aga kogupunktisumma jäi alla 51 peate sellel semestril kontrolltöö tegemiseks kaitsma õigeaegselt 2. ja 4. praktikumi. Muud praktikumid teile kohustuslikud ei ole aga võite need teha kui soovite eelmise aasta punktisummat parandada.


== Kursuse eesmärk ==
== Kursuse eesmärk ==


Lihtsamate veebirakenduste põhimõtted ja nende kirjutamise oskus nii brauseri kui serveri poolel. Konkreetsemalt:  
Veebirakenduste põhimõtted ja nende kirjutamise oskus nii brauseri kui serveri poolel. Konkreetsemalt:  
* html-i kirjutamise oskus, esmane tutvus CSS-i ja javascriptiga.  
 
* serveripoolse rakenduse kirjutamise põhimõtted, cgi protokoll, erinevate keelte (sh shell, C, php, python, java, javascript) kasutamise sissejuhatus serverirakendustes.
* Brauseri põhitehntoloogiad: html-i, CSS-i ja javascripti baasoskused.
* pythoni ja php kasutamise esmased oskused.
* Serveripoolse rakenduse kirjutamise põhimõtted,  
* lihtsamad SQLi kasutamise oskused.
* cgi protokoll ja erinevate keelte (sh python, php, javascript, C) kasutamise ülevaade serverirakendustes
* Pythoni ja php kasutamise esmased oskused.
* node.js kasutamise sissejuhatus
* Lihtsamad SQLi kasutamise oskused.


Kursusel eeldatakse elementaarsete programmeerimisoskuste olemasolu. Kes programmeerimisega üldse kokku puutunud ei ole või seda paralleelselt ei õpi, ei suuda kursust läbida.
Kursusel eeldatakse elementaarsete programmeerimisoskuste olemasolu: nende puudumisel ei ole võimalik kursust läbida.
 
Julgustuseks loe [https://www.reddit.com/r/web_design/comments/3hg1t0/how_to_not_feel_overwhelmed_when_learning_to_code/ seda väikest juttu]
 
NB! Selle kursuse eesmärgiks ei ole keeruliste [https://medium.com/this-dot-labs/building-modern-web-applications-in-2017-791d2ef2e341 frameworkide], transpilerite ja pakkimisvahendite jms tehnokeskkonna õppimine: kõik need vajavad alustehnoloogiate kasutamise oskust, millele kursus ongi pühendatud.
 
Senised loengud peaksid olema vaadatavad [https://echo360.org.uk/section/f6d0fee3-dfd9-4c23-a354-2e2537fa5e48/public sellelt lingilt].
 
NB! Ei ole mingit garantiid, et loengud jäävad üles mitmeks kuuks või et kõik loengud võrku ilmuvad.


== Praktilised tööd ==
== Praktilised tööd ==


Kursusel on neli kohustuslikku praktilist ẗööd. Iga töö annab 0-15 punkti. <font color="red">Hilinenud tööd annavad poole punktidest.</font> Töid võib (ja on soovitav) esitada enne tähtaega.
Kursusel on neli kohustuslikku praktilist ẗööd ja üks vabatahtlik praktiline töö. Iga töö annab 0-12 punkti. <font color="red">Hilinenud tööd annavad poole punktidest.</font> Töid võib (ja on soovitav) esitada enne tähtaega.  


Kõik tööd tuleb esitada ise TTÜ arvutiklassis: emailiga saadetud töid ei arvestata. Kasutada võib nii klassi arvuteid kui oma arvutit, brauser ja operatsioonisüsteem on vabalt valitavad. Serverirakenduste tööde jaoks on võimalik kasutada ülikooli serverit, soovi korral ka oma serverit.
<font color="red">NB!</font>
* Kui sinu praktikum on õigeaegselt arvestatud, siis saad esitada täiendusi kuni nädalalani enne järgmise praktikumi tähtaega, ilma pooli punkte kaotamata.
* Kui sinu praktikum ei ole õigeaegselt arvestatud, siis on sul esitamiseks aega veel kolm nädalat peale tähtaega (välja arvatud neljas ja viies praks), aga selliselt hilinenud praks annab ainult pooled punktid.
* Üle kolme nädala hilinenud praks annab edukal arvestamisel ainult üheainsa punkti.
* Oma tööd saad arvestuseks esitada <b>ainult</b> oma rühma praksi ajal. Kui sa ei ole üheski rühmas, siis on aeg vaba. Lihtsalt nõu ja abi saad küsida ka teistel aegadel.
 
Kõik tööd tuleb esitada ise TTÜ arvutiklassis: emailiga saadetud töid ei vaadata. Kasutada võib nii klassi arvuteid kui oma arvutit, brauser ja operatsioonisüsteem on vabalt valitavad. Tööde presenteerimiseks tuleb kasutada ülikooli serverit dijkstra: kõiki prakse vaatavad õppejõud ainult sealt serverist. Kindlasti loe [[Dijkstra server|dijkstra serveri kasutamise õpetust]].
 
Kursuse edukaks läbimiseks peavad kõik kohustuslikud praktilised tööd - neli esimest - olema tehtud.
 
Lehtede kujundamise ja stiili osas lähtu [[htmli kujunduse üldpõhimõtted| sellest juhendist]].


Ülesanded:
Ülesanded:


* [[ITV0110 1. töö: Html põhioskused|Html põhioskused]]. Tähtaeg 16/17. september. Kaugõppe tähtaeg 19. oktoober, väga soovitav esitada 5 oktoober.
=== 1. ülesanne: HTML ja server ===
 
Detailid: [[ITV0110 1. töö: Html põhioskused|Prax 1: html põhioskused]].  
 
Tähtaeg 18-22 septembri nädal, vastavalt sinu praktikumirühmale.
 
=== 2. ülesanne: Laevade pommitamine ===
 
Ülesandeks on realiseerida lihtsustatud laevade pommitamise versioon kasutades selleks HTMLi ja javascripti, vastavalt järgmistele nõuetele:
 
[[ITV0110 2. töö 2018: javascript ja css|Prax 2: javascript ja css]].
 
Tähtaeg <strong>15-19 oktoobri nädal</strong>, vastavalt sinu praktikumirühmale..
 
=== 3. ülesanne: laevade pommitamise mälu ehk serverirakendus pythoni cgi-na ===
 
Ülesandeks on realiseerida serveris laevade pommitamise tulemuste ja poolikute mängude salvestamine ja nende kuvamine veebis.
 
[[ITV0110 3. töö 2018: python ja cgi|Prax 3: python ja cgi]].
 
Tähtaeg 6-10 novembri nädal, vastavalt sinu praktikumirühmale.


Järgmised ülesanded on lihtsalt tutvumiseks, pärit 2013 aastast ja sellisena neid teha ei tule.
=== 4. ülesanne: mini-tinder ehk andmebaasiga serverirakendus ===
2014 aasta ülesanded tulevad veidi erinevad, kuid samadel teemadel ja umbes sama keerukusega.
2014 aasta ülesanded antakse jooksvalt eelmise ülesande tähtaja lähenedes.


* [[ITV0110 2. töö: CSS, javascript, veebiserver|CSS, javascript, veebiserver]]. Tähtaeg 14/15. oktoober. Kaugõppe tähtaeg 2. november.
Ülesandeks on ehitada mini-Tinder (vaata [https://www.gotinder.com/ saiti] ja [https://en.wikipedia.org/wiki/Tinder_%28app%29 wikipediat]) kasutades selleks PHP-d ja MySQL-i.
* [[ITV0110 3. töö: Serverirakendus: cgi pythonis]]. Tähtaeg 20/21 november. Kaugõppe tähtaeg 30. november.
* [[ITV0110 4. töö: Andmebaasiga serverirakendus php-s|Andmebaasiga serverirakendus php-s]]. Tähtaeg 18/19. detsember. Kaugõppe tähtaeg on kontrolltöö aeg jaanuaris.


Kursuse edukaks läbimiseks peavad kõik praktilised tööd olema tehtud.
[[ITV0110 4. töö 2018: andmebaasiga serverirakendus|Prax 4: andmebaasiga serverirakendus php-s]].
 
Tähtaeg 4-8 detsembri nädal, vastavalt sinu praktikumirühmale.
 
=== 5. ülesanne: kivi-paber-käärid ehk node.js ===
 
5. praktikumitöö on sama mis eelmisel aastal. See ei ole arvestuse saamiseks kohustuslik, kuid annab ikkagi kuni 15 punkti, ehk tegemata jätmine annab kokku vastavalt vähem.
 
Ülesanne on ehitada võimalikult lihtsalt kahe inimese kivi-paber-käärid mäng node.js abil.
 
[[ITV0110 node.js töö 2017| Prax 5: serverirakendus node.js abil]].
 
Tähtaeg 17-19 detsembri nädal, vastavalt sinu praktikumirühmale.
 
== Vajalikud tööriistad ==


Lehtede kujundamise ja stiili osas lähtu [[htmli kujunduse üldpõhimõtted| sellest juhendist]].
Oma arvutiga töö tegemiseks peab seal olema vähemalt


== Loengute plaan ja materjalid ==
* Programmeerimiseks sobiv tekstiredaktor (väldi IDE-sid!) soovitavalt siit loetelust: [http://notepad-plus-plus.org/ Notepad++], [http://brackets.io/ brackets], [https://atom.io/ atom], [https://code.visualstudio.com/ vs code], [http://www.sublimetext.com/ sublime text], [http://www.scintilla.org/SciTE.html scite]
* [http://www.mozilla.com Mozilla Firefox] ja [https://www.google.com/intl/en/chrome/browser/ Google Chrome]
* Windowsil [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html putty] või mõni sarnane sisselogimis-proge (Linuxil piisab ssh käsust). Hea erivariant Puttyst on [http://www.9bis.net/kitty/ kitty], mis laseb kasutajatunnuse ja parooli meelde jätta, et ei peaks igakord uuesti sisestama.
* Windowsil [http://winscp.net winscp] (vaata [http://winscp.net/eng/docs/ui_editor konfimisest!]) või mõni sarnane failide-üleslaadimis-proge (linuxil ja macil piisab scp käsust)


Alltoodud teemad kaetakse igaüks ühe-kahe loenguga. Suur osa loengutest on pühendatud näidete läbitegemisele ning seletamisele, ette-programmeerimisele ja praktikumide osalisele realiseerimisele.
== Tehnoloogiateemad ja materjale lugemiseks ==


Allpool on toodud olulisemad ja valik täiendavaid materjale põhilistele tehnoloogiateemadele kursuses.


; HTML põhioskused
=== HTML põhioskused ===


Taustaks tasub
* meelde tuletada interneti baastehnoloogia IT sissejuhatusest: [[Media:Itsissejuhatus10o08.pdf|Itsissejuhatus10o08.pdf]].
Loe ja proovi läbi (st vaja põhimõtted selgeks õppida):
Loe ja proovi läbi (st vaja põhimõtted selgeks õppida):
* [http://www.w3schools.com/html/default.asp w3schools html tutorial basic blokk].
* [http://www.w3schools.com/html/default.asp w3schools html tutorial põhiblokk] kunide vormide allpeatükini.
<!--
Loe enne või sama-aegselt lisaks läbi ka
Loe enne või sama-aegselt lisaks läbi ka
* [http://www.w3.org/MarkUp/Guide/ Raggetti vanaaegne mikrotutorial  algajatele] ja selle [http://www.w3.org/MarkUp/Guide/Advanced.html teine osa]
* [http://www.w3.org/MarkUp/Guide/ Raggetti vanaaegne mikrotutorial  algajatele] ja selle [http://www.w3.org/MarkUp/Guide/Advanced.html teine osa]
* Hea eestikeelne, samuti natuke vana sissejuhatus [http://akadeemia.kakupesa.net/arhiiv/VR1/loengud/loeng3 Kaido Kikkaselt (html)]   
* Hea eestikeelne, samuti natuke vana sissejuhatus [http://akadeemia.kakupesa.net/arhiiv/VR1/loengud/loeng3 Kaido Kikkaselt (html)]   
-->
Vanemates tutorialites toodud markup on reeglina endiselt pädev, v.a. xhtml ja päised: sina kasuta html5 standardit (päises &lt;!DOCTYPE html&gt;) ja ignoreeri xml teemat html-s.


Vanemates tutorialites toodud markup on reeglina endiselt pädev, v.a. xhtml ja päised: sina kasuta html5 standardit (päises &lt;!DOCTYPE html&gt;) ja ignoreeri xml teemat html-s.
Lisaks olulist:
* [http://www.w3schools.com/html/html_entities.asp html entities osa1] ja [http://www.w3schools.com/html/html_symbols.asp osa2] ja [http://en.wikipedia.org/wiki/UTF-8 utf-8] ja [http://en.wikipedia.org/wiki/Character_encodings_in_HTML charseti seadmine]


Keerulisemat:  
Keerulisemat:
* [http://www.w3.org/TR/1999/REC-html401-19991224/ vana, siiani ametlik w3c standard]
* [http://www.w3.org/TR/html/ ametlik w3c standard]
* html 5: [http://www.w3.org/TR/html5/ w3c pooleli html 5] ja [http://www.whatwg.org/specs/web-apps/current-work/multipage/ whatwg living html 5] ja [http://www.w3schools.com/html/html5_intro.asp w3schools tutorial]
* [http://www.w3.org/TR/html401/struct/tables.html tabelite osa ametlikust 4.01 standardist]
* [http://www.w3schools.com/tags/ref_entities.asp html entities osa1] ja [http://www.w3schools.com/tags/ref_symbols.asp osa2] ja [http://en.wikipedia.org/wiki/UTF-8 utf-8] ja [http://en.wikipedia.org/wiki/Character_encodings_in_HTML charseti seadmine]
* [http://hsivonen.iki.fi/doctype/ !DOCTYPE prefix] ja html vanade versioonide kuvamine
* [http://hsivonen.iki.fi/doctype/ !DOCTYPE prefix] ja html vanade versioonide kuvamine
* Kasulik tagide nimistu: [http://joshduck.com/periodic-table.html html 5 elementide perioodiline tabel]
<!--
* [http://www.w3schools.com/html/html_xhtml.asp html and xhtml] ja [http://en.wikipedia.org/wiki/HTML5 html 5] ja [http://techcrunch.com/2012/07/22/html5-work-splits-into-living-and-snapshot-standards-developers-need-not-standard/ html 5 split] ja [http://developers.slashdot.org/story/12/07/21/2040257/html5-splits-into-two-standards slashdot take] ja [http://coding.smashingmagazine.com/2009/07/29/misunderstanding-markup-xhtml-2-comic-strip/ kogu teema kokkuvõtlikult] ja [http://xkcd.com/927/ veel lühemalt]
* html 5 [http://en.wikipedia.org/wiki/Canvas_element canvas]
-->
<!--
* [http://www.w3schools.com/html/html_xhtml.asp html and xhtml] ja [http://en.wikipedia.org/wiki/HTML5 html 5]  
* klassikaline salvestamine: [http://en.wikipedia.org/wiki/HTTP_cookie cookie] tutorial [http://www.w3schools.com/js/js_cookies.asp javascriptis]
* klassikaline salvestamine: [http://en.wikipedia.org/wiki/HTTP_cookie cookie] tutorial [http://www.w3schools.com/js/js_cookies.asp javascriptis]
* html 5 web storage [http://dev-test.nemikor.com/web-storage/support-test/ support]
* html 5 indexed db [http://en.wikipedia.org/wiki/Indexed_Database_API lühidalt], [http://caniuse.com/indexeddb support] ja [http://www.html5rocks.com/en/tutorials/webdatabase/websql-indexeddb/ kuidas kasutada] ja [http://www.html5rocks.com/en/tutorials/indexeddb/todo/ tutorial]
* html 5 web storage [http://dev-test.nemikor.com/web-storage/support-test/ support]
* html 5 web storage [http://dev-test.nemikor.com/web-storage/support-test/ support]
* html 5 indexed db [http://en.wikipedia.org/wiki/Indexed_Database_API lühidalt], [http://caniuse.com/indexeddb support] ja [http://www.html5rocks.com/en/tutorials/webdatabase/websql-indexeddb/ kuidas kasutada] ja [http://www.html5rocks.com/en/tutorials/indexeddb/todo/ tutorial]
* html 5 indexed db [http://en.wikipedia.org/wiki/Indexed_Database_API lühidalt], [http://caniuse.com/indexeddb support] ja [http://www.html5rocks.com/en/tutorials/webdatabase/websql-indexeddb/ kuidas kasutada] ja [http://www.html5rocks.com/en/tutorials/indexeddb/todo/ tutorial]
* html 5 [http://en.wikipedia.org/wiki/Canvas_element canvas]
* html 5 [http://en.wikipedia.org/wiki/Canvas_element canvas]
-->


 
=== CSSi põhioskused ===
; CSSi põhioskused




Lugeda ja proovida läbi (st vaja põhimõtted selgeks õppida):
Lugeda ja proovida läbi (st vaja põhimõtted selgeks õppida):
<!--
* [http://www.w3.org/MarkUp/Guide/Style.html First CSS intro]
* [http://www.w3.org/MarkUp/Guide/Style.html First CSS intro]
* [http://www.w3schools.com/css/ w3schools'i css tutorial]: : kindlasti "basic", "styling" ja "box" blokid, huvi korral loe edasi (advanced jne) ka, kuid need viimased ei ole üleni kohustuslikud, välja arvatud järgmised eriti olulised osad advanced blokist:
-->
* [http://www.w3schools.com/css/ w3schools'i css tutorial]: põhiosa kuni CSS3 blokini (sealt alates ei ole tingimata esialgu vaja), huvi korral loe edasi. Järgmised on eriti olulised osad:
** [http://www.w3schools.com/css/css_howto.asp erinevad stiilifailid/blokid ja nende hierarhia]
** [http://www.w3schools.com/css/css_display_visibility.asp display and visibility]
** [http://www.w3schools.com/css/css_display_visibility.asp display and visibility]
** [http://www.w3schools.com/css/css_boxmodel.asp box model]
** [http://www.w3schools.com/css/css_dimension.asp dimensioonid]
** [http://www.w3schools.com/css/css_positioning.asp positioning]
** [http://www.w3schools.com/css/css_positioning.asp positioning]
** [http://www.w3schools.com/css/css_float.asp float]
** [http://www.w3schools.com/css/css_float.asp float]
<!--
** [http://www.w3schools.com/css/css_image_sprites.asp image sprites]: see on oluline praktikumitöös
** [http://www.w3schools.com/css/css_image_sprites.asp image sprites]: see on oluline praktikumitöös
-->
* Väga kasulik abimaterjal on w3schoolsi [http://www.w3schools.com/cssref/default.asp  css reference]
* Väga kasulik abimaterjal on w3schoolsi [http://www.w3schools.com/cssref/default.asp  css reference]
Abiks on tutvuda heade tutorialidega järgmistel teemadel:
Abiks on tutvuda heade tutorialidega järgmistel teemadel:
111. rida: 256. rida:
* [http://webdesignerwall.com/tutorials/css3-gradient-buttons css nupud] ja [http://www.webdesignerwall.com/demo/css-buttons.html nupukataloog] ja [http://css-tricks.com/examples/ButtonMaker/# nuputegija1] ja [http://www.cssbuttongenerator.com/ nuputegija2]
* [http://webdesignerwall.com/tutorials/css3-gradient-buttons css nupud] ja [http://www.webdesignerwall.com/demo/css-buttons.html nupukataloog] ja [http://css-tricks.com/examples/ButtonMaker/# nuputegija1] ja [http://www.cssbuttongenerator.com/ nuputegija2]
* [http://smashinghub.com/9-amazing-css-rules-that-save-designers-and-developers.htm rounded corners, shadow, gradient fill jne]
* [http://smashinghub.com/9-amazing-css-rules-that-save-designers-and-developers.htm rounded corners, shadow, gradient fill jne]
* [http://www.script-tutorials.com/css3-metal-menu-with-icons/ multilevel metal menu with icons] pluss html/css alt muid häid css3 õpetusi
<!--
* [http://www.script-tutorials.com/css3-metal-menu-with-icons/ multilevel metal menu with icons] pluss html/css alt muid häid css3 õpetusi -->
* [http://informationarchitects.net/blog/the-web-is-all-about-typography-period/ puhtast tüpograafia-kujundusest]
* [http://informationarchitects.net/blog/the-web-is-all-about-typography-period/ puhtast tüpograafia-kujundusest]
Vingeid graafilisi canvas+webgl asju:
Vingeid graafilisi canvas+webgl asju:
* [http://www.clicktorelease.com/code/streetViewReflectionMapping/#59.4369400264884,24.743906027972344 street view + knot]  
* [http://www.clicktorelease.com/code/streetViewReflectionMapping/#59.4369400264884,24.743906027972344 street view + knot]  
* [http://alteredqualia.com/three/examples/webgl_materials_skin.html pea]
* [http://alteredqualia.com/three/examples/webgl_materials_skin.html pea]
* [http://robchadwick.com/TerrainEditor/ terrain editor]
<!--
CSS mobiilile:
* [http://robchadwick.com/TerrainEditor/ terrain editor] -->
* [http://www.seabreezecomputers.com/tips/mobile-css.htm sissejuhatavaid punkte ja olulist]
* [http://www.javascriptkit.com/dhtmltutors/cssmediaqueries.shtml css-i valik mobiilile] ja [http://css-tricks.com/snippets/css/media-queries-for-standard-devices/ sama teema selgitusteta]
* [http://webdesignerwall.com/tutorials/mobile-navigation-design-tutorial navigeerimine ja menüüd]


===  Javascripti põhioskused ===


; Javascripti põhioskused
Kaks loengut: (a) sissejuhatus (b) reaalne kasutamine brauseris (html ja css muutmine, evendid jne)
Vaata soenduseks/demoks [http://www.chromeexperiments.com/ Google kogutud näiteid].


Seejärel loe läbi ja proovi järgi selles järjekorras:
Seejärel loe läbi ja proovi järgi selles järjekorras:
* [http://en.wikipedia.org/wiki/JavaScript Wikipedia javascripti üldartikkel]: ülevaade, ajalugu jne. Keelt siit ei õpi!
* [http://en.wikipedia.org/wiki/JavaScript Wikipedia javascripti üldartikkel]: ülevaade, ajalugu jne. Loe algust, kogu juttu pole tingimata vaja. Keelt siit ei õpi!
* [http://www.w3schools.com/js/default.asp W3schools javascripti sissejuhatus]: JS Basic ja JS Objects osad. Mõned asjad jäävad siin veidi ebaselgeks!
* [http://www.w3schools.com/js/default.asp W3schools javascripti sissejuhatus]: Lisaks põhi-tutorialile alguses on kriitiline JS HTML DOM blokk allpool: kuidas tegelikult htmlist tükke kätte saada ja neid muuta.
* [http://en.wikipedia.org/wiki/JavaScript_syntax Wikipedia Javascripti keele kiirõpetus]: loe ja proovi paralleelselt w3schools-ga. Siit saab mõned asjad selgemaks kui ainult w3schoolsist.
* [http://en.wikipedia.org/wiki/JavaScript_syntax Wikipedia Javascripti keele kiirõpetus]: loe ja proovi paralleelselt w3schools-ga. Siit saab mõned asjad selgemaks kui ainult w3schoolsist.


149. rida: 287. rida:
* [http://www.w3schools.com/jsref/dom_obj_style.asp style lugemine/muutmine js-s: hädavajalik reference]
* [http://www.w3schools.com/jsref/dom_obj_style.asp style lugemine/muutmine js-s: hädavajalik reference]


Javascripti ja css-i teegid: uurime veidi kõige populaarsemaid teeke
Javascripti ja css-i teegid: uurime veidi kõige populaarsemaid universaalseid teeke


* [http://w3techs.com/technologies/overview/javascript_library/all populaarsed teegid]  
* [http://www.jquery.com jquery] javascripti teek dom-ga manipuleerimiseks ja ajaxiks
* [http://www.jquery.com jquery] javascripti teek
* [http://underscorejs.org/ underscore] funktsionaalsed pisivahendid
* [http://getbootstrap.com twitter bootstrap] css + javascript, widgetid jne
* [http://getbootstrap.com bootstrap] css + javascript, widgetid jne
* [https://facebook.github.io/react react] facebooki kapitaalne teek / pool-framework keerukamate kasutajaliideste tegemiseks


Vaata [http://www.chromeexperiments.com/ Google toredaid demosid].


; Praktilist teisest praktikumist
===  Veebirakenduse optimeerimine mobiilile ===


* [http://www.seabreezecomputers.com/tips/mobile-css.htm sissejuhatavaid punkte ja olulist]
Täiendavalt spetsiifilisematest teemadest:


Kuidas ja kuhu faile serverisse üles laadida jms: loe [[ITV0110 2. töö: CSS, javascript, veebiserver| teise praktikumi materjalidest]]
* [http://www.javascriptkit.com/dhtmltutors/cssmediaqueries.shtml css-i valik mobiilile] ja [http://css-tricks.com/snippets/css/media-queries-for-standard-devices/ sama teema selgitusteta]
* [http://webdesignerwall.com/tutorials/mobile-navigation-design-tutorial navigeerimine ja menüüd]
* [http://taylor.fausak.me/2013/11/01/ios-7-web-apps/ iOS nüansid]
* [https://www.youtube.com/watch?v=3Bq521dIjCM&feature=youtu.be&t=23m50s optimeeri sujuvust: video]
<!-- * [http://impulse.luster.io/ interaktsiooni-animatsioonide teek] -->
* [http://ionicframework.com/ huvitav mobiili-hübriid-veebirakenduste teek]




; Cgi töötlemine eri keeltes (C, python, bash, java, ...)
===  Cgi töötlemine eri keeltes (C, python, bash, java, ...) ===




169. rida: 317. rida:
Seejärel vaata [[cgi examples|hulka näiteid]], mille täpsem seletus antakse loengus.
Seejärel vaata [[cgi examples|hulka näiteid]], mille täpsem seletus antakse loengus.


Tutvu linuxi shelli elementaarsete käskudega [http://www.freesoftwaremagazine.com/articles/command_line_intro siit alustades] ja [http://www.tuxfiles.org/linuxhelp/linuxcommands.html sellest lühiõpetusest jätkates.] Iga käsu juures on abiks man, näiteks <tt>man ls</tt>. Huvi korral googelda lisaks.
Tutvu linuxi shelli elementaarsete käskudega [http://www.freesoftwaremagazine.com/articles/command_line_intro siit alustades] ja [http://www.pixelbeat.org/cmdline.html selle lühiõpetusega jätkates.] Iga käsu juures on abiks man, näiteks <tt>man ls</tt>. Huvi korral googelda lisaks.




Seejärel loe neid materjale CGI protokollist ja CGI programmidest serveris:
Seejärel loe neid materjale CGI protokollist ja CGI programmidest serveris:


* [http://www.jmarshall.com/easy/cgi/ lihtne sissejuhatus cgi-desse]
* [https://en.wikipedia.org/wiki/Common_Gateway_Interface wikipedia]
* [[Media:cgi.pdf|cgi.pdf: detailsem juhend]]
* [http://www.tutorialspoint.com/python/python_cgi_programming.htm cgi sissejuhatus pythonis] ja [http://cgi.tutorial.codepoint.net/hellow-world alternatiiv]
* [http://www.cs.tut.fi/~jkorpela/forms/cgic.html cgi C keeles]
* [http://www.cs.tut.fi/~jkorpela/forms/cgic.html cgi C keeles]
* Pythonis cgi programmeerimise tutoriali [http://www.tutorialspoint.com/python/python_cgi_programming.htm leiad siit]
* [http://webpython.codepoint.net/cgi_tutorial cgi Pythonis]
* [http://www.yolinux.com/TUTORIALS/BashShellCgi.html cgi Bashis]
* [http://www.yolinux.com/TUTORIALS/BashShellCgi.html cgi Bashis]


184. rida: 330. rida:


Cgi jaoks on olemas ka nö [http://www.rfc-editor.org/rfc/rfc3875.txt rfc-standard], mille lugemine on aga pisut vaevarikas (nagu enamikel standarditel) ja üldjuhul on praktilisem lugeda hoopis ülaltoodud õpetusi ja vaadata
Cgi jaoks on olemas ka nö [http://www.rfc-editor.org/rfc/rfc3875.txt rfc-standard], mille lugemine on aga pisut vaevarikas (nagu enamikel standarditel) ja üldjuhul on praktilisem lugeda hoopis ülaltoodud õpetusi ja vaadata
näiteid.  
näiteid.
 


; Python ja näiteid kasutamisest serverirakendustes
===  Python ja näiteid kasutamisest serverirakendustes ===




Tutvumine kolmanda praktikumiga: [[ITV0110 3. töö: Serverirakendus: cgi pythonis]]. Praksi jaoks vajaliku koodi kirjutamise harjutamine (loengus etteprogrammeerimine).
* Loe [http://docs.python.org/tutorial/ tutoriali] algust (keerulised andmestruktuurid, moodulite ja klasside värgi võid esialgu lugemata jätta)  
 
* Hea tutorial [http://www.tutorialspoint.com/python/python_cgi_programming.htm cgi programmide kohta pythonis]
Sealt leiad ka soovitused esmatutvuseks Pythoniga (praktikumi jaoks piisab kõige lihtsamatest Pythoni konstruktsioonidest ja cgi teegist, keerukamaid asju pole otseselt vaja):
* Lisaks [http://docs.python.org/library/cgi.html cgi teegi õpetust].
 
* loe [http://docs.python.org/tutorial/ tutoriali] algust (keerulised andmestruktuurid, moodulite ja klasside värgi võid esialgu lugemata jätta)  
* hea lihtne variant alguseks on [http://www.cs.virginia.edu/~lab2q/lesson_1/ see tutorial]
* hea tutorial [http://www.tutorialspoint.com/python/python_cgi_programming.htm cgi programmide kohta pythonis]
* lisaks [http://docs.python.org/library/cgi.html cgi teegi õpetust].


Hea mõte on paralleelselt teha lahti Pythoni interpretaator ja katsetada kõrvale asju otse Pythoni käsureal. Kui su masinas Pythonit pole, siis installeeri! Kasulikke asju lisaks:
Hea mõte on paralleelselt teha lahti Pythoni interpretaator ja katsetada kõrvale asju otse Pythoni käsureal. Kui su masinas Pythonit pole, siis installeeri! Kasulikke asju lisaks:


* [[Kasulikke pythoni näitejuppe cgi jaoks]]
* [http://docs.python.org/library/index.html#library-index teegi dokumentatsioonis].
* [http://docs.python.org/library/index.html#library-index teegi dokumentatsioonis].
* [[Kasulikke pythoni näitejuppe cgi jaoks]]
* [http://www.makotemplates.org/ mako templates:] katsetame neid veidi loengus




; Ajax ehk serveriga andmevahetus otse javascriptist
===  Ajax ehk serveriga andmevahetus otse javascriptist ===


* Loe seotud tehnoloogiatest: [http://en.wikipedia.org/wiki/Ajax_%28programming%29 wikipedia ajax], [http://en.wikipedia.org/wiki/XMLHttpRequest wikipedia xmlhttprequest], [http://en.wikipedia.org/wiki/JSON wikipedia json]
* Loe seotud tehnoloogiatest: [http://en.wikipedia.org/wiki/Ajax_%28programming%29 wikipedia ajax], [http://en.wikipedia.org/wiki/XMLHttpRequest wikipedia xmlhttprequest], [http://en.wikipedia.org/wiki/JSON wikipedia json]
* [[xmlhttprequest ja jsonile rakendatud eval näited]]
* Vaata [[xmlhttprequest ja jsonile rakendatud eval näited]]
 
* Vaata uuemat ja lihtsamat varianti Ajaxi callist: [https://css-tricks.com/using-fetch/ fetch]
 
; Veebiserveri ehitusest ja konfigureerimisest
 
 
Kõigepealt tutvu või tuleta meelde http protokolli põhimõtteid:
 
* [http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol http wikipedias]
* [http://www.jmarshall.com/easy/http/ veel http-st]
* [http://www.factini.com/c/httpViewer/ headerite jms vaatamise veebiabivahend]
 
Veebiserverist paremaks arusaamiseks tasub veidi eksperimenteerida [[Media:Itsissejuhatus_tiny.zip|pisikese veebiserveriga]].
 
Enimkasutatav veebiserver Apache:


* [http://httpd.apache.org/ apache oma koduleht]
Lisaks võib abi olla:
* [http://en.wikipedia.org/wiki/Apache_HTTP_Server wikipedia apachest]
* [http://www.w3schools.com/ajax/default.asp w3schoolsi ajaxi mikrotutorial]
* [http://news.netcraft.com/archives/category/web-server-survey/ veebiserverite kasutusstatistikat]
* [http://api.jquery.com/jquery.ajax/ jquery mugavamad wrapperid xmlhttprequestile]
 
Apache konfigureerimisest:
 
* [http://www.jlk.net/apache/beginners.shtml sissejuhatus algajatele]
* [http://httpd.apache.org/docs/2.2/ ametlik juhend]


NB:
* Vanade IE-de erivariante ei ole mingit mõtet kasutada.
* Ajaxiga avatud urlilt võib tulla mis iganes tekst (ei pea olema xml).


 
===  Serverirakendused PHP-s, näited ===
; Serverirakendused PHP-s, näited


* Väikese ajaloolise ülevaate leiad [http://en.wikipedia.org/wiki/PHP wikipeediast]
* Väikese ajaloolise ülevaate leiad [http://en.wikipedia.org/wiki/PHP wikipeediast]
242. rida: 365. rida:
* [http://w3schools.com/php/default.asp W3school-si php tutorial] on samuti päris OK.
* [http://w3schools.com/php/default.asp W3school-si php tutorial] on samuti päris OK.


* Vaata [[lihtsaid php ja mysql näiteid]] loengust.


; SQL  
===  SQL ===


Loe selles järjekorras:
Loe selles järjekorras:


* [http://web.njit.edu/~song/courses/is698/SQL_tutorials.ppt hea esimene sissejuhatus]
* [http://www.w3schools.com/sql/default.asp w3schools'i tutorial]
* [http://www.w3schools.com/sql/default.asp w3schools'i tutorial]
* [http://dev.mysql.com/doc/refman/5.0/en/tutorial.html mysql esmane tutorial] ja [http://dev.mysql.com/doc/refman/5.0/en/index.html mysql manuaal]
* [http://dev.mysql.com/doc/refman/5.0/en/tutorial.html mysql esmane tutorial] ja [http://dev.mysql.com/doc/refman/5.0/en/index.html mysql manuaal]


===  SQL serverirakendustes ===


; SQL serverirakendustes
* [[Vorgurakendused 1 SQL naited loengust]]: alusta siit
* Vaata veel kombineeritult [[lihtsaid php ja mysql näiteid]] loengust.


* Vaata [[lihtsaid php ja mysql näiteid]] loengust.
Harilikud tutorialid ja tähelepanekud:
<!--
* [http://dmsa.concordia.ca/tutorial_files/shortsql.ppt mysql PHP-s: ppt]  
* [http://dmsa.concordia.ca/tutorial_files/shortsql.ppt mysql PHP-s: ppt]  
-->
* [http://www.tizag.com/mysqlTutorial/ mysql PHP-s: veebitutorial]
* [http://www.tizag.com/mysqlTutorial/ mysql PHP-s: veebitutorial]
* [http://blogs.techrepublic.com.com/security/?p=2368 SQL injection] vt ka [http://lh6.ggpht.com/_5YF7KQZuZS0/S6dvFXu5OoI/AAAAAAAACWM/qTcVpMxcDnA/licence%20plate%20camera%20sql%20injection_2%5B3%5D.jpg?imgmax=800 seda] ja [http://www.schneier.com/blog/archives/2010/10/pen-and-paper_s.html seda] ja [http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrate-to-sweden seda]
* [http://blogs.techrepublic.com.com/security/?p=2368 SQL injection] vt ka [http://lh6.ggpht.com/_5YF7KQZuZS0/S6dvFXu5OoI/AAAAAAAACWM/qTcVpMxcDnA/licence%20plate%20camera%20sql%20injection_2%5B3%5D.jpg?imgmax=800 seda] ja [http://www.schneier.com/blog/archives/2010/10/pen-and-paper_s.html seda] ja [http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrate-to-sweden seda]
* [http://www.w3schools.com/php/default.asp w3schools PHP tutorial all vasakul Mysql blokk]
* [http://www.w3schools.com/php/default.asp w3schools PHP tutorial all vasakul Mysql blokk]
* [[Vorgurakendused 1 SQL naited loengust]]


 
===  Sessioonid, cookied, sisselogimine, autentimine, web storage ===
; Sessioonid, cookied, sisselogimine, autentimine, web storage


Mõned lingid:
Mõned lingid:
268. rida: 393. rida:
* basic authentication [http://en.wikipedia.org/wiki/Basic_access_authentication wikipedias], [http://httpd.apache.org/docs/2.0/howto/auth.html apache manuaalis] ja [[basic authentication näited]]
* basic authentication [http://en.wikipedia.org/wiki/Basic_access_authentication wikipedias], [http://httpd.apache.org/docs/2.0/howto/auth.html apache manuaalis] ja [[basic authentication näited]]
* cookie [http://en.wikipedia.org/wiki/HTTP_cookie wikipedias], php cookie handling [http://w3schools.com/PHP/php_cookies.asp w3schools-st] ja [http://www.php.net/manual/en/function.setcookie.php php manuaalist]
* cookie [http://en.wikipedia.org/wiki/HTTP_cookie wikipedias], php cookie handling [http://w3schools.com/PHP/php_cookies.asp w3schools-st] ja [http://www.php.net/manual/en/function.setcookie.php php manuaalist]
* [http://oreilly.com/catalog/webdbapps/chapter/ch08.html ok sessiooniõpetus]
<!-- * [http://oreilly.com/catalog/webdbapps/chapter/ch08.html ok sessiooniõpetus] -->
* php sessioonihandling [http://w3schools.com/PHP/php_sessions.asp w3schools] ja siit [http://ee.php.net/manual/en/book.session.php php mahukas sessiooni-manuaal] ja siit [http://www.tizag.com/phpT/phpsessions.php eraldi tutorial]
* php sessioonihandling [http://w3schools.com/PHP/php_sessions.asp w3schools] ja siit [http://ee.php.net/manual/en/book.session.php php mahukas sessiooni-manuaal] ja siit [http://www.tizag.com/phpT/phpsessions.php eraldi tutorial]
* väike [http://www.secologic.org/downloads/web/051123_eurosec_course_material_on_web_application_session_management.ppt ok sessioonihalduse tutorial]
* väike [http://www.secologic.org/downloads/web/051123_eurosec_course_material_on_web_application_session_management.ppt ok sessioonihalduse tutorial]
274. rida: 399. rida:
* [http://www.w3schools.com/html/html5_webstorage.asp Web storage]: HTML5 parem ja lihtne alternatiiv cookiedele. Vaata kindlasti ka muid [http://www.html5rocks.com/en/tutorials/offline/storage/ HTML5 data-salvestus-mehhanisme], [http://www.html5rocks.com/en/tutorials/appcache/beginner/ HTML5 application cache] ja [http://diveintohtml5.info/storage.html seda detailsemat täiendavat juttu].
* [http://www.w3schools.com/html/html5_webstorage.asp Web storage]: HTML5 parem ja lihtne alternatiiv cookiedele. Vaata kindlasti ka muid [http://www.html5rocks.com/en/tutorials/offline/storage/ HTML5 data-salvestus-mehhanisme], [http://www.html5rocks.com/en/tutorials/appcache/beginner/ HTML5 application cache] ja [http://diveintohtml5.info/storage.html seda detailsemat täiendavat juttu].


== Vajalikud tööriistad ==
=== node.js sissejuhatus ===
 
[http://nodejs.org/ node.js] on süsteem serverirakenduste kirjutamiseks javascriptis. Ta on ehitatud chrome javascripti mootori peale ja lisab sinna hulgem kasulikke teeke, veebiserveri jne.
 
Vaata:
 
* [http://nodejs.org/ node.js] ise
* node.js [http://en.wikipedia.org/wiki/Node.js wikipedias]
 
Dijkstras on node olemas programmina <b>nodejs</b> ja versioon on praeguseks uuendatud. npm on samuti olemas ja ei vaja ruuduõigusi.
 
Aga, hea mõte on kõigepealt installeerida omaenda arvutisse node.js ja alustada katsetamist:
 
* [https://www.w3schools.com/nodejs/default.asp w3schools-i erilihtne tutorial]
* [http://nodeguide.com/beginner.html ka hea sissejuhatav tutorial]
* [https://www.tutorialspoint.com/nodejs/ tutorialspointi veidi põhjalikum tutorial]
 
* [http://www.nodebeginner.org/ järgmine ok tutorial]
* [http://nodeschool.io/#learnyounode hulk eri tutoriale] mis vajavad installeerimist
 
* [https://blog.risingstack.com/tag/node-js-tutorials-for-beginners/] Õpetused node baasmoodulite kohta
 
===  Veebiserveri ehitusest ja konfigureerimisest ===
 
 
Kõigepealt tutvu või tuleta meelde http protokolli põhimõtteid:
 
* [http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol http wikipedias]
* [http://www.jmarshall.com/easy/http/ veel http-st]
* [http://www.factini.com/c/httpViewer/ headerite jms vaatamise veebiabivahend]
 
Veebiserverist paremaks arusaamiseks tasub veidi eksperimenteerida [[Media:Itsissejuhatus_tiny.zip|pisikese veebiserveriga]].
 
Enimkasutatav veebiserver Apache:
 
* [http://httpd.apache.org/ apache oma koduleht]
* [http://en.wikipedia.org/wiki/Apache_HTTP_Server wikipedia apachest]
* [http://news.netcraft.com/archives/category/web-server-survey/ veebiserverite kasutusstatistikat]
 
Apache konfigureerimisest:
 
* [http://www.jlk.net/apache/beginners.shtml sissejuhatus algajatele]
* [http://httpd.apache.org/docs/2.2/ ametlik juhend]
 


Oma arvutiga töö tegemiseks peab seal olema vähemalt


* [http://notepad-plus-plus.org/ Notepad++] või [http://www.scintilla.org/SciTE.html scite]
* [http://www.mozilla.com Mozilla Firefox] või [https://www.google.com/intl/en/chrome/browser/ Google Chrome]
* [http://www.mozilla.com Mozilla Firefoxi] kasutades installi endale [https://getfirebug.com/ firebug] plugin


Uus väga hea redaktor html/css/js jaoks on [http://brackets.io/ brackets]: proovi seda!
<!--
<!--



Viimane redaktsioon: 4. september 2019, kell 17:21

mootor
mootor

Ainekood: ITV0110/ITI0205 vastavalt õppperühmale
Link: http://www.lambda.ee/wiki/V%C3%B5rgurakendused_I Punkte: 6 EAP
Lektor: Martin Verrev
Kontakt: martin.verrev@ttu.ee
olemas on ka 2017 aasta arhiiv koos kõigi eelmise aasta materjalidega.


NB! Lisandunud lõpptulemused

Lõpptulemused

Aine tulemused on nähtavad Google Drives Vastavalt GDPR reeglitele on üliõpilaskood krüpteeritud

Andmed on kujul:

  • Kood: üliõpilaskood millega ainele deklareerustie, hashitud MD5 algoritmiga.
  • Enda intitsiaalid.
  • P1 .. P5 ja P. kokku: Praktikumide vahetulemused eraldi ja nende kogupunktisumma
  • KT: Kontrolltöö punktisumma
  • Teadus: Punktid teadustöös osalemise eest
  • Kokku ja hinne: Koondtulemus ja lõpphinne

Kui sul on mingid tulemused selgelt puudu või valesti, siis palun anna asjaoludest võimalikult täpselt teada (a la mitmenda praksi tulemustest jutt, millal umbes esitasid, kellele) emailitsi martin.verrev@taltech.ee.

Pane tähele, et kontrolltöö loetakse sooritatuks, kui said vähemalt 20 punkti. Kursuse edukaks lõpetamiseks peab sul olema tehtud esimesed neli praktikumi ja kontrolltöö ning praktikumid+kontrolltöö saadud kokku vähemalt 51 punkti.

Enda tulemuse leidmiseks:

Arvutage MD5 räsi enda üliõpilaskoodist, näiteks kui üliõpilaskood on 123456IABB, siis räsi vastavalt 4cb839dbc9a2298400d31f3672813725 Kõige lihtsamini saate selle leida kui kasutate mõnda online generaatorit. Salvestage räsi kusagile kättesaadavasse kohta nii et saate seda hiljem hõlpsasti kasutada.


Kes veel seda teinud ei ole saavad lisapunkte uurimistöös osalemise eest kuni hinnete kinnitamiseni ÕISis.

Uurimistöös osalemine!

Palun kõigil tudengitele teha läbi http://semantics.littlebit.cc/surveys uuring, kus tuleb hinnata erinevaid mõisteid ja nende tekitatud assossatsioone.

Uuringus osalemise eest saab 25. jaanuarini lisapunkte järgmiselt: 2 mõiste hindamisel - 1p, 3 mõiste hindamisel 2p, 4 mõiste hindamisel 3p. Keskkond võimaldab soovi korral uuringutulemused anonümiseerida.

Uuring on osa minu teadustööst tähenduse kvantifitseerimisel ja praeguse etapi eesmärgid on andmete kogumine kasutatava meetodi valideerimiseks ja piirväärtuste leidmine skaalade visualiseerimiseks.

Kontrolltöö ja kursuse lõpetamine

Kursuses on peale praktikumide ka üks kohustuslik kontrolltöö, mis toimub semestri viimasel nädalal ja annab maksimaalselt 40 punkti. Edukaks sooritamiseks pead kontrolltöös saama vähemalt 20 punkti ja kogu kursuse eest (praktikumid+kontrolltöö) vähemalt 50 punkti.

Kontrolltöö jaoks on sul valida kaks võimalikku päeva.

  • kolmapäev 19. detsember kell 16:00 loengute toimumise kohas.
  • neljapäev 20. detsember kell 16:00 auditooriumis U05-103

Peale 21. detsembrit on kursus lõppenud: ülesandeid enam ei vaadata ja rohkem kontrolltöösid ei tehta.


Vaata ka: Võrgurakendused_I_kontrolltöö_sisust

Praktikumides hindamine ainult sinu grupi ajal

Juhime kõigi praktikumijuhendajate poolt tähelepanu, et praktikumitöö arvestamine ja hindamine toimub ainult sinu grupi ajal! Muude gruppide aegadel võetakse töid vastu ainult juhul, kui ei ole kedagi õigest grupist, kes sooviks tööd esitada / konsulteerida, st reeglina mitte arvestuse viimasel nädalal.

Videoloengud

Selle aasta loengud on vaadatavad sellelt lingilt

Eelmise aasta loengud leiad siit lingilt.


NB! Ei ole mingit garantiid, et loengud jäävad üles mitmeks kuuks või et kõik loengud võrku ilmuvad.

Aeg, koht, tulemus

Loeng igal kolmapäeval kell 16:00-17:30 ruumis EIK-316 (IT Kolledžis 3. korrusel). Loengud on peamiselt pühendatud praktikumide seletamisele ja aeglasele, selgitustega osalisele ette-programmeerimisele. Teisisõnu, loengute mõte on aidata praktikume teha.

Praktikumid toimuvad eri gruppidele kolmel erineval ajal. Praktikumijuhendad on Tanel Prikk, Rasmus Retpap ja Markus Tarn. Esimesel nädalal on juhendajaks Martin Verrev, järgmistel tuleb praktikumijuhendajaid juurde.

NB! Praktikumide eesmärgiks on teha ise ülesande kallal tööd, küsida juhendajalt probleemide korral abi ja esitada valmis või osaliselt valmis töid juhendajale. Praktikumides enamasti ei esitata üldist infot/materjale/näiteid kõigile vaatamiseks: selleks on loeng.

  • teisipäeval kell 16:00 ruumis ICT-402 IAIB31
  • kolmapäeval kell 12:00 ruumis ICT-402 IAIB33
  • kolmapäeval kell 14:00 ruumis ICT-403 IAIB32,

Kursus lõpeb hindelise arvestusega. Hinne sõltub kursuse jooksul tehtud praktikumide tulemustest (60%) pluss kursuse lõpus toimuva kontrolltöö tulemustest (40%).

Varasemate aastate tulemuste arvestamine

  • Kui olete kuulanud ainet Võrgurakendused I rohkem kui aasta tagasi, siis kontrolltööle pääsemise eeltingimusena peate edukalt kaitsma kõik selle semestri kohustustlikud praktikumid 1-4, s.t. varasemaid tulemusi ei arvestata.
  • Kui kuulasite ainet 2017/18 aasta sügissemestril ja mõni praktikumitöö jäi esitamata nii et kontrolltööle ei pääsenud, siis eelmisel aastal kaitstud praktikume uuesti tegema ei pea, välja arvatud juhul kui soovite punktisummat tõsta. Oma eelmise aasta punkte saate vaadata siin.
  • Kui kuulasite ainet 2017/18 aasta sügissemestril ja pääsesite kontrolltööle s.t. kaitsesite ära kohustuslikud praktikumitööd, aga kogupunktisumma jäi alla 51 peate sellel semestril kontrolltöö tegemiseks kaitsma õigeaegselt 2. ja 4. praktikumi. Muud praktikumid teile kohustuslikud ei ole aga võite need teha kui soovite eelmise aasta punktisummat parandada.

Kursuse eesmärk

Veebirakenduste põhimõtted ja nende kirjutamise oskus nii brauseri kui serveri poolel. Konkreetsemalt:

  • Brauseri põhitehntoloogiad: html-i, CSS-i ja javascripti baasoskused.
  • Serveripoolse rakenduse kirjutamise põhimõtted,
  • cgi protokoll ja erinevate keelte (sh python, php, javascript, C) kasutamise ülevaade serverirakendustes
  • Pythoni ja php kasutamise esmased oskused.
  • node.js kasutamise sissejuhatus
  • Lihtsamad SQLi kasutamise oskused.

Kursusel eeldatakse elementaarsete programmeerimisoskuste olemasolu: nende puudumisel ei ole võimalik kursust läbida.

Julgustuseks loe seda väikest juttu

NB! Selle kursuse eesmärgiks ei ole keeruliste frameworkide, transpilerite ja pakkimisvahendite jms tehnokeskkonna õppimine: kõik need vajavad alustehnoloogiate kasutamise oskust, millele kursus ongi pühendatud.

Senised loengud peaksid olema vaadatavad sellelt lingilt.

NB! Ei ole mingit garantiid, et loengud jäävad üles mitmeks kuuks või et kõik loengud võrku ilmuvad.

Praktilised tööd

Kursusel on neli kohustuslikku praktilist ẗööd ja üks vabatahtlik praktiline töö. Iga töö annab 0-12 punkti. Hilinenud tööd annavad poole punktidest. Töid võib (ja on soovitav) esitada enne tähtaega.

NB!

  • Kui sinu praktikum on õigeaegselt arvestatud, siis saad esitada täiendusi kuni nädalalani enne järgmise praktikumi tähtaega, ilma pooli punkte kaotamata.
  • Kui sinu praktikum ei ole õigeaegselt arvestatud, siis on sul esitamiseks aega veel kolm nädalat peale tähtaega (välja arvatud neljas ja viies praks), aga selliselt hilinenud praks annab ainult pooled punktid.
  • Üle kolme nädala hilinenud praks annab edukal arvestamisel ainult üheainsa punkti.
  • Oma tööd saad arvestuseks esitada ainult oma rühma praksi ajal. Kui sa ei ole üheski rühmas, siis on aeg vaba. Lihtsalt nõu ja abi saad küsida ka teistel aegadel.

Kõik tööd tuleb esitada ise TTÜ arvutiklassis: emailiga saadetud töid ei vaadata. Kasutada võib nii klassi arvuteid kui oma arvutit, brauser ja operatsioonisüsteem on vabalt valitavad. Tööde presenteerimiseks tuleb kasutada ülikooli serverit dijkstra: kõiki prakse vaatavad õppejõud ainult sealt serverist. Kindlasti loe dijkstra serveri kasutamise õpetust.

Kursuse edukaks läbimiseks peavad kõik kohustuslikud praktilised tööd - neli esimest - olema tehtud.

Lehtede kujundamise ja stiili osas lähtu sellest juhendist.

Ülesanded:

1. ülesanne: HTML ja server

Detailid: Prax 1: html põhioskused.

Tähtaeg 18-22 septembri nädal, vastavalt sinu praktikumirühmale.

2. ülesanne: Laevade pommitamine

Ülesandeks on realiseerida lihtsustatud laevade pommitamise versioon kasutades selleks HTMLi ja javascripti, vastavalt järgmistele nõuetele:

Prax 2: javascript ja css.

Tähtaeg 15-19 oktoobri nädal, vastavalt sinu praktikumirühmale..

3. ülesanne: laevade pommitamise mälu ehk serverirakendus pythoni cgi-na

Ülesandeks on realiseerida serveris laevade pommitamise tulemuste ja poolikute mängude salvestamine ja nende kuvamine veebis.

Prax 3: python ja cgi.

Tähtaeg 6-10 novembri nädal, vastavalt sinu praktikumirühmale.

4. ülesanne: mini-tinder ehk andmebaasiga serverirakendus

Ülesandeks on ehitada mini-Tinder (vaata saiti ja wikipediat) kasutades selleks PHP-d ja MySQL-i.

Prax 4: andmebaasiga serverirakendus php-s.

Tähtaeg 4-8 detsembri nädal, vastavalt sinu praktikumirühmale.

5. ülesanne: kivi-paber-käärid ehk node.js

5. praktikumitöö on sama mis eelmisel aastal. See ei ole arvestuse saamiseks kohustuslik, kuid annab ikkagi kuni 15 punkti, ehk tegemata jätmine annab kokku vastavalt vähem.

Ülesanne on ehitada võimalikult lihtsalt kahe inimese kivi-paber-käärid mäng node.js abil.

Prax 5: serverirakendus node.js abil.

Tähtaeg 17-19 detsembri nädal, vastavalt sinu praktikumirühmale.

Vajalikud tööriistad

Oma arvutiga töö tegemiseks peab seal olema vähemalt

Tehnoloogiateemad ja materjale lugemiseks

Allpool on toodud olulisemad ja valik täiendavaid materjale põhilistele tehnoloogiateemadele kursuses.

HTML põhioskused

Loe ja proovi läbi (st vaja põhimõtted selgeks õppida):

Vanemates tutorialites toodud markup on reeglina endiselt pädev, v.a. xhtml ja päised: sina kasuta html5 standardit (päises <!DOCTYPE html>) ja ignoreeri xml teemat html-s.

Lisaks olulist:

Keerulisemat:

CSSi põhioskused

Lugeda ja proovida läbi (st vaja põhimõtted selgeks õppida):

Abiks on tutvuda heade tutorialidega järgmistel teemadel:

Häid praktilisi soovitusi kujundusest css-ga:

Vingeid graafilisi canvas+webgl asju:

Javascripti põhioskused

Seejärel loe läbi ja proovi järgi selles järjekorras:

NB! Selle tulemusena on sul baasettekujutus javascripti keelest, aga mitte reaalsest kasutusest (seda vaatame järgmises loengus).

Javascripti kasutamine brauseris: alustuseks on hea vaadata põhjalikku näidete loetelu

ja tingimata lugeda sinna juurde teegijuhendeid:

Javascripti ja css-i teegid: uurime veidi kõige populaarsemaid universaalseid teeke

  • jquery javascripti teek dom-ga manipuleerimiseks ja ajaxiks
  • underscore funktsionaalsed pisivahendid
  • bootstrap css + javascript, widgetid jne
  • react facebooki kapitaalne teek / pool-framework keerukamate kasutajaliideste tegemiseks

Vaata Google toredaid demosid.

Veebirakenduse optimeerimine mobiilile

Täiendavalt spetsiifilisematest teemadest:


Cgi töötlemine eri keeltes (C, python, bash, java, ...)

Kõigepealt loe ja proovi tingimata ise läbi teha: pythoni cgi-d dijkstra serveris: kiire sissejuhatus

Seejärel vaata hulka näiteid, mille täpsem seletus antakse loengus.

Tutvu linuxi shelli elementaarsete käskudega siit alustades ja selle lühiõpetusega jätkates. Iga käsu juures on abiks man, näiteks man ls. Huvi korral googelda lisaks.


Seejärel loe neid materjale CGI protokollist ja CGI programmidest serveris:

ning siis vaata lisaks loengus tehtud/proovitud lihtsaid cgi programminäiteid eri keeltes.

Cgi jaoks on olemas ka nö rfc-standard, mille lugemine on aga pisut vaevarikas (nagu enamikel standarditel) ja üldjuhul on praktilisem lugeda hoopis ülaltoodud õpetusi ja vaadata näiteid.

Python ja näiteid kasutamisest serverirakendustes

Hea mõte on paralleelselt teha lahti Pythoni interpretaator ja katsetada kõrvale asju otse Pythoni käsureal. Kui su masinas Pythonit pole, siis installeeri! Kasulikke asju lisaks:


Ajax ehk serveriga andmevahetus otse javascriptist

Lisaks võib abi olla:

NB:

  • Vanade IE-de erivariante ei ole mingit mõtet kasutada.
  • Ajaxiga avatud urlilt võib tulla mis iganes tekst (ei pea olema xml).

Serverirakendused PHP-s, näited

SQL

Loe selles järjekorras:

SQL serverirakendustes

Harilikud tutorialid ja tähelepanekud:

Sessioonid, cookied, sisselogimine, autentimine, web storage

Mõned lingid:

node.js sissejuhatus

node.js on süsteem serverirakenduste kirjutamiseks javascriptis. Ta on ehitatud chrome javascripti mootori peale ja lisab sinna hulgem kasulikke teeke, veebiserveri jne.

Vaata:

Dijkstras on node olemas programmina nodejs ja versioon on praeguseks uuendatud. npm on samuti olemas ja ei vaja ruuduõigusi.

Aga, hea mõte on kõigepealt installeerida omaenda arvutisse node.js ja alustada katsetamist:

  • [1] Õpetused node baasmoodulite kohta

Veebiserveri ehitusest ja konfigureerimisest

Kõigepealt tutvu või tuleta meelde http protokolli põhimõtteid:

Veebiserverist paremaks arusaamiseks tasub veidi eksperimenteerida pisikese veebiserveriga.

Enimkasutatav veebiserver Apache:

Apache konfigureerimisest: