Opis predmeta
Predavanja:
Uvod v spletno programiranje
- Svetovni splet, internet, arhitektura odjemalec/strežnik, celostni razvoj programske opreme, metodologija razvoja, Git,
- Spletna standarda HTML in CSS ter Bootstrap,
JavaScript – programski jezik spleta na strani odjemalca in strežnika
- Razvoj jezika, funkcije višjega reda, regularni izrazi, moduli, JavaScript in spletni brskalnik, DOM, obvladovanje dogodkov, HTTP,
- Node.js, npm, datotečni strežnik, MVC in različna okolja (Docker, oblačno gostovanje),
Zaledni del in dostop do podatkov
- Podatkovnega model, shema, lokalna in gostujoča podatkovna baza, REST API, metoda, odgovor in status zahteve, (geografske) poizvedbe z GET,
- Dodajanje podatkov s POST, ažuriranje s PUT in brisanje podatkov z DELETE, dokumentiranje s Swagger in OpenAPI,
Uporabniški vmesnik
- TypeScript, Angular (moduli, komponente, storitve, cevi, izrazi), komunikacija z zalednim delom,
- Angular SPA, usmerjanje, navigacija, vgnezdene komponente, geolociranje, prenos podatkov med komponentami, varnostne izjeme, delo s spletnimi obrazci, modalno okno, dvosmerno povezovanje podatkov,
- Preverjanje istovetnosti uporabnika, enosmerno šifriranje gesel, žeton JWT, API za avtentikacijo, varnostna zaščita dostopnih točk API, avtorizacija pri ažuriranju, posodobitev Swagger dokumentacije, storitev avtentikacije na strani odjemalca, registracija in prijava, zgodovina brskanja, uporabniške nastavitve v brskalniku,
Decentralizirane aplikacije in veriga blokov
- DApps, veriga blokov, omrežje Ethereum, Ether, gas, klici, transakcije, EVM, pametne pogodbe,
- Solidity (spremenljivka stanja, konstruktor, funkcije, testiranje, večkratno dedovanje), knjižnice, vmesniki, ERC20, Truffle,
- Web3 (uporabniški vmesnik, testiranje z Ganache, postavitev pametne pogodbe, MetaMask).
Dodatne funkcionalnosti
- Varnost spletnih aplikacij, OWASP, trend največjih varnostnih tveganj spletnih aplikacij, priporočila za razvijalce, varnostni pregled z OWASP ZAP
- Testiranje, funkcionalni testi s Selenium, pregled aplikacije z Lighthouse, progresivne spletne aplikacije (PWA), brskanje brez povezave. medponjenje oddaljenih podatkov.
Vaje:
Laboratorijski projekt izdelave celostne rešitve porazdeljene spletne aplikacije, razdeljen v posamezne faze (statične strani, kode na strani odjemalca, strežniška koda, storitve) in samostojno delo na projektih z zaključno predstavitvijo študentov.
Predmet učimo na programih
Multimedija 1. stopnja
Cilji in kompetence
Cilj predmeta je študentom računalništva in informatike predstaviti tehnologije povezane z razvojem spletnih aplikacij z vidika celostne rešitve, tako na strani odjemalca, kot strežnika in usposabljanje študentov za samostojen razvoj tovrstnih aplikacij.
Predvidene kompetence:
- poznavanje statičnih tehnologij HTML, CSS, XML,
- poznavanje programskega jezika JavaScript za razvoj na strani odjemalca,
- poznavanje tehnologije Node.js (programski jezik JavaScript) za razvoj na strani strežnika,
- poznavanje NoSQL podatkovne baze MongoDB,
- razvoj z uporabo spletnih storitev,
- snovanje aplikacij v arhitekturi model-pogled-kontrola,
- razvoj z upoštevanjem principov varnosti,
- razvoj decentraliziranih aplikacij, ki se povezujejo z verigo blokov
Metode poučevanja in učenja
Predavanja s praktičnimi demonstracijami, izvajanje laboratorijskega projekta pod mentorstvom asistenta.
Predvideni študijski rezultati
Po uspešnem zaključku tega predmeta bo študent:
- poznal in razumel osnovne tehnologije za razvoj spletnih aplikacij,
- razumel in znal uporabiti MVC arhitekturni slog pri razvoju spletnih aplikacij,
- uporabil REST dostop do podatkovne baze,
- razvil celovito spletno rešitev, tako na strani odjemalca, kot strežnika,
- uporabil spletne vire in dokumentacijo za pomoč pri razvoju spletnih aplikacij,
- z analitičnim pristopom pretvoril strežniško aplikacijo v aplikacijo na eni strani, ki se izvaja na odjemalcu,
- povezal obstoječo aplikacijo z verigo blokov,
- uporabljal sistem za obvladovanje verzij in podporna orodja za delo v skupini,
- uporabljal IKT, pisno sporočanje in komunikacijske in organizacijske spretnosti pri sodelovanju v skupini.
Temeljni viri in literatura
- Robert W. Sebesta: Programming the World Wide Web, Pearson Education, 2014.
- Paul J. Deitel, Harvey M. Deitel, Abbey Deitel et al.: Internet & World Wide Web: How to program, Pearson, 201
- Marijn Haverbeke: Eloquent JavaScript: A Modern Introduction to Programming, 3rd edition, No Starch Press, 2018.
- Simon Holmes: Getting MEAN with Mongo, Express, Angular, and Node, 2nd edition, Manning Publications, 2019.
- Cedric Exbrayat: Become a Ninja with Angular, Ninja squad, 2021.
- Roberto Infante: Building Ethereum DApps: Decentralized Applications on the Ethereum Blockchain, Manning Publications, 2019.