Typowane zagadnienia jakie mogą pojawić się na egzaminie: wykład 1 Internety(Internet ;p), globalna sieć komputerowa korzystająca ze stosu protokołów TCP/IP protokół komunikacyjny zestaw ustalonych reguł do komuniacji programów przez sieć Prookoły warstey aplikacyjnej: (służą do definiowania semantyki komunikatow) HTTP Hypertext Transfer Protocol FTP File Mail Transfer Protocol SMTP Simple Mail Transfer Protocol POP3 Post Office Protocol v 3 HTTP wykorzystywany do: a) komunikacji między przglądarką a serwerem www; (ewolucja: od udostępniania statycznych dokumentow do bogatych aplikacji internetowych) b)komunikacji między fragmentami oprogramowania po sronie serwera, protokół jest wówczas nośnikiem dla zdalnych wywołań opracji typu RPC, mowimy wowczas o Web Services Sockets (Gniazda) API systemowe do korzystaniaz TCP, IP, UDP, Socket jest jednoznacznie identyfikowany przz adres IP, protokół end to end(tcp/ip) i port Sockety strumieniowe TCP Sochety datagramowe UDP TCP/IP w jego skłąd wchodza TCP, IP, UDP IP host to host, zajmuje się każdym pakietem osobno, jest best effort nie gwarantuje dostarczenia pakietu, moze się zduplikować, zgubić dostarczyć dane w zmienionej kolejności. IP określa jednoznacznie interfejs sieciowy. Operuje na adresach (liczba binarnych). Nazwa hosta (np.host.example.com) łątwiejsza do zapamiętania, warstwa izolująca użytkowników od amian adresu IP. TCP, UDP end to end, TCP musi najpierw musi nawiazać polaczenie (wymiana komuikatów uścisku dłoni )przed wymianą danych (handshake), UDP best effort IPv4 32 bity, adresy w postaci dotted quad 4 bajty jako liczby 0 255 oddzielone kropkami IPv6 128 bitów 16 bajtów oddzielonych dwukropkiem, zapisane szestnastkowo bazy lokalne i rozproszona baza danych DNS protokół warstwy aplikacyjnej (korzystający z TCP/IP tłumaczący nazwy domen na adresy IP) Port szesnasto bitowa liczba bez znaku z zakresu 1 65535, osobno dla TCP i UDP. Porty przypisuje się do aplikacji (zajmuje się tym organizacja IANA) Np. 21 i 20 to porty wykorzystywane przez FTP. JAVA I ZUO: InetAdress klasa ta reprezentuje adres w sieci(domenowy lub IP) NetworkInterface reprezentuje interfejs sieciowy Klasy dla komunikacji TCP: Socket ServerSocket u serwera, tworzy instancje Socket do obsługi połączeń
Metody read i write, TCP nie zachowuje rozmiaru komunikatów. Strumienie: OutputStrem strumień dancch binarnych do wysłania, klasa abstrakcyjne InputStream Ograniczenie TCP/IP dane są wysyłane w pakietach o rozmiarze będącym wielokrotnością 8 bitów. Framing ramkowanie aby zapobiec deadlockom i błędom protokołu: delimiter based specjalny symbol, który nie może się pojawić w komunikacie, oznacza koniec komunikatu explicit length na początku komunikatu na stałej ilośći bajtów zapisany jest rozmiar jego dalszej części HTTP implementuje obie techniki. HTTP żądanie Połączenie TCP w protokole HTTP otwiera klient. Ządanie składa się z : linii żądania zakońćzonej CRLF dowolnej ilości nagłówków, kazdy zakońćzony CRLF pustej linii CRLF (ale może miec też treść) ewentualna treść, tu musi byc też podana jej długośc, za pomocą Content length HTTP odpowiedź linia statusu zakończona CRLF dowolna ilość nagłówków, każcy zakońćzony CRLF pustej linii CRLF (ale może miec też treść) ewentualna treść, tu musi byc też podana jej długośc, za pomocą Content length lub zamknięcia połaczenia oznaczony koniec. W TCP każdy moze zamknąć połączenie. W HTTP klient lub serwer. Współbieżność serwera: Dwa podejścia: client per thread nowy wątek dla kazdego klienta thread pool (klient dostaje wątek z puli lub czeka) Executor lepszy niez reczna implementacja wątków. AtomicLong do synchronizacji. wykład 2 java i bazy danych? bleble Java Database Connectivity (JDBC) Przykłady klas: DriverManager, Connection(jest domyslnie w trybie autocommit) konstrukcja tr with resources DAO data access object, wrzozec projektowy używany jako fasada do jdbc,
pipeline klient moze tym samym połaczeniem wysłąc kilka żądań nie czekając na odpowiedź. Serwer musi w takiej samej kolejnosćie je odsyłać. wykład 4 (do zrobienia od slajdu 64 <DWR>) różnice w XHTML i HTML XHTML nie definiuje żadnych nowych elementów, jest identyczny z HTML 4.01 HTML 4,01/5 powińen być wysyłany jako text/html a XHTML jako application/xhtml+xml zasady w XHTML są bardziej surowe znaczniki i atrybuty muszą być psiane małymi literami wszystkie elementy muszą być zakończone atrybuty w cudzysłowiach(lub w apostrofach) każdy atrybut musi mieć nazwęi wartość bardziej surowe zasady zagnieżdżania (np <a> nie może być w <a>) znaki < > & muszą być reprezentowane przez encje (nawer jeżeli są w wartościach atrybutów) w XHTML w niektórych znacznikach (np <a> <form> <img> <map>) nie należy używać atrybutu name (zamiast niego id) zalety HTML zalety XHTML MIME (tego pewnie nie bedzie) w jakim nagłówku jest przesyłany MIME? jakie są wersje HTML 4.01 jest bardziej zwięzły nie ma tak ścisłych wymagań składni jest bardziej przenośny łatwiejszy w parsowaniu HTML text/html XHTML application/xhtml+xml obrazki image/gif, image/jpeg, image/png, image/svg+xml PDF application/pdf Adobe Flash application/x schockwave flash MP3 audio/mpeg Windows Media video/x ms wmv, audio/x ms wma w nagłówku HTTP Content Type strict nie zawiera elementów i atrybutów ze
starszych wersji transitional zawiera wszsyrtkie elementy i atrybuty ze starszych wersji frameset dla struktury dokumentu opartej na ramkach cechy HTML 5 nie wymaga aby kod HTML był dobrze uformowanym XMLem (cokolwiek to oznacza) dużo wymogów dotyczących poprawnosci dokumentów i ich dokładniejsze sprawdzanie możliwość zastosowania narzędzi pochodzących z xml (np XPath, XSLT) wspardzie przestrzeni nazw brak wersji (strict, frameset, transitional) dobrze tolerowany przez starsze przeglądarki nowości w HTML 5 nowe znaczniki do tworzenia struktury: hgroup figure, figcaption dialog, dt, dd mark time details dodatkowe informacje o divach: section article aside header footer nav figure nowe atrybuty datetime datetime local date month week time
number range email url contenteditable contextmenu draggable irrelevant repeat repeat start repeat min repeat max zmiany w użyciu niektórych istniejących atrybutów small i usunięcie niektórych atrybutów frame baza danych w przeglądarce LocalStorage SessionStorage rysowanie w przeglądarce canvas filmy w przeglądarce video formularze placeholder autofocus co to jest plik DTD? co to jest quirks mode w przeglądarce? co znajduje się w dokumencie? [CSS] do czego służą punkty zaczepienia (haki)? [CSS] w jaki sposób odwołujemy siędo id a w jaki do klasy? CSS (Document Type Definition) zawiera reguły do walidacji dokumentu przeglądarka przechodzi w ten tryb kiedy napotka błąd przy przetwarzaniu dokumentu Treść Struktura (znaczniki) Prezentacja (css) Zachowanie (skrypty) służą do dołączenia stylu CSS do elementu do id odwołujemy się przez #, a do klasy przez. id powinno być unikatowe w dokumencie, class może się powtarzać, dodatkowo w
atrybucie class może być kilka wartości odzielonych spacją style związane z czcionką, tekstem i kolorem są dziedziczone model pudełka w css 2.1: rozmiary pudełek obliczane są poprzez dodawanie wszystkich rozmiarów (np dla szerokosci padding+margin+width zawartosci+border) [CSS] układ strony float wymusza aby element był doklejony do marginesu clear wymusza aby element był pod poprzedzającym go elementem mającym właściwość float margin czyści obszar dookoła elementu (można niezależnie ustalić margines z każdej strony) margines nie ma koloru padding czyści obszar dookoła zawartości, korzysta z koloru tła zawartości [CSS3] nowości czym jest jquery? do czego może służyć jquery? [jquery] selektory selektory cienie napisów (txt shadow) zaokrąglone roki bez użycia grafik gradienty bez użycia grafik zmiana koloru zaznaczenia przezroczystość elementów jest biblioteką JavaScriptową przetwarzanie atrybutów elementów manipulowanie elementami zmiana stylu elementów obsługa zdarzeń animacje możliwość wykonywania zapytań AJAX (asynchroniczne zapytania) $( #id ) $(.class ) $( element ) $( [attribute] ) $( [attribute= value ] )
$( [attribute!= value ] ) $( [attribute$= value ] ) wszystko co kończy się na value $( [attribute^= value ] ) wszystko co zaczyna się na value $( [attribute*= value ] ) wszystko co zawiera value wyklad 7 (Django jakis ciąg dalszy) ale bezsens tłumaczy jak pisać django. nie wiem co pisac Modele tworzone w models.py, polecenie: python manage.py syncdb Istnieją rozne typ pól modeli np. TextField(), FileField()... W modelach można ustawić klucz główny, jesli tego nie zrobimy django samo ustawi domyślnie pole id typu AutoField() (jest to liczba całkowita autoinkrementrowana.) Można ustawić unique = True MOżna tworzyć relacje między obiektami w inncyh pakietach (aplikacjach), wtedy tworzymy przy ForeignKey piszemy np. app.author. Nie musimy używać join Można zdefiniować relacje wiele do wielu. Pole objects w klasie modelu jest tzw. menedżerem biektów (klasa Manager), służy do wyszukiwania rekordów. Inne podejsćie do baz danych: DAO Data Access Object, nie zakłdada nawet ze źródłem jest SQLowa baza danych. Można ograniczać relacje i dziedziczyć. Klasa Manager przypiana do klasy modelu jako atrybut objects, : Metody: all, filter, exclude, get exclude odwrotnosć filter zwraca rekordy nie spełniejące żadnych kryteriów get wyszukuje w kluczu głównym Klasa QuerySet reprezentuje listę egzemplarzy klas modeli zgodą z kryteriami. MOżna podawać obiektom tej klasy parametry słów kluczowych, np.(startswith, endswith, contains, gt, in...) QuerySet ma takei same metody jak Manager. Fikstury pliki w formacie takim jak XML, JSON lub YAML zawierające dane, któe mają być dodane do bazy. Syncdb (lub reset) przeszukuje podkatalog fixtures i aplikacji i tworząc tabelę dodaje od razu rekordy w plikach initial_data.json (lub.xml,.yaml) Klasa HttpRequest (jej obiekt jest przekazywany do funkcji widoku) i HttpResponse
(zwracany w funkcji widoku) Obiekt request ma pola GET i POST typu QueryDict request.cookies odzytujemy i dodajemy parametry GET, POST tylko odczytujemy Inne Atrybuty żądania: path ścieżka w url method metoda w HTTP (np.get) encoding sposob kodowania danych w żądaniu FILES słownik zawierający pliki przysysłane w żądaniu META słownik zawieracjący nagłówki HTTP user biekt uwierzytelnienia (dla HTTP) raw_post_data nieprzetworzona postać zadania post Warstwa pośrednicząca odpowiednik filtrów a Servlet API, jej klasy powinny być w krotce MIDDLEWARE_CLASSES w setings.py koncepcja duck typing klasy nie muszą po niczym dziedziczyć, tylko mieć metody o określonych nazwach, używany polimorfizm URLconf. wywołuje metody warstwy pośredniczacej żądanie Istnieją widoki generyczne i półgeneryczne. Obiekt kontekstu to słownik przekazany z widoku do szablonu, musi zawierać dane będące dynamiczną cząścią generowanej strony. Składnia Szablonów: {{klucz_zmiennej}} wypisanie wartości zmiennej {%polecenie%} wykonanie polecenia Filtry szablonów: {{string lower}} {{string escape}} {{person.isavaliable yesno: Tak, Nie }} Filtr yesno pobiera boolean i wypisuje odpowiedni tekst. Formularze tu lepiej otworzyć wykład ;p, s.36 wykład 8 (same bzdury o.o) jetty
war format aplikacji webowych ktore tworzy java(można ręcznie) mniej ważne rzeczy:nazwa wara to contextpath w url, port ustawiany jest w start.d/http.ini architektura jetty: Threadpool pula wątkow zarządzana przez serwer Connector conectory to są obiekty służące do akceptowania połaczeń Handler handlery obiekty służące do obsługi żądań powyższe rzeczy na rysunku łączą się z serwerem;p wpis środowiskowy stała zdefiniowana dla całego serwera(moze byc typu String, Integer, Float, Double, Long Short, Character, Byte, Boolean). Wpisy środowiskowe i rozne zasoby mozna wiązać w usłudze nazewniczej jndi(jest w domyślnej konfiguracji serwera, jak nie to trzeba skonfigurować w jetty.xml) Sterowniki MySql wystarczy wgrać jako jar. jdbc DataSource tworzymy zasob i referencję do niego wiążemy w kontekscie jettiego robi się to jako wpis w piku konfiguracyjnym jettyego, w przypadku zasobu musimy dodać też wpis do web.xml Z zasobu korzystamy nie w serwlecie tylko klasie DAO. apache dbcp(database connection pool) biblioteka służąca do korzystania z puli połączeń (bez tego na każde getconnection() tworzone jest nowe połaczenie) Aby aplikacja mogła korzystać z jakiegoś zasobu należy dodać wpis o nim w web.xml KOnfiguracja xml ma swoje odpowiedniki w kodzie java Wykład 9 (maven :( ) Co to jest maven? Repozytorium jarow Co to jest archetyp? jaki archetyp służy do aplikacji webowych? jest to narzędzie do zarządzania projektami i bibliotekami Maven może pobierać brakujące biblioteki z repozytorium archetyp to struktura projektu w mavenie (można go utworzyćpoleceniem mvn archetype:generate) maven archetype webapp jakie polecenie służy do budowania aplikacji w mavenie? mvn clean install jakim poleceniem można odpalić aplikację jetty? czym jest plik pom.xml? mvn jetty:run jest to makefile dla mavena
struktura projektu folder main/java zaiwera klasy javowe folder webapp znajdują się pliki jsp i inne zasoby które mają być umieszczone w warze w folderze webapp folder resource służy do testów w jakim pliku należy skonfigurować JNDI JNDI powinno być skonfigurowane w pliku jetty.xml, możliwe jest też umieszczenie konfiguracji w pliku pom.xml co to jest pull based?