Języki i narzędzia programowania III Łukasz Kamiński Wykład I - 2012-10-01
JNP III Cele zajęć Pokazanie pełnej ścieżki realizacji aplikacji na WWW. Pokazanie języka PHP Idea, budowa, działanie, integracja, zarys konstrukcji i podstawowe funkcje Pokazanie ogólnych koncepcji takich jak, hosting, protokoły IP, TCP, rozwiązywanie nazw (DNS), serwery WWW, HTTP, HTML, bazy danych i inne. Pokazanie ścieżki, bez wchodzenia w szczegóły, które każdy w razie potrzeby może dodrążyć.
JNP III Po zajęciach student powinien umieć: Zainstalować sobie lokalnie środowisko testowe. Wybrać, wykupić i skonfigurować hosting. Sprawdzić i skonfigurować serwer WWW. Sprawdzić i podłączyć się do bazy danych. Napisać aplikację WWW w języku PHP Uruchomić aplikację WWW na wykupionym hostingu i wykupionej domenie. Kurs dla NIEZAAWANSOWANYCH! Bez tricków, hacków, cudów.
Organizacja zajęć Termin, poniedziałek 8:30. Podział na wprowadzenie i na zaliczenie. Wprowadzenie, zajęcia 1-8. Wykłady wg planu Zaliczenie, zajęcia 9-15 Brak zajęć, pisanie programów przez studentów. Zaliczenie aplikacja WWW. Termin oddania aplikacji styczeń 2013 Aplikacja może być dowolna (ustalona) Konsultacje przez email lub za umówieniem.
Organizacja zajęć Plan wykładu Wprowadzenie do WWW i HTTP. Konfiguracja środowiska testowego. Domeny i hosting PHP konfiguracja Podstawy PHP (język składnia) Integracja z HTTP Generowanie danych (Smarty, XSLT) Generowanie grafiki Połączenie z bazą danych Biblioteki i aplikacje
Organizacja Zadanie zaliczeniowe. Dowolne, ale ustalone z prowadzącym! Można oddawać do 1. dnia sesji, np. jutro... Można zaliczać w 2. terminie. Strona wykładu http://kamis.waw.pl/jnp-2012/ Zajęcia kończą się zaliczeniem na ocenę. Aplikacje są oceniane przez prowadzącego. Aplikacja może nie działać, może działać, działać dobrze, lub bardzo dobrze. Aplikacja może mieć drobne błędy, istotne błędy, poważne błędy i bardzo poważne błędy.
Omawiane techonologie PHP Język skryptowy ogólnego przeznaczenia. Używany jako język obsługi żądań HTTP po stronie serwera. MySQL, SQLite, PostreSQL Bazy danych trwałość. Apache Serwer WWW obsługa komunikacji. HTTP protokół Firefox, IE, Opera, Chrome Przeglądarki internetowe.
Wprowadzenie ogólne IP DNS TCP Ruting TCP a WWW Protokół HTTP
Usługi WWW Protokół IP (schemat). Sieć lokalna, np. na wydziale. Podsieci, sieci lokalnej. Adresy IP, np. 192.168.2.1 (ifconfig, ipconfig). Interfejsy lokalne. IP zewnętrzne (www.pokapoka.pl). IP zapewnia przesyłanie pakietów - zawodne. Ruting, czyli sposób przesyłania pakietów (route). Możliwość przesłania pakietów (firewall, NAT). Porty usług, sposób na rozróżnienie usług.
Usługi WWW Protokół IP (cd.) Porty, np. SSH 22, WWW 80, 3306 MySQL. Standardowe porty to rzecz zupełnie umowna. IP wysłanie pakietu, bez gwarancji dostarczenia! DNS Translacja nazw zodiac.mimuw.edu.pl 193.0.96.129. Translacja hierarchiczna od końca. Związek wiele do wiele.
Usługi WWW TCP/IP. Protokół niezawodny do komunikacji dwukierunkowej pomiędzy komputerami w sieci. Adresacja IP, adres + port. Nawiązanie połączenia niesymetryczne. Nawiązane połączenie całkowicie symetryczne. Niezawodność opiera się na retransmisji danych, timeoucie, itp. Uwaga, w TCP/IP przy wysłaniu danych dostajemy informację, że dane zostały dostarczone, co nie oznacza, że nadawca jest odebrał!
Ruting Komputery są łączone w sieci. Sieć lokalna, np. ethernet. Sieć lokalna iplus (z podsiecią lokalną). Sieć lokalna neostrada (zewnętrzne numery IP). Internet jako graf połączonych sieci lokalnych. Sieci lokalne mają szereg mechanizmów do komunikowania się. Np. Firewall polityka zezwalania połączeń. NAT łączenie z komputerem za firewallem. Load Balancing rozkładanie obciążenia w sieci.
Konsekwencje użycia TCP WWW używa TCP, cała komunikacja w usługach WWW obiera się o TCP. To że klient łączy się do serwera nie znaczy, że serwer może się połączyć z klientem. Serwer nie jest w stanie identyfikować klienta po numerze IP. Można udawać przeglądarkę za pomocą np. programu telnet (np. telnet google.pl 80). Nazwy serwerów (np. google.pl) to nic innego niż wpisy DNS dla odpowiednich serwerów.
Usługi WWW Co się dzieje po wpisaniu w przeglądarkę http://www.gazeta.pl/? DNS rozwiązanie nazwy (www.gazeta.pl) na nr IP (80.252.0.145). Nawiązanie połączenia TCP/IP z hostem 80.252.0.145 na porcie 80 ( standardowy port WWW). Wysłanie żądania dla strony / - protokół HTTP. Odebranie odpowiedzi protokół HTTP. Rozłączenie.
Serwer WWW Z punktu widzenia serwera. Serwer czeka na wszystkie połączenia na pewnym porcie (standardowo 80). Przy nawiązaniu połączenia, odczytuje żądanie. Interpretuje żądanie. Zwraca wynik. Rozłącza się.
Protokół HTTP Służy do komunikacji klienta WWW (np. przeglądarka) z serwerem WWW. Protokół tekstowy (za wyjątkiem np. transmisji obrazków, czy kompresji danych). HTML jest czymś innym niż HTTP. Za pomocą protokołu HTTP można przesłać stronę WWW opisaną w postaci dokumentu HTML. http://en.wikipedia.org/wiki/hypertext_transf er_protocol
Protokół HTTP
Protokół HTTP
URL z przeglądarki http://www.google.pl/search?q=ala Port 80, alternatywnie: http://www.google.pl:1234/search?q=ala http nagłówek adresu opisujący protokół komunikacji. www.google.pl adres serwera. /search?q=ala część adresu specyfikująca parametry odwołania. Każde żądanie składa się z definicji serwera docelowego i parametrów żądania.
Wirtualne hosty Każda specyfikacja serwera to adres: www.google.pl, google.pl, google.com, www.google.com, itd. www.mimuw.edu.pl, 193.0.96.13 Ale adres IP nie jest pełną specyfikację adresu serwera! Wewnątrz jednego serwera WWW i wewnątrz jednego adresu IP serwera WWW może istnieć wiele serwisów.
Wirtualne hosty Standardowo adres rozwiązuje się do adresu IP, np. www.gazeta.pl 80.252.0.145. Ale http://www.gazeta.pl/ daje inny wynik niż http://80.252.0.145/. Np. www.deser.pl, www.wyborcza.pl, www.lula.pl, www.moto.pl 80.252.0.132 Ale każdy jest odrębnym serwisem. Wewnątrz serwera WWW można zdefiniować wiele serwisów WWW zależnych od adresu (domenowego) serwera.
Parametry odwołania /search?q=ala /deser/1,83453,6278644,nastolatki.html Całe żądanie jest interpretowane przez serwer. Sposób interpretacji mocno zależny od konfiguracji serwera. Standardowo znaki / oddzielają katalogi w logicznej strukturze serwera. Standardowo po? znajduje się lista parametrów w postaci nazwa=wartość&nazwa=wartość&... Postać łańcucha parametrów całkowicie umowa.
Łańcuchy parametrów Mechanizmy definiowania postaci żądań. Apache mod-rewrite. PHP wsparcie dla automatycznego interpretowania parametrów w postaci? nazwa=wartość&... Apache wsparcie dla interpretacji ścieżek postaci /nazwa/nazwa/nazwa/... za pomocą systemu plików i plików konfiguracji.
Protokół HTTP
Protokół HTTP
Protokół HTTP Standardowo GET odpowiedź. Odpowiedzi. Kody 100, 200, 300, 400, 500. 200 Ok 206 Partial Content. 300-307 przekierowanie. 401 autoryzacja. 403 brak dostępu. 404 Not found. 500 Błąd wewnętrzny.
HTTP usługi specjalne Rozszerzenie keep-alive. Standardowo każde żądanie do serwera WWW powinno iść w nowym połączeniu TCP. Mała sensowność takiego rozwiązania, lepiej trzymać połączenie i realizować kilka żądań w jednym połączeniu. Nie zmienia to bezpołączeniowej semantyki żądań WWW! Proxy Służy do minimalizacji ilości ruchu w sieci. Wpierane przez protokół HTTP. W dużej mierze przezroczyste dla programisty aplikacji WWW.
Usługi zewnętrzne Usługi przeglądarki. Cache Pipelining Wiele równoległych połączeń do pobrania całości wyniku. Najczęściej spotykane do pobierania w tle obrazków, plików js i css. Wykorzystywane też do ściągania tego samego pliku w kilku fragmentach. Serwer może nie pozwalać na to. Parsownie częściowego wyniku Wyświetlanie niekompletnego wyniku od razu po pobraniu części danych. Np. HTML. Warto mieć świadomość tego przy konstrukcji strony, np. wszystkie CSS-y na początku pliku.
Bezpołączniowość HTTP Konsekwencje. HTTP nie pozwala na jednoznaczną identyfikację połączenia czy użytkownika. Żądania do serwera są nieliniowe i nie muszą wynikać ze struktury stron WWW. Użytkownik może w URL wpisać cokolwiek i serwer nie ma na to wpływu.
Języki WWW Używając odpowiednich narzędzi do WWW w ogóle nie trzeba się przejmować obsługą HTTP. PHP Integracja z serwerem WWW (Apache). Pisanie skryptów w odpowiednim katalogu i automatyczne uruchamianie w momencie odwołania. PHP to zwykły program możliwy do uruchomienia z linii poleceń. Obsługa żądania.
Języki Języki ukrywają przed programistą obsługę HTTP. Mapowanie struktury odwołania /dir1/dir2/skrypt.php na katalogi i pliki na serwerze. Parsowanie parametrów, np. index.php? a=ala&b=ma&c=psa $a = ala ; $b = ma ; $c = psa ; Parsowanie nagłówków HTTP. Dodawanie nagłówków HTTP przy zwracaniu odpowiedzi.
Plan HTML GET/POST Cookie CSS Inne technologie JavaScript, Flash, Java. Instalacja Apache PHP MySQL Hosting Sprawdzenie konfiguracji Domena
HTML Prezentacja danych dla użytkownika.
HTML HTTP HTTP Serwer WWW HTML
HTML Renderowanie widoku po stronie klienta. Dużo materiałów w sieci. Teoretycznie dana strona powinna wyglądać tak samo na wszystkich przeglądarkach. Istnieją standardy, ale Standardy sobie a przeglądarki sobie. Standardy nie określają wszystkiego. IE (6, 7) ma swoje postrzeganie świata. Można robić zgodnie ze standardami, ale głupio aby na 20% przeglądarek nie działało? http://validator.w3.org/
HTML paradoks IE M$ ma problem z IE8. IE 5/6/7 niezgodne ze standardami. Programiści dostosowali strony do: Standardów IE Okazuje się, że obecnie strony rozpoznają czy przeglądarka to IE czy nie IE. Wersja 8 IE jest zgodna ze standardami, ale przez to niezgodna z IE 6/7. W efekcie strony mogą nie działać pod nowszymi wersjami IE.
HTML - formularze Rozdział na POST/GET Rożnica w sposobie przesyłania danych. Limity na długość żądania. GET RFC 2068-255 znaków, Opera ~ 4096, IE = 2083, FF ~ 8192. POST generalnie bez limitu, ale serwer może odrzucać połączenia po przekroczeniu limitu, uwaga na timeout, uwaga na cierpliwość użytkownika. Różnice w cachowaniu żądania. Koncepcja: GET pobranie danych do prezentacji. POST wykonanie operacji. Po POST powinno być przekierowanie na stronę GET! Inne zachowanie przeglądarki.
Formularz - przykład <form action='/x.php'><input name='a' value='b'/></form> Wysłanie GET. URL /x.php?a=b <form action='/x.php' method='post'><input name='a' value='b'/></form> Wysłanie GET. URL /x.php Dane przesyłane w treści żądania HTTP.
HTML GET/POST - cookie Mechanizm do przechowywanie danych serwera po stronie klienta. Część HTTP. Serwer może wysłać do przeglądarki informację, że klient ma przechowywać pewne dane. Dane te są przesyłane do serwera przy każdej komunikacji klient serwer! Dane są przypisane do domeny. Dane mają okres ważności (do określonej sekundy) lub do końca połączenia z serwerem. Nikt nie jest w stanie zagwarantować rzetelności danych w cookie.
Cookie
Logowanie HTTP: Login + Hasło Ustawienie cookie Np. login + hasło Serwer WWW walidacja login + hasło HTTP Cookie login + hasło
Cookie inne zastosowania Ustawienia użytkowników. gazeta.pl ustawienia kolejności boxów. Automatyczne logowanie. Identyfikacja użytkowników bez ich wiedzy. Słaba autoryzacja Koszyki zakupowe Liczniki odwiedzin Sondy Oszustwa Plotka o cenach w sklepach i innych serwisach Przykład ustawienia cookie dla poddomeny.