Wybrane elementy praktyki projektowania oprogramowania 2018/2019
W roku akademickim 2018/2019 wykład pozwala na dwie różne formy zaliczenia - za 5 ECTS i 6 ECTS. Poniżej zestawienie:
|
Kurs Inżynierski
|
Przedmiot I1
|
ECTS |
5 |
6 |
Forma zaliczenia |
Zaliczenie z oceną |
Zaliczenie z oceną + egzamin z oceną |
W systemie zapisów należy zapisać się na |
- wykład
- pracownia
- ćwiczenia - grupa wirtualna
|
|
Zasady zaliczania
Spotykamy się w laboratorium, omawiając rozwiązania zadań z zestawów i odnotowując fakt rozwiązania zadania na paskach deklaracji.
Podstawą zaliczenia jest uzyskanie odpowiedniej liczby punktów (w tabelce niżej podano procentowo) za rozwiązane zadania.
- >= 75% bdb
- 50%-75% db
- 25%-50% dst
- < 25% ndst
Łącznie za zestawy zadań można uzyskać 92 punkty, oznacza to że progi punktowe są następujące
- >= 69 bdb
- 46-68 db
- 23-45 dst
- < 45 ndst
Połówkowe stopnie są możliwe przy liczbie punktów mniej więcej w połowach progów (na przykład okolice 32 punktów to dst+ itp.)
Odnośniki do wykładów
Materiał wykładu oraz punktacja cząstkowa będą również publikowane
na Platformie e-Learningowej Uniwersytetu Wrocławskiego.
Zapraszam do korzystania
- kurs: WEPPO 18
- klucz dostępu: WEPPO
- Wykład 1 2018-10-09 Wprowadzenie
- Wykład 2 2018-10-16 Javascript: podstawy języka (1)
- Wykład 3 2018-10-23 Javascript: podstawy języka (2)
- Wykład 4 2018-10-30 Javascript: funkcje, obiekty
- Wykład 5 2018-11-06 Javascript: obiektowość prototypowa
- Wykład 6 2018-11-13 Javascript: programowanie asynchroniczne, biblioteka standardowa
- Wykład 7 2018-11-20 node.js: HTTP, HTML
- Wykład 8 2018-11-27 Express (1)
- Wykład 9 2018-12-04 Express (2)
- Wykład 10 2018-12-11 Express (3) (bezpieczne logowanie, uwierzytelnianie federacyjne)
- Wykład 11 2018-12-18 Express (4) (AJAX, WebSockets, Continuous Deployment)
- Wykład 12 2019-01-08 Bazy danych (1)
- Wykład 13 2019-01-15 Bazy danych (2)
- Wykład 14 2019-01-22 Elementy projektowania obiektowego
- Wykład 15 2019-01-29 Testy jednostkowe
Odnośniki do list zadań (na skróty; terminy i uwagi dalej w treści)
Uwaga! Wskazany termin dotyczy grup wtorkowych, grupa czwartkowa ma termin czwartkowy w odpowiadającym tygodniu.
- Lista 1 do 2018-10-23
- Lista 2 do 2018-10-30
- Lista 3 do 2018-11-13
- Lista 4 do 2018-11-20
- Lista 5 do 2018-12-04
- Lista 6 do 2018-12-18
- Lista 7 do końca semestru
- Lista 8 do 2018-01-22
- Lista 9 do końca semestru
Punktacja częściowa
Wykłady/ćwiczenia
Opis wykładu
- 2018-10-09 Wprowadzenie
- Sprawy organizacyjne
- Technologie, języki
- Javascript - historia, aktualny status
Notatki do wykładu 1
Zestaw 1 (do 2017-10-17)
- 2017-10-15 Javascript, podstawy języka (1)
- Narzędzia
- Javascript = język hybrydowy (obiektowo-funkcyjny); dynamicznie typowany; luźno typowany
- npm - Node Package Manager
- Model obiektowy
- Typy proste
- Obiekty
Notatki do wykładu 2
Zestaw 2 (do 2018-10-30)
- 2018-10-23 Javascript, podstawy języka (2)
Notatki do wykładu 3
- 2018-10-30 Javascript, funkcje
Notatki do wykładu 4
Zestaw 3 (do 2018-11-13)
- 2018-11-06 Javascript, obiektowość prototypowa
- Obiektowość
- "Tania" obiektowość z {}
- Obiektowość prototypowa
- Obiektowość z Object.create()
- Obiektowość z new
- Równoważność obu podejść
- Lukier syntaktyczny class, extends
Notatki do wykładu 5
Zestaw 4 (do 2018-11-20)
- 2018-11-13 Javascript, programowanie asynchroniczne, biblioteka standardowa
- Elementy znane z obiektowych języków programowania
- Programowanie asynchroniczne - historia paradygmatu
- Callback Hell
- moduł fs
- Promise - alternatywa dla programowania przez funkcje zwrotne
Notatki do wykładu 6
- 2018-11-20 node.js: HTTP, HTML
- Podstawy protokołu HTTP - żądania, odpowiedzi
- Podstawowe nagłówki żądań i odpowiedzi: host, Content-type, Content-length
- Debuggery warstwy HTTP
- Najprostszy serwer http w node.js
- ngrok - bezpieczny tunel do localhost (możliwość wystawienia na świat aplikacji z portem otwartym
tylko lokalnie, nawet za NAT/Firewall)
Notatki do wykładu 7
- 2018-11-27 Framework Express (1)
- demonstracja rozbudowy przykładu z poprzedniego wykładu o interakcję z użytkownikiem
- Po co nam framework do programowania aplikacji web?
- Wsparcie dla routingu - obsługa żądań do wielu adresów (w wersji bez silnika byłby to duży "if")
- Rozdzielenie części imperatywnej od deklaratywnej (MVC) (w wersji bez silnika można użyć string template)
- Wsparcie parsowania adresu, parsowania parametrów POST
- Wsparcie dla tworzenia ciastek
- Wsparcie dla obsługi sesji po stronie serwera
- Wsparcie dla szablonowania renderowania zawartości z ochroną przed atakiem Cross-site scripting (XSS)
- Frameworkiem jakiego użyjemy jest Express, najprzystępniejszy framework web dla node.js
- Wprowadzenie do silnika widoków - EJS
- Idea middleware
Notatki do wykładu 8
Zestaw 5 (do 2018-12-04)
- 2018-12-04 Express (2)
- jak działają middleware w tym middleware do obsługi błędów, atak Cross-site scripting
- użycie parametrów w ścieżce (route), atak Web Parameter Tampering
- obsługa ciastek (middleware cookie-parser)
- obsługa sesji (middleware express-session)
- złożone szablony z parametrami - przykład select/option
- autentykacja użytkowników - kompletna miniaplikacja do pobrania stąd
Notatki do wykładu 9
Zestaw 6 (do 2018-12-18)
- 2018-12-11 Express (3) (bezpieczne logowanie, uwierzytelnianie federacyjne)
- Middleware autentykacji
- Bezpieczne przechowywanie haseł użytkowników - problemy
- Uwierzytelnianie federacyjne, protokoły OAuth2 i WS-Federation/SAML.
- Przykład z wykładu z uwierzytelnianiem za pomocą OAuth2/Google do pobrania
Notatki do wykładu 10
- 2018-12-18 Express (4)
Notatki do wykładu 11
Zestaw 7 (do końca semestru)
- 2019-01-08 Bazy danych (1)
- Wprowadzenie, klasyfikacja
- Elementy projektowania relacyjnego
Notatki do wykładu 12
Zestaw 8 (do 2019-01-22)
- 2019-01-15 Bazy danych (2)
- Baza danych: relacje
- Klauzula JOIN
- Elementy programowania baz danych - pakiety
- SQL Server: mssql
- PostreSQL: pgpromise
- Pojęcie "ciągu połączenia" (connection string)
- Przykład kodu do prezentacji danych z tabeli, asynchronicznie z wykorzystaniem async/await
- wstawianie rekordów do tabel, zwracanie identyfikatora nowo wstawionego rekordu
- kwerendy parametryczne, atak typu SQL-Injection
- wzorzec Repository - warstwa API oddzielająca
kod aplikacji od dostępu do danych. Dzięki wprowadzeniu tej warstwy możliwa jest wymiana implementacji warstwy danych
bez wymiany kodu aplikacji.
- właściwa organizacja odpowiedzialności: repository zależy od connection, warstwa UI zależy od repository
- wzorzec mapowania obiektowo-relacyjnego
- przykładowa implementacja w node.js oparta o Promise - sequelize
- plany zapytań, wpływ indeksów na kolumnach na plany zapytań
Notatki do wykładu 13
- 2019-01-22 Elementy projektowania obiektowego
- Model pojęciowy, model obiektowy, model relacyjny
- UML
Notatki do wykładu 14
Zestaw 9 (do końca semestru)
- 2019-01-29 Testy jednostkowe
- Framework mocha
- npm install mocha -g
- Testy znajdują się w folderze /test
- Polecenie mocha uruchamia testy jednostkowe
- Przykładowy test
var assert = require('assert');
describe('Top level', function() {
describe('Sub level', function() {
it( 'Unit test function definition', function() {
assert.equal( [1,2,3].indexOf(4), -1 );
});
});
});
- Framework selenium - testy akceptacyjne interfejsu użytkownika aplikacji webowej
- Framework do skryptowania testów - WebDriver.io
- Przykładowy skrypt automatyzujący przeglądarkę internetową (za dokumentacją webdriver.io)
var webdriverio = require('webdriverio');
var options = { desiredCapabilities: { browserName: 'chrome' } };
var client = webdriverio.remote(options);
client
.init()
.url('https://duckduckgo.com/')
.setValue('#search_form_input_homepage', 'WebdriverIO')
.click('#search_button_homepage')
.getTitle().then(function(title) {
console.log('Title is: ' + title);
// outputs: "Title is: WebdriverIO (Software) at DuckDuckGo"
})
.end();
- Technologie klienckie - angular, react, extjs
- Technologie serwerowe : .NET Core
- Przykład aplikacji ASP.NET Core
Literatura
- Specyfikacja ECMA-262
- MDN
- Javascript The Definitive Guide
- Secrets of Javascript Ninja
- Functional Javascript
- Javascript Patterns
- Express in Action