Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie"

Transkrypt

1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Informatyki, Elektroniki i Telekomunikacji KATEDRA INFORMATYKI PRACA MAGISTERSKA SZYMON KIEBZAK PRZECHOWYWANIE DANYCH PO STRONIE KLIENTA. DOSTEPNOŚĆ DANYCH W TRYBIE OFFLINE. PROMOTOR: dr inż. Arkadiusz Janik Kraków 2013

2 OŚWIADCZENIE AUTORA PRACY OŚWIADCZAM, ŚWIADOMY ODPOWIEDZIALNOŚCI KARNEJ ZA POŚWIADCZENIE NIEPRAWDY, ŻE NINIEJSZA PRACE DYPLOMOWA WYKONAŁEM OSOBIŚCIE I SAMODZIELNIE, I NIE KORZYSTAŁEM ZE ŹRÓDEŁ INNYCH NIŻ WYMIENIONE W PRACY PODPIS

3 AGH University of Science and Technology in Krakow Faculty of Computer Science, Electronics and Telecommunication DEPARTMENT OF COMPUTER SCIENCE MASTER OF SCIENCE THESIS SZYMON KIEBZAK CLIENT-SIDE STORAGE. OFFLINE AVAILABILITY OF DATA. SUPERVISOR: Arkadiusz Janik Ph.D Krakow 2013

4 Serdecznie dziękuję Panu dr inż. Arkadiuszowi Janikowi - za inspirację tematem, cierpliwość i cenne uwagi.

5 Spis treści 1. Wstęp Sposoby przechowywania danych po stronie klienta w architekturze klient - serwer Cel, historia, ewolucja Przegląd istniejących technologii HTTP Cookie Alternatywy dla cookie WebSQL Database Nowe propozycje i specyfikacje W3C Plik manifestu HTML WebStorage Indexed Database File API File API - Filesystems File API - FileWriter Asynchroniczne i synchroniczne API Wsparcie przeglądarek i implementacje Specyfikacja a bezpieczeństwo Wydajność Aplikacje klient-serwer a urzadzenia mobilne Specyfika urządzeń mobilnych Dostęp do sieci Architektury aplikacji na urządzenia mobilne Próby odejścia od architektury z grubym klientem RWD - Responsive Web Design PhoneGap Przechowywanie danych z wykorzystaniem elementów HTML

6 SPIS TREŚCI 6 4. Wykorzystanie nowych sposobów ze specyfikacji HTML Możliwe zastosowania Powstanie idei stworzenia frameworka Powiązane prace Opis zaprojektowanego frameworka Cel Projekt Cache owanie żądań HTTP Cache owanie formularzy HTML Przechowywanie danych przy nawigacji między stronami Dostęp do przestrzeni z danymi w przeglądarce Wsparcie przeglądarek Użyte technologie Wykorzystanie stworzonego frameworka Jak korzystać z frameworka Klasy obiektów przeznaczonych do przechowywania Korzystnie z tagów JSP Klasy pomocnicze Przykład 1: Offline owy edytor grafiki Przykład 2: Klient poczty Podsumowanie Plany rozwoju frameworka A. Elementy frameworka A.1. Adnotacje Java A.2. Tagi JSP... 70

7 Spis rysunków 5.1 Schemat budowy frameworka Cache owanie żądań HTTP Cache owanie formularzy HTML Przechowywanie danych przy nawigacji między stronami Dostęp do przestrzeni z danymi w przeglądarce

8 1. Wstęp Aplikacje działające w architekturze klient - serwer stanowią ogromną część przemysłu informatycznego. Dostarczają one usługi i produkty skierowane często do użytkownika końcowego, którym jest potencjalnie każdy człowiek. Dzięki rosnącej (i już ogromnej) dostępności sieci Internet, standaryzacji protokołów komunikacji i środowisk uruchamiania, dostarczanie usług drogą elektroniczną stało sie istotnym składnikiem działalności przedsiębiorstw czy instytucji. Od momentu pojawienia się możliwości wymiany informacji pomiędzy dwiema fizycznie różnymi maszynami za pośrednictwem protokołów komunikacyjnych, aplikacje w architekturze klient - serwer ulegały ewolucji i ciągłym poprawom. Terminale zastąpili grubi klienci; tych natomiast, po pojawieniu się pierwszych przeglądarek, zastąpili ciency klienci. Często, wraz z rozwojem produktów i rosnącej liczby użytkowników, dotychczas proste, statyczne strony webowe zmieniały się w typowe aplikacje klient - serwer. Wiele przedsiębiorstw świadczy swoje usługi tylko i wyłącznie za pomocą aplikacji webowych. Niekiedy to właśnie od usług elektronicznych zaczęły swoje istnienie lub jest to dominująca bądź niezwykle ważna gałąź ich działalności. Do poważnych produktów udostępnianych na szeroką skalę dzięki sieci Internet za pomocą aplikacji webowych należy zaliczyć sklepy internetowe, bankowość elektroniczną, portale informacyjne, społecznościowe, chmury obliczeniowe, klientów poczty , udostępnianie przestrzeni dyskowej i wiele innych, z których na co dzień korzysta każdy z nas. Od kilku lat można zaobserwować rosnąca popularność urządzeń mobilnych. Urządzenia te najczęściej pozbawione są nie tylko przewodowego, wiarygodnego dostępu do sieci LAN, ale też nie zawsze mogą korzystać z sieci Internet poprzez Wi-Fi, wykorzystując do tego technologie takie jak GPRS, EDGE czy HSDPA. Standardy te mają jednak swoje ograniczenia związane z przepustowością łącza (w porównaniu do sieci LAN i WLAN) oraz zasięgiem, zwłaszcza gdy weźmiemy pod uwagę mobilność urządzeń, które z nich korzystają. W takich okolicznościach aplikacje webowe na urządzenia mobilne tworzone najczęściej są jako natywne aplikacje, czyli typowi grubi klienci. Aktualnie dostępne na rynku urządzenia mobilne wyposażone są w różne systemy operacyjne (Android, ios, BlackBerry OS, Windows Mobile/Phone i inne), co powoduje, że pojedynczy produkt, aby trafił do wszystkich użytkowników urządzeń mobilnych, musi zostać zaimplementowany na kilka platform, co pociąga za sobą oczywiste dodatkowe nakłady w porównaniu do aplikacji webowych opartych na dokumentach HTML. 8

9 9 Coraz więcej użytkowników sieci Internet przekłada się na wykorzystanie zasobów serwerów HTTP. Jednocześnie przeciętny komputer zwykłego użytkownika posiada dużą ilość zasobów obliczeniowych i pamięciowych, które nie są wykorzystywane w aplikacjach webowych w architekturze z cienkim klientem z prostej przyczyny - brak technologii, które by to umożliwiały. W urządzeniach mobilnych ze względu na specyfikę ich użytkowania lepiej sprawdzają się aplikacje webowe z grubym klientem, co jednak ma swoje wady. Organizacja W3C wprowadziła nową specyfikację - język HTML5. Wraz z nim pojawiły sie specyfikacje nowych technologii, które maja umożliwić przechowywanie danych po stronie klienta - w przeglądarce internetowej, do których dostęp programista miałby przy użyciu języka JavaScript. Można przypuszczać, ze dzięki zastosowaniu nowych elementów specyfikacji HTML5, dotychczasowi ciency klienci mogliby stać sie grubszymi klientami bez opuszczania okna przeglądarki. Jeżeli to zostałoby osiągnięte, równie dobrze możnaby zamiast pisania kilku natywnych aplikacji tego samego produktu na różne platformy mobilne zaprojektować i zaimplementować jedną aplikację webową opartą o specyfikację HTML5 (choć trzeba też pamiętać o tym, że mobilne aplikacje natywne mogą korzystać z takich usług udostępnianych przez system jak geolokalizacja, detekcja typu połączenia czy dostęp do aparatu). Jednak jak wiadomo, część serwerowa aplikacji webowych może być tworzone w różnych językach programowania, jak również z wykorzystaniem różnych frameworków w obrębie języka. Jednym z popularniejszych języków dla aplikacji webowych jest Java, a wśród frameworków uruchamianych w JVM - te oparte o technologię Java Server Pages. Integracja tych frameworków z nowymi elementami specyfikacji HTML5 nie jest już taka oczywista i jest bardzo rzadko poruszana w obecnej literaturze. Elementy umożliwiające przechowywanie danych po stronie klienta ze specyfikacji HTML5 nie są jeszcze ostatecznymi rekomendacjami organizacji W3C, dlatego jednym z celów pracy będzie gruntowne zbadanie możliwości tych technologii, traktowania ich przez przeglądarki, bezpieczeństwo korzystania z nich i ich wydajność. Chciałbym tez pokazać praktyczne możliwości zastosowań tych technologii na różnych przykładach. Wreszcie, jako główny cel pracy - zaprojektować oraz zaimplementować bibliotekę - framework wspomagający programistę w korzystaniu z tych technologii podczas tworzenia aplikacji webowych opartych o strony JSP. Oczywiste jest, ze tworzenie aplikacji webowej, w której elementy przechowywania danych i obliczeń dokonywać się będą nie tylko po stronie serwera, ale tez po stronie klienta, wymaga większego wysiłku ze strony projektanta oraz programistów, jednak korzyści mogą być o wiele większe niż dodatkowe nakłady. Te korzyści to zmniejszenie zużycia zasobów serwerów HTTP i zajętości łącza. Jeżeli zaś chodzi o urządzenia mobilne, to korzyścią będzie tworzenie aplikacji raz, a nie na kilka platform. Ze strony użytkownika aplikacji webowej korzyścią będzie szybsze działanie, ponieważ część akcji aplikacja będzie mogła wykonać bez konieczności wysyłania zadania do serwera. Innymi słowy, odpowiednio zaprojektowana i zaimplementowana

10 10 aplikacja webowa będzie mogła działać całkowicie w trybie offline. Stworzenie frameworka powinno zachęcić projektantów i programistów aplikacji do skorzystania dobrodziejstw nowych elementów specyfikacji HTML5.

11 2. Sposoby przechowywania danych po stronie klienta w architekturze klient - serwer W niniejszej pracy zajmuję się problemem tworzenia oprogramowania w architekturze klient-serwer. W niniejszym rozdziale zostanie krótko przedstawiona ewolucja zmian zachodząca w systemach o takiej architekturze. Z tego typu aplikacjami wiąże się bezpośrednio problem zachowania stanu aplikacji klienta, czyli możliwości przechowywania danych oraz operacji na nich zarówno po stronie serwera, jak i po stronie klienta. Tematem pracy jest przechowywanie danych po stronie klienta, dlatego poniżej zostanie przedstawiony cel tego przechowywania oraz istniejące sposoby, a także nowe specyfikacje i propozycje specyfikacji technologii umożliwiających przechowywanie danych po stronie klienta zaproponowane przez organizację W3C. WorldWideWeb Consortium to organizacja stworzona przez twórcę pierwszej przeglądarki internetowej, Tima Berners-Lee, która zajmuje się ustalaniem standardów pisania i przesyłania stron w usłudze WWW Cel, historia, ewolucja Mainframe i terminale Architektura klient-serwer wprowadza dekompozycję zadań elementów systemu. Serwer jest jednostką świadczącą usługi klientowi lub klientom, którzy zgłaszają serwerowi swoje żądania. Początki systemów w tej architekturze sięgają na długo przed erą nie tylko Internetu, ale również komputerów osobistych. W czasach, gdy komputery były bardzo kosztowne, jedna firma lub instytucja posiadała jeden komputer np. klasy mainframe, który był przeznaczony do obsługi wielu użytkowników, ponieważ był przystosowany do wydajnych operacji wejścia - wyjścia. Do tego komputera podłączonych było jeden lub więcej terminali. Każdy z nich składał się z urządzenia wejścia (klawiatury) oraz wyjścia (monitor), które służyły użytkownikowi systemu do komunikowania się z komputerem. Komunikacja ta w tamtych czasach odbywała się najczęściej jeszcze za pomocą interfejsu szeregowego RS-232. Całość obliczeń, przetwarzania i składowania danych oraz wykonywania operacji, które użytkownik poprzez terminal zlecił komputerowi, wykonywała się na centralnym komputerze. 11

12 2.1. Cel, historia, ewolucja 12 Klient gruby Tzw. rewolucja krzemowa doprowadziła do spadku cen sprzętu, powstania i pojawienia się na rynku komputerów osobistych. Spowodowało to, iż firmy i instytucje mogły zastąpić terminale komputerami PC, a przeciętnego człowieka stać było na kupno komputera do domu. Był to początek ery jedna maszyna - jeden człowiek. Komputery osobiste posiadały system, który umożliwiał instalowanie i uruchamianie oprogramowania, a ponadto posiadały określoną moc obliczeniową i przestrzeń pamięciową. Twórcy oprogramowania, chcąc wykorzystać te możliwości, zaczęli tworzyć aplikacje w architekturze klient-serwerem z grubym klientem. Część obliczeń oraz przechowanie danych mogło zostać przeniesione na stronę klienta, co było oczywistą zaletą, gdyż do części funkcji aplikacji nie było potrzeby łączenia się z serwerem. Miało to też pozytywny wpływ na obciążenie serwera - mniej żądań od klientów w postaci zapytań o zasoby, jak również mniej wykonywanych obliczeń czysto biznesowych. Aplikacje mogły działać przez większość czasu offline, łącząc się z siecią tylko w razie konieczności (np. synchronizacji z serwerem). Niestety, podejście to posiadało również wady - aktualizacja aplikacji wiązała się z instalacją aktualizacji bądź nowej wersji programu na komputerze klienta, a w przypadku zmian w części serwerowej - niekiedy koniecznością utrzymywania kliku wersji systemu. Pierwsza przegladarka i klient cienki W 1990 powstała pierwsza przeglądarka internetowa, napisana przez sir Timothy Berners- Lee, a rok później przedstawił on pierwszą publicznie dostępną specyfikację języka HTML. Zaczęło powstawać coraz więcej stron internetowych, które można uznać za aplikacje o architekturze klient-serwer z cienkim klientem. Aplikacje w tej architekturze posiadają wady, których nie mają klienci grubi : aplikacje te, uruchamiane w przeglądarkach internetowych, muszą być dostosowane do ograniczeń wynikających z protokołów i standardów, ponadto mają sens tylko podczas ciągłego dostępu do sieci Internet. Co za tym idzie, większość operacji wiąże się z wysłaniem żądania do serwera HTTP, a więc dochodzi tutaj opóźnienie w wykonaniu operacji związane z właściwościami sieci. Mimo wszystko, dzięki przewadze zalet nad niedogodnościami, aplikacje z cienkim klientem zdobyły wielką popularność. Aplikacje użytkowe skierowane do każdego użytkownika sieci Internet najczęściej zbudowane są w architekturze klient - serwer. Właściwościami tego rodzaju programów, które zdecydowały o tym trendzie jest przede wszystkim brak konieczności instalacji oprogramowania, a następnie brak konieczności modyfikacji po stronie klienta w przypadku aktualizacji aplikacji na serwerze. Mamy tutaj do czynienia więc z centralnym zarządzeniem oprogramowaniem, co ułatwia kontrolę nad aplikacją. Ponadto, aby korzystać z aplikacji tego typu, wystarczy, że użytkownik posiada na swoim urządzeniu przeglądarkę internetową i dostęp do Internetu. Co więcej, ma gwarancję, że na każdym innym urządzeniu, z którego będzie korzystał, aby uzyskać dostęp do aplikacji, będzie korzystał z tej samej wersji aplikacji, o ile w międzyczasie nie dokonano aktualizacji jej

13 2.2. Przegląd istniejących technologii 13 na serwerze. Ewolucja i nierozwiazane problemy W 1995 roku powstał język JavaScript - dzisiaj jedyny wspierany przez W3C skryptowy język, którego potrafią interpretować przeglądarki internetowe. Oprócz możliwości tworzenia stron bardziej dynamicznych, pozwolił on na to, aby część obliczeń (np. wstępna walidacja danych wprowadzanych przez użytkownika do formularza HTML) wykonywała się w przeglądarce internetowej klienta. Klient cienki stał się tym samym trochę grubszy, a serwery mogły odnotować zmniejszenie obciążenia swoich procesorów. Niektóre typy aplikacji dalej musiały być wytwarzane w architekturze grubego klienta. Były to np. aplikacje, które potrzebowały dostępu do obsługi systemu plików w systemie użytkownika (np. zapis dokumentów/obrazów w edytorze tekstu/grafiki) lub też zwyczajnie potrzebowały przestrzeni, w której mogłyby składować dane aplikacji. Dla przykładu - wiele osób, które posiadają konta usługi , korzystają z tej usługi za pomocą programów pocztowych - grubych klientów poczty . Dzięki temu, bez konieczności łączenia się z siecią mają nieograniczony dostęp do już raz pobranych wiadomości czy załączników. Problem przechowywania danych po stronie klienta był poważny i zaczęto pracę nad tym, aby jednak w jakiś sposób móc utrzymywać pewien stan aplikacji po stronie klienta. W następnych sekcjach tego rozdziału zostaną opisane sposoby, jakie zostały wprowadzone do choć częściowego rozwiązania problemu oraz nowe, wprowadzane, będące (w momencie pisania tej pracy) w stanie dopracowywania specyfikacji w ramach organizacji W3C Przeglad istniejacych technologii HTTP Cookie Historia Był czerwiec roku 1994, kiedy ówczesny pracownik Netscape Communications, Lou Montulli wpadł na pomysł mechanizmu HTTP cookie. Jego pracodawca w tym czasie tworzył projekt dla firmy MCI, która zleciła stworzenie sklepu internetowego (a trzeba wiedzieć, że w tych czasach aplikacje e-commerce dopiero raczkowały). MCI nie chciała na swoich serwerach przechowywać częściowego stanu transakcji wykonywanej przez klienta - czyli utrzymywać u siebie popularnego dziś koszyka użytkownika, dlatego zleciła wykonawcy wymyślenie sposobu na przechowywanie stanu transakcji w komputerze klienta. Montulli wraz ze współpracownikami napisał specyfikację HTTP Cookie, a w październiku tego samego roku, wersja beta przeglądarki Mosaic Netscape miała zaimplementowaną obsługę mechanizmu ciasteczek. Niedługo potem ich wsparcie zostało wprowadzone w Internet Explorer w wersji 2, po czym wywołały

14 2.2. Przegląd istniejących technologii 14 spore kontrowersje w związku z kwestiami prywatności i bezpieczeństwa tego mechanizmu, które trwają do dziś, a owocem tego jest ostatnie prawo telekomunikacyjne wprowadzone przez władze Unii Europejskiej nakazujące twórcom stron informowanie użytkownika o fakcie korzystania przez stronę z mechanizmu HTTP cookie. Działanie Mechanizm ciasteczek HTTP to małe porcje danych, składające się przede wszystkim z obowiązkowej pary - nazwa ciasteczka, wartość ciasteczka. Prócz tego mogą zawierać dodatkowe informacje, jak np. czas wygaśnięcia ciasteczka (czyli kiedy powinno byś usunięte), zakres widoczności ciasteczka (określone przez domenę oraz ścieżkę względną) oraz opcjonalne atrybuty secure oraz httponly. Przy każdym żądaniu HTTP do danej domeny, wszystkie ciasteczka tej domeny wysyłane są wraz z tym żądaniem do serwera HTTP obsługującego to żądanie, dlatego istnieje sztywne ograniczenie na ilość miejsca zajmowane przez wszystkie ciasteczka dla konkretnej domeny - 4kB (przy czym pojedyncze ciasteczko zawiera maksymalnie 255 znaków). Proces tworzenia ciasteczek polega na wysłaniu przez serwer pakietu odpowiedzi HTTP (na żądanie HTTP), w którego nagłówku zawarte jest polecenie Set-Cookie. Aby dodać nowe ciasteczko podaje się jego nazwę i wartość, ewentualnie opcjonalne parametry. Jeżeli ciasteczko już istniało, zostaje nadpisane. Aby usunąć ciasteczko, wysyła się ciasteczko o takiej samej nazwie, ale z minioną datą. Polecenie Set-Cookie może pojawić się więcej niż raz w nagłówku HTTP, aby przesłać więcej ciasteczek. Rodzaje ciasteczek Istnieje kilka rodzajów ciasteczek. Ciasteczka sesyjne zostają usunięte z komputera użytkownika w momencie wyłączania przeglądarki. Ciasteczka trwałe wykraczają poza sesje i przechowywane są w komputerze użytkownika przez czas podany w atrybucie ciasteczka Max- Age. Istnieją również bezpieczne ciasteczka - mają ustawiony atrybut secure i oznacza to, że używane są tylko podczas transmisji HTTPS, a więc dane takiego ciasteczka będą zaszyfrowane. Ciasteczka mogą mieć ustawiony atrybut HTTPOnly. Takie ciasteczko zostanie przesłane na serwer tylko i wyłącznie podczas wysyłania żądania HTTP/HTTPS, zabroniony zostanie dostęp do nich z innych źródeł, np. skryptów w przeglądarce. Ciasteczka możemy również podzielić na first-party oraz third-party. Jeżeli użytkownik odwiedza stronę na jakiejś domenie (nazwijmy ją domena A), to może otrzymać od serwera ciasteczka właśnie dla tej domeny i są to ciasteczka first-party. Jeżeli zaś, przykładowo, na stronie istnieje reklama uruchamiana z innej domeny (domena B), to może dojść do sytuacji, w której użytkownik odwiedzając domenę A, będzie na swoim komputerze posiadał ciasteczka nie tylko z domeny A, ale też z domeny B. Te drugie ciasteczka nazwiemy ciasteczka third-party.

15 2.2. Przegląd istniejących technologii 15 Zachowanie przegladarek Specyfikacja RFC 2109 narzuca na przeglądarki następujące limity: utrzymywanie co najmniej 300 ciasteczek (a co najmniej 20 na hosta), każde może mieć co najmniej 4kB danych. Ze względów bezpieczeństwa, nowoczesne przeglądarki dają użytkownikom możliwość zmiany ustawień plików cookies. Użytkownicy mogą włączyć lub kompletnie wyłączyć obsługę plików cookies przez przeglądarki - polecenia Set-Cookie w nagłówku pakietu HTTP z serwera zostaną zignorowane przez przeglądarkę i żadne ciasteczka nie zostaną przesłane z powrotem do serwera w żądaniu HTTP. Przy włączone obsłudze ciasteczek przeglądarki udostępniają narzędzia do manipulowania plikami cookies - użytkownicy mogą usuwać wybrane przez siebie ciasteczka. Wykorzystanie Jednym z przykładów wykorzystania ciasteczek jest zarządzanie sesją. Po wejściu na stronę, bądź zalogowaniu użytkownika, serwer może wysłać ciasteczko z unikalnym identyfikatorem sesji. Przy każdym żądaniu HTTP identyfikator ten zostanie przesłany na serwer i serwer będzie mógł zidentyfikować sesję użytkownika. Ciasteczka używane są też do śledzenia aktywności użytkowników. Jeżeli użytkownik chce wejść na jakąś stronę internetową, przeglądarka wysyła żądanie HTTP do odpowiedniego serwera. Serwer, na podstawie ustawionych ciasteczek dla tej witryny może stwierdzić, czy użytkownik już wcześniej odwiedzał tę stronę. Odpowiednio skonstruowane cookie może też zawierać informację, ile razy użytkownik odwiedzał daną stronę. Nie tylko zalogowani użytkownicy mogą korzystać z możliwości ciasteczek. Strony internetowe często odczytują informacje z ciasteczek, aby spersonalizować swoje działanie. Polega to na zapamiętywaniu w ciasteczku poprzednich zachowań użytkownika. Np. wyszukiwarka Google, kiedy korzysta z niej niezalogowany użytkownik, zapamięta niektóre ustawienia, np. w jakim języku ma uruchomić wyszukiwanie albo ilość wyników na stronę. Przy następnym wyszukiwaniu, serwer odczyta zawartość plików cookie i wyszukiwarka domyślnie użyje tych ustawień. Wady Jest kilka cech ciasteczek, które mogą zostać odebrane w niektórych przypadkach jako wady. Po pierwsze, ilość informacji, które można przechowywać - dla jednej domeny jest to 4kB informacji. Poza tym, jedynym formatem ciasteczek jest tekst. Co więcej, podczas każdego żądania HTTP do serwera, do pakietu dołączona zostaje cała zawartość pliku cookie danej domeny, nie tylko wtedy, gdy jest to potrzebne - generuje to większą ilość danych przesyłanych przez sieć. Jednak najwięcej kontrowersji wynika z kwestii bezpieczeństwa.

16 2.2. Przegląd istniejących technologii 16 Po pierwsze, ciasteczka dołączane do żądania HTTP, mogą poddać się atakowi typu manin-the-middle, a więc mogą zostać podsłuchane wraz z całym ruchem sieciowym (oczywiście, to podsłuchanie treści grozi nie tylko ciasteczkom, ale całemu pakietowi). Chcąc zapobiec możliwości podsłuchania szczególnie wrażliwych danych, serwer może oznaczyć ciasteczko atrybutem secure, co oznacza, że ciasteczko będzie przesyłane na serwer tylko w przypadku korzystania z protokołu HTTPS. Kolejnym sposobem ataku jest zatruwanie DNS. Załóżmy, że do serwera DNS trafi fałszywy wpis kojarzący jakiś adres IP z domeną atakujący.strona.pl. Użytkownik nawet nie musi chcieć wchodzić na taki adres. Wystarczy, że coś spowoduje komunikacje po protokole HTTP, np. umieszczenie znacznika <img> w dokumencie HTML, ze źródłem obrazka, umieszczonego w adresie za domeną atakujacy.strona.pl. W takim wypadku, w żądaniu HTTP umieszczone zostaną nie tylko ciasteczka ustawione dla domeny atakujacy.strona.pl. Mechanizm ciasteczek oparty o oficjalną specyfikację wyśle na serwer również ciasteczka dla domeny strona.pl, a więc atakujący ma możliwość zdobycia poufnych informacji użytkowników korzystających z interesującej go domeny. Ciasteczka są również podatne na ataki typu cross-site scripting i cross-site request forgery. Np. do zawartości pliku cookie domeny aktualnie otwartej w przeglądarce strony można uzyskać z atrybutu cookie javascriptowej zmiennej document (document.cookie). Można temu zapobiec, jeśli serwer ustawiając dane ciasteczko użyje dodatkowo wspominanego wcześniej atrybutu HttpOnly (atrybut ten pojawił się w specyfikacji HTTP Cookie poźniej, dlatego jest w pełni wspierany w przeglądarkach: Internet Explorer od wersji 7, Mozilla Firefox od wersji 3, Opera od wersji 11, Safari od wersji 5, Safari iphone od wersji ios4 oraz Google Chrome od wersji 12). Innym przykładem ataku może być sytuacja taka, iż w przeglądarce użytkownika mogą być zapisane cookie, które utrzymują informacje autentykacyjne użytkownika w danym serwisie internetowym. W takim przypadku, odpowiedni skrypt lub kod HTML może spowodować wysłania do serwera serwisu odpowiednio spreparowanego żądania HTTP. Jest to bardzo popularny atak, lecz często, nawet szanujące się strony internetowe nie bronią się przed tego typu atakami. Np. popularny serwis goldenline.pl - jeżeli w przeglądarce użytkownika pozostało ciasteczko z danymi autentykacyjnymi, to tym atakiem można edytować profil (dane) użytkownika. Jest to typowy przykład ataku typu cross-site request forgery. Wymienione wady prowadzą pośrednio do jeszcze jednej - obawa użytkowników przed używaniem plików cookies. Efektem jest wyłączanie obsługi ciasteczek w przeglądarkach. Niestety, wiele stron do działania wymaga włączanej obsługi tego mechanizmu - bez niej np. może nie być możliwości zalogowania się do serwisu. Mimo swoich wad, pliki cookie wciąż są chętnie używane przez programistów i twórców stron internetowych - czasami bezpośrednio, a czasami w związku z używaniem frameworków webowych. Przez cały ten czas podejmowano próby zastąpienia ciasteczek innymi technologiami lub stosowania rozwiązań mających na celu

17 2.2. Przegląd istniejących technologii 17 uzyskanie podobnego działania, jak w przypadku plików cookie, co zostało opisane w kolejnych sekcjach Alternatywy dla cookie Dane w URL W żądaniu HTTP podaje się URL zasobu znajdującego się na serwerze. Dodatkowo, do URL można dołączyć parametry, które mogą zostać odczytane na serwerze (np. przez skrypt PHP bądź w serwlecie Javy). Parametru URL mogą posłużyć zamiast ciasteczek np. w trzymaniu informacji związanych z sesją użytkownika (nie wykroczą one poza obręb sesji - parametry tracimy m.in. podczas wyłączenia okienka przeglądarki). Np. mechanizmy sesji w PHP czy technologii Java Servlet używają parametrów URL do przechowywania informacji o sesji, jeżeli w przeglądarce wyłączona jest obsługa plików cookies. Adres IP Mechanizm cookies jest wykorzystywany np. do budowania statystyk odwiedzin stron. M. in. ustalana jest liczba odwiedzin unikalnych użytkowników, co jest łatwe do osiągnięcia korzystając z ciasteczek. Teoretycznie, to samo można by osiągnąć korzystając z identyfikacji adresu IP komputera wysyłającego żądanie HTTP. Jednak w dzisiejszych czasach na przeszkodzie stoją takie mechanizmy jak DHCP czy fakt, że większość komputerów umieszczona jest za NATem WebSQL Database Specyfikacja WebSQL Database to SQL-owa baza danych, działająca po stronie klienta - wbudowana w przeglądarki internetowe. Zaletą takiej organizacji danych w przeglądarce jest fakt, że twórcy aplikacji webowych są zazwyczaj zaznajomieni z językiem SQL, ponieważ bardzo często bazy danych po stronie serwerowej są również bazami SQL. Prace nad WebSQL rozpoczęły się całkiem niedawno, a proces tworzenia specyfikacji, jak zazwyczaj przy okazji technologii związanych z przeglądarkami internetowymi prowadziła Web Applications Working Group wydzielona w organizacji W3C. Technologia ta nie doczekała się oficjalnej specyfikacji, gdyż 18 listopada 2010 roku grupa ta zawiesiła pracę nad WebSQL Database. Oficjalnym powodem było to, że wszystkie przeglądarki, które zaangażowane były w implementację u siebie tej technologii używały SQLite, a W3C potrzebowało wielu niezależnych implementacji, aby rozpocząć proces standaryzacji. W związku z tym, przeglądarki, jakie wspierają dalej tę bazę to Google Chrome od wersji 4, Safari od wersji 3.1, Opera od wersji 10.5, ios Safari od wersji 3.2, Android Browser od wersji 2.1, BlackBerry Browser od wersji 7.0, Opera Mobile od wersji 11.0 oraz Chrome for Android od wersji Internet Explorer

18 2.3. Nowe propozycje i specyfikacje W3C 18 oraz Mozilla Firefox nie wspierają tej technologii, choć akurat na Firefoxa powstał plug-in, który umożliwiał korzystanie z niej. W związku z brakiem wsparcia od W3C, niewykluczone, że przeglądarki będą wycofywać w nowszych wersjach wsparcie dla WebSQL Database. WebSQL bez wątpienia było bardzo ciekawą technologią, z ogromnymi możliwościami i robiące duży krok naprzód w stosunku do istniejących sposobów przechowywania danych po stronie klienta. Specyfikacja definiowała dwa sposoby operacji na bazie - asynchroniczny i synchroniczny. Dostęp do API odbywał się oczywiście za pośrednictwem skryptów JavaScript. Tworząc bazę danych należało podać jej nazwę, wersję, opis oraz maksymalny rozmiar. Jeżeli deklarowany rozmiar był duży, przeglądarki miały prawo wejść w interakcję z użytkownikiem, czy zgadza się na stworzenie bazy o takim rozmiarze. WebSQL dawał możliwość korzystania z transakcji. Istniały dwa rodzaje transakcji - odczyt/zapis oraz tylko do odczytu. Wykonywanie poleceń SQL odbywało się przez wywołanie metody executesql, która mogła zwracać SQLResultSet, jeżeli była to komenda SELECT. Mimo sporych możliwości, technologię WebSQL Database można uznać za przeszłość. Na szczęście organizacja W3C jest w trakcie prowadzenia procesu specyfikacji innych technologii, które posiadają jeszcze większe możliwości - opisane zostaną w kolejnej sekcji Nowe propozycje i specyfikacje W3C Plik manifestu HTML Pierwszym nowym elementem specyfikacji HTML5 wspomagającym tworzenie aplikacji webowych, które częściowo mogłyby działać w trybie bez połączenia z siecią jest Cache Manifest. Jak wiemy, aplikacja webowa od strony klienta wygląda jak zbiór zasobów, które muszą zostać pobrane z serwera danej aplikacji - mogą być to pliki HTML, CSS, skrypty, obrazki etc. Aby pobrać te dane, potrzebne jest aktywne połączenie z serwerem. Dzięki plikowi manifestu, twórca strony może podać w nim ścieżki zasobów, które mają być pobrane i zachowane w przeglądarce. Dzięki temu, użytkownik będzie mógł korzystać z tych zasobów również w trybie offline. Składnia Stworzenie pliku manifestu jest bardzo proste. W pierwszej niepustej i niezakomentowanej linii musi pojawić się napis CACHE MANIFEST. Puste linie są ignorowane, a komentarze umieszcza się za znakiem #. W następnych liniach podaje się ścieżki do zasobów, które mają trafić do cache przeglądarki (ścieżki mogą być zarówno względne, jak i bezwzględne). Plik manifestu może też posiadać 3 sekcje : CACHE, NETWORK i FALLBACK. Zasoby podane w następnych liniach po linii z ciągiem znaków CACHE: są zasobami, które trafią do cache przeglądarki i będą dostępne offline (jest to domyślny tryb: jeżeli nie podamy nazwy sekcji,

19 2.3. Nowe propozycje i specyfikacje W3C 19 zasoby właśnie tak zostaną zinterpretowane). Zasoby podane w sekcji NETWORK: to zasoby, które nigdy nie będą cache owane w przeglądarce - próba załadowania tych zasobów w trybie offline zakończy się błędem. Po sekcji FALLBACK możemy podać zasób, który zostanie zapisany w przeglądarce i użyty podczas pracy w trybie offline w przypadku próby załadowania zasobu, który podany został w sekcji NETWORK (zasoby dostępne tylko w trybie online) lub w przypadku próby załadowania zasobu, który nie został wcześniej pomyślnie zapisany w cache przeglądarki. Przykładowo, poprawny plik cache manifestu może wyglądać w następujący sposób: CACHE MANIFEST NETWORK: /tylko_online.html CACHE: /index.html /styles.css /script.js /logo.png FALLBACK: /offline.html Plik tylko\_online.html będzie dostępny tylko podczas połączenia z siecią. Pliki index.html, styles.css, script.js, logo.png będą dostępne również w trybie offline. Plikoffline.html zostanie załadowany do okna przeglądarki, jeżeli użytkownik będzie chciał załadować plik tylko\_online.html lub plik z sekcji CACHE, który w jakiś sposób nie został pomyślnie zapisany do cache przeglądarki. Twórca strony musi jeszcze wskazać położenie pliku cache manifestu w dokumencie html. Odbywa się to poprzez umieszczenie adresu w atrybucie manifest znacznika <html>. Na przykład: <html manifest="cache.manifest"> WebStorage Specyfikacja Web Storage wprowadza dwa powiązane ze sobą mechanizmy. Ich funkcjonalność można porównać do HTTP cookies. Istnieją dwa obiekty - sessionstorage oraz localstorage. Pierwszy zachowuje się podobnie do session cookie - cykl życia ogranicza się do jednej sesji, jednak w odróżnieniu od mechanizmu ciasteczek sessionstorage mamy osobny dla każdego okna danej domeny ( per window per domain ). Drugi mechanizm podobny jest w

20 2.3. Nowe propozycje i specyfikacje W3C 20 działaniu do persistent cookie - dostęp do niego mamy dla danej domeny, ale zachowywany jest on na wszystkie okna aplikacji i wykracza poza zakres sesji. Najistotniejszą kwestią różniącą Web Storage od HTTP Cookie jest to, że ciasteczka wysyłane są w każdym HTTP Request. W związku z tym, generują one większy ruch sieciowy. Dostęp do Web Storage jest możliwy tylko i wyłącznie z poziomu skryptów uruchamianych w przeglądarce klienta, żadne dane z Web Storage nie są przesyłane w HTTP Request (chyba, że explicite przesłany przy pomocy metod POST, GET). Również dzięki temu wielkość Web Storage w zależności od przeglądarki sięga MB, co jest bardzo istotne w tworzeniu aplikacji webowych w dzisiejszych czasach. Specyfikacja Specyfikacja nie narzuca aplikacjom klienckim HTTP sposobu przechowywania danych. Dokument Web Storage - W3C Candidate Recommendation 08 December 2011 definiuje jedynie: interfejs Storage, który implementować mają obydwa obiekty sessionstorage i localstorage, w jakim kontekscie mamy dostęp do konkretnego obiektu typu Storage - procedura przyznawania skryptowi dostępu do takiego obiektu (uzyskiwanie dostępu do istniejącego- /tworzenie nowego), postępowanie z danymi, które mogą być przedawnione. Jeżeli chodzi o przestrzeń dyskową, na której zapisywane są dane z obiektów typu Storage, to specyfikacja mówi o tym, że przeglądarka powinna nakładać limit na rozmiar zajmowany przez takie obiekty, zabraniając przy tym obejścia tych limitów przez skrypty pochodzące z afiliowanych domen, np. używanie przestrzeni dla domen a1.example.com, a2.example.com itd. w przypadku skończenia się przestrzeni dyskowej dla domeny example.com. Przeglądarki powinny również umożliwić użytkownikowi sprawdzenie, ile miejsca na dysku zajmowane jest przez każdą domenę oraz, w przypadku skończenia miejsca dla danej domeny, użytkownik może być poproszony o zezwolenie danej domenie na uzyskanie dodatkowego miejsca. W3C rekomenduje arbitralny limit 5MB na domenę, jednak pozostawia tę kwestię do dyskusji, czekając na sugestie od twórców przeglądarek w przyszłości. W popularnych przeglądarkach na urządzenia PC oraz system Android użytkownik może zazwyczaj ustawić wielkość przestrzeni dyskowej przeznaczoną na zapisywania danych przez jedną domenę, wyczyścić takie dane, a w niektórych aplikacjach również można podejrzeć, ile zajmują dane od konkretnej domeny i usuwać je dla konkretnej domeny. Można również włączyć bądź wyłączyć localstorage i sessionstorage. Przeglądarki często używają terminów pamięć podręczna dla sessionstorage oraz pamięć lokalna - przechowywanie lokalne w localstorage.

21 2.3. Nowe propozycje i specyfikacje W3C 21 Przeznaczenie Co możemy przechowywać w Web Storage? Web Storage służy, tak jak HTTP cookie, do przechowywania par danych klucz-wartość. Specyfikacja mówi, że wartością może być dowolny obiekt, jednak w praktyce wartością musi być string (takie implementacje są we wspierających przeglądarkach), przy próbie umieszczenia danych innych typów, obiekty zostaną skonwertowane do stringa (należy sobie zdawać sprawę też z tego, że takie konwersje kosztują). Żeby zachować dwustronną konwersję string-to-object i object-to-string, tzn. żeby móc pracować na obiekcie po wyciągnięciu go z WebStorage można zastosować JSONową konwersję obiektu do stringa (JSON.stringify() oraz JSON.parse()). Dzięki zastosowaniu Data URI scheme, w Web Storage możliwe jest również przechowywanie znakowej reprezentacji danych binarnych (np. obrazów lub plików PDF). Użycie Web Storage nie jest transakcyjne. Web Storage posiada proste API, wygodniejsze w użyciu niż ciasteczka, dlatego warto stosować go dla danych zamiast cookies, gdy nie potrzebujemy przesyłać ich z powrotem na serwer. Aby sprawdzić, czy przeglądarka wspiera WebStorage, należy sprawdzić, czy zdefiniowany jest w przeglądarce interfejs Storage: if(typeof (Storage)!== undefined ) { // przeglądarka wspiera WebStorage } else { // przeglądarka nie wspiera WebStorage } Jeżeli przeglądarka wspiera WebStorage, z poziomu skryptów JavaScript będziemy mieć dostęp do dwóch obiektów - localstorage oraz sessionstorage. Pomimo wspomnianych wcześniej róźnic w działaniu, korzystanie z tych dwóch obiektów jest analogiczne. Jeżeli do localstorage zechce dodać parę ( key, value ), możemy to zrobić w następujące sposoby: localstorage.key = value ; // lub localstorage[ key ] = value ; // lub localstorage.setitem( key, value ); Pobranie wartości o danym kluczu odbywa się w podobny sposób:

22 2.3. Nowe propozycje i specyfikacje W3C 22 var value; value = localstorage.key; // lub value = localstorage[ key ]; // lub value = localstorage.setitem( key ); Usunąć element możemy wywołując: localstorage.removeitem( key ); Możemy poznać nazwę klucza o konkretnym indeksie: // nazwa klucza o indeksie 10 w localstorage var key = localstorage.key(10); Dodatkowo, nożemy sprawdzić ilość elementów przy pomocy atrybutu length lub też wyczyścić cały Storage: var l = localstorage.length; localstorage.clear(); WebStorage posiada synchroniczne API. O konsekwencjach stosowania asynchronicznych i synchronicznych API w kontekście nowych elementów specyfikacji HTML5 więcej można przeczytać w tym rozdziale w sekcji Asynchroniczne i synchroniczne API Indexed Database Przez pewien czas technologią, która miała się lepiej sprawdzić do przechowywania większych ilości danych niż HTTP cookie czy Web Storage była WebSQL Database. Funkcjonalnie była to typowa SQL-owa baza danych. Bazy SQL-owe, oprócz swoich wielkich możliwości, posiadają swoje wady, nie inaczej było z WebSQL Database. IndexedDB jest czymś pośrednim między Web Storage a WebSQL Database. W zasadzie powstał na podstawie doświadczeń z tymi dwiema technologiami - chciano wyeliminować ich słabości. Specyfikacja Specyfikacja nie narzuca aplikacjom klienckim sposobu przechowywania tych danych. Definiuje jedynie, jakie interfejsy oraz typy słownikowe mają być obsługiwane przez przeglądarkę. Jeżeli chodzi o bezpieczeństwo, twórcom przeglądarek proponuje się kilka rozwiązań, mających na celu zminimalizowanie ryzyka wycieku danych w niepowołane ręce.

23 2.3. Nowe propozycje i specyfikacje W3C 23 Przeznaczenie Każda domena może posiadać w przeglądarce zbiór baz danych (baza identyfikowana unikalną nazwą, każda baza posiada też numer wersji), a każda baza danych posiadać może kilka magazynów (ang. store) danych (magazyn identyfikowany unikalną nazwą w danej bazie). Baza w danym momencie istnieje tylko w jednej wersji w przeglądarce - nie ma możliwości przechowywania w przeglądarce wielu wersji bazy o tej samej nazwie. W magazynie możemy przechowywać pary klucz:wartość - w przeciwieństwie do WebStorage, wartością może być obiekt JavaScript. Każdy obiekt, który potrafi serializować structured clone algorithm ze specyfikacji HTML5, a więc może być to wartość prymitywna, obiekt javascript, obiekt typu Array, Boolean, Number, String, Date, RegExp, File, Blob, FileList, ImageData - jest to całe spektrum obiektów, w tym również takie, z którymi nie poradziłaby sobie serializacja JSONowa. Dane mogą być indeksowane, dzięki czemu uzyskujemy lepszą wydajność podczas przeszukiwania. Indeks jest powiązany z konkretnym magazynem danych. Można stworzyć indeks na jednym z atrybutów obiektu. Poza tym, w porównaniu do WebStorage, dzięki asynchronicznemu API również zwiększamy wydajność (na rzecz trochę bardziej skomplikowanego kodowania). Co ważne, Indexed DB jest bazą transakcyjną. Użycie Przeglądarki udostępniają uchwyt do IndexedDB pod różnymi nazwami, dlatego pobranie tego uchwytu oraz sprawdzenie, czy obiekt bazy istnieje powinien wyglądać w następujący sposób: window.indexeddb = window.indexeddb window.mozindexeddb window.web if(window.indexeddb) { // indexeddb istnieje w przeglądarce } else { // przeglądarka nie wspierda IndexedDB } Mając uchwyt w przeglądarce taki uchwyt, możemy stworzyć wersję bazę (przykładowo, tworzymy bazę o nazwie "mojabaza"i wersji 1: var dbrequest = window.indexeddb.open( mojabaza, 1); Magazyny danych możemy definiować w momencie tworzenia nowej bazy bądź zmieniania (na wyższy) istniejącej już wersji. Polega to na zdefiniowaniu zachowania w funkcji callback

24 2.3. Nowe propozycje i specyfikacje W3C 24 dla zdarzenia onupgradeneeded. Poniżej dodawana jest taka obsługa, aby stworzyła magazyn dla obiektów o nazwie mojmagazyn, jeżeli jeszcze nie istnieje. request.onupgradeneeded = function(e) { var db = e.target.result; if (db.objectstorenames.contains( mojmagazyn )) { db.deleteobjectstore(storename); } var store = db.createobjectstore( mojmagazyn, { keypath : "id", autoincrement : true }); var nameindex = store.createindex("by_name", "name"); } W tym przypadku, magazyn mojmagazyn będzie przechowywał obiekty JavaScript, a każdy obiekt będzie unikalnie identyfikowany (keypath) przez atrybut id. Dodatkowo stworzony został indeks o nazwie by_name, który będzie powodował, że przeszukiwanie magazynu po atrybucie name obiektu będzie szybsze. Działa to na takiej zasadzie, że tworząc indeks, tworzy się osobna struktura, która łączy w pary wartości atrybutu używanego jako key- Path z wartościami atrybutu używanego w indeksie. Dzięki temu, korzystając z wartości indeksu można szybko poznać keypath obiektu, a wyciąganie z magazynu obiektów po keypath już jest bardzo szybkie. Dodatkowo indeks można oznaczyć flagą unique, co spowoduje, że magazyn będzie pilnował, aby nie dodany został więcej niż jeden obiekt o takim samym atrybucie dla danego indeksu. Co do samego keypath, to w tym przypadku wskazaliśmy, aby używany był generator kluczy (flaga autoincrement ustawiona na true). Można z tego zrezygnować, i samemu, programowo ustawiać wartość klucza id. Stworzona została więc baza z jednym magazynem danych z indeksem. Uchwyt do gotowej bazy należy pobrać w obsłudze zdarzenia onsuccess, aby być pewnym, że baza gotowa jest do dalszych operacji: request.onsuccess = function(e) { db = e.target.result; }; Do wcześniej zdeklarowanej, globalnej zmiennej db przypisaliśmy stworzoną bazę. Możemy teraz dodawać, usuwać i przeszukiwać obiekty w magazynach bazy. Czynności te wykonywać należy w transakcji. Pomijając transakcje typu versionchange, w której następuje

25 2.3. Nowe propozycje i specyfikacje W3C 25 otwarcie bazy lub zmiana jej wersji i którą programista nie może manipulować, dostępne są dwa typy transakcji - readonly oraz readwrite. Dzięki temu, w jednym czasie może być otwartych kilka transakcji typu readonly, ale tylko jedna transakcja typu readwrite. Umieszczanie danych w magazynie jest operacją typu write, dlatego wykonywana jest ona w transkacji typu readwrite. Otwierając transakcje, podajemy, które magazyny mają zostać objęte transakcją oraz typ transakcji: var tx = db.transaction( mojmagazyn, readwrite ); var request = store.put({name: "mojanazwa"}); Usuwać elementy możemy podając wartość keypath obiektu do usunięcia: var tx = db.transaction( mojmagazyn, readwrite ); var request = store.delete(1); Tak samo możemy pobrać element z magazynu podając wartość keypath: var tx = db.transaction( mojmagazyn, readonly ); var request = store.get(1); Nie zawsze jednak znamy wartości kluczy elementów, które chcemy pobrać bądź usunąć. Wtedy przydaje się kursor. Za pomocą kursora możemy otrzymać coś w rodzaju iteratora po obiektach. Odpowiednio stworzony kursor może zawęzić wyniki wyszukiwania, a następnie, iterując po kursorze, możemy dokonać interesujących nas operacji File API Specyfikacja File API posiada obiekty i ich metody pozwalające na wczytywanie i pracę na plikach użytkownika jeszcze w wątku przeglądarki internetowej, bez wysyłania go na stronę serwerową. Podstawowe 4 obiekty tego API to: FileList - reprezentuje listę plików (np. wybranych przez użytkownika przez html-owego <input type="file"> Blob - reprezentuje plik binarny, File - dziedziczy z Blob, posiada dodatkowe atrybuty: nazwa oraz data ostatniej modyfikacji, FileReader - posiada metody służące do czytania obiektów typu Blob/File.

26 2.3. Nowe propozycje i specyfikacje W3C 26 Przeznaczenie Dzięki temu API można dokonać wstępnej obróbki plików przed przesłaniem do strony serwerowej, używając przy tym mocy obliczeniowej klienta, a oszczedzając serwer. Treść plików nie musi być też przecież przesyłana do serwera HTTP, tylko być zachowana w IndexedDB - już widać, że wspomaga to znacząco możliwości nowoczesnych Rich Internet Applications, jak również tworzenie aplikacji ukierunkowanych na działanie w trybie offline. Korzystając z HTML-owego <input type="file"> możemy uzyskać uchwyt do jednego lub więcej plików (atrybut multiple). Jest to po prostu lista obiektów typu File (a ten dziedziczy z Blob). W takim obiekcie mamy dostęp do jego nazwy, typu, rozmiaru oraz daty ostatniej modyfikacji. Jeżeli chcemy poznać zawartość pliku, korzystamy z obiektu klasy File- Reader. Plik możemy wczytać na 4 sposoby: FileReader.readAsBinaryString(Blob) - otrzymamy plik w postaci binarnego stringu, FileReader.readAsText(Blob, encoding) - otrzymamy plik w postaci tekstowego stringu, domyślnie z kodowaniem UTF-8. FileReader.readAsArrayBuffer(Blob) - otrzymamy plik w postaci obiektu ArrayBuffer. FileReader.readAsDataUrl(Blob) - otrzymamy plik zakodowany w postaci data URL (jako string). Taki string możemy przechowywać i w obiektach ze specyfikacji WebStorage (sessionstorage i localstorage), pamiętając oczywiście o tym, że obiekty te mają dość mocno ograniczoną pojemność, jak i w IndexedDB. Mając plik w postaci takiego stringu, możemy go np. wyświetlić na stronie (obrazki), jeżeli przeglądarka obsługuje format PDF, to możemy wyświetlić taki plik. Każdy inny plik może zostać użyty w znaczniku <a>, aby użytkownik mógł pobrać go sobie na dysk. Użycie Sprawdzenie, czy przeglądarka wspiera wszystkie elementy File API, może przebiegać w następujący sposób: if (window.file && window.filereader && window.filelist && window.blob) { // przeglądarka wspiera File API } else { // przeglądarka nie wspiera File API }

27 2.3. Nowe propozycje i specyfikacje W3C File API - Filesystems Jeżeli nie wystarczają nam możliwości Indexed Database, możemy się posłużyć File- System API (jak było wcześniej wspominane, niestety do tej pory jedyną przeglądarką wspierającą to rozwiązanie jest Google Chrome). Służy ono do przechowywania dużych danych binarnych. Niestety, nie ma sposobu na prosty i wygodny dostęp do takich plików, gdy przeglądarka zapisze je na dysk, przez inne aplikacje. W File-System API polityka dostępu do filesystemu odbywa się na takiej samej zasadzie jak w innych opisywanych client-side storage ach z HTML5 - a więc dostęp jest ograniczony do konkretnej domeny. Specyfikacja Specyfikacja ta definiuje wirtualne systemy plików w przeglądarkach (sandboxed filesystems). Z poziomu skryptu możemy tworzyć takie filesystemy, tworzyć w nich katalogi, pliki, przechodzić po nim, usuwać, odczytywać zawartość. Specyfikacja podaje dwa typy filesystemów - tymczasowy oraz persystentny. Uzyskanie przestrzeni tymczasowej przez aplikację może być łatwiejsze - bez wyrażania zgody użytkownika na przyznanie przestrzeni, za to przeglądarka może usuwać takie dane, np. gdy będzie brakować jej pamięci lub po zakończeniu sesji. Przeglądarka może pytać użytkownika na zezwolenie na przydzielenie aplikacji webowej przestrzeni persystentnej i wtedy usuwanie tych danych nie może się również odbywać bez woli użytkownika. Jedyną przeglądarką wspierającą w tym momencie File-System API jest Google Chrome, która pyta użytkownika, gdy strona webowa chce skorzystać z przestrzeni persystentnej. Wielkość takiej przestrzeni może być relatywnie bardzo duża i definiuje się ją w kodzie skryptu. Np. dla aplikacji webowych firmy Google, do których przeglądarka Google Chrome automatycznie przyznaje przestrzeń dyskową naszych komputerów, przestrzeń (i tymczasowa, i persystentna) na składowanie plików w lokalnym, wirtualnym systemie plików wynosi np. 12GB. Warto wiedzieć, że takie systemy plików nie są transakcyjne. Użycie Aby sprawdzić wsparcie przeglądarki dla FileAPI - Filesystems, można dokonać tego w następujący sposób: window.requestfilesystem = window.requestfilesystem window.webkitrequestfilesystem; if(window.requestfilesystem) { // przeglądarka wspiera FileAPI - Filesystems } else { // przeglądarka nie wspiera FileAPI - Filesystems

28 2.3. Nowe propozycje i specyfikacje W3C 28 } Jeżeli przeglądarka to wspiera, możemy stworzyć filesystem dla swojej domeny. Istnieją dwa tryby systemu plików - tymczasowy i persystentny. Główna różnica polega na tym, że w przypadku braku miejsca, przeglądarka zarządza systemami plików stworzonych w trybie tymczasowym i może usuwać pliki, aby uzyskać miejsce, bez powiadamiania o tym użytkownika. Za to tworzenie takiego systemu plików nie wymaga zgody użytkownika, zaś tworząc pesystentny system plików, przeglądarki pytają się użytkownika, czy wyraża na to zgodę. Ważne, żeby wiedzieć, że tymczasowy system plików nie oznacza to, że zostaje usunięty wraz z zamknięciem okna przeglądarki. Mając dostęp do wirtualnego filesystemu, może tworzyć, modyfikować, usuwać, zmieniać nazwę i przemieszczać pliki, jak również organizować pliki w drzewie katalogów File API - FileWriter Wydzielona część specyfikacji File API, wprowadza interfejsy BlobBuilder (do tworzenia obiektów typu Blob - już nie jest rekomendowana, gdyż Bloba można stworzyć równie dobrze przy pomocy konstruktora), FileSaver oraz dziedziczący po nim FileWriter oraz jego synchroniczny odpowiednik, FileWriterSync. Po uzyskaniu FileWritera, możemy zapisać do wirtualnego filesystemu zawartość pliku, którego mamy w postaci Blob/File. Oznacza to, że możemy łatwo zapisywać przy pomocy FileWritera pliki utworzone bezpośrednio w kodzie skryptu, bądź też pobrane ze zdalnego serwera lub wybrane przez użytkownika Asynchroniczne i synchroniczne API Z powyższych technologii ze specyfikacji HTML5 jedynie WebStorage udostępnia tylko synchroniczne API. W pozostałych przypadkach specyfikacja definiuje zarówno asynchroniczne, jak i synchroniczne API. W związku z naturą uruchamiania skryptów JavaScript w przeglądarce, zaleca się stosowanie asynchronicznego API. Co więcej, wiele przeglądarek wspiera jak na razie tylko asynchroniczne metody, pracując dopiero nad synchronicznymi metodami. Pisanie kodu, używając synchronicznego API jest łatwiejsze, bardziej intuicyjne i lepiej oddaje intencje autora kodu. Kod jest bardziej przejrzysty i łatwiej go utrzymać. Niestety, zatrzymanie wywoływania kodu skryptu w przeglądarce może zatrzymać pracę przeglądarki. Zawieszony zostaje wtedy proces aplikacji. Np. przeglądarki Firefox czy Safari działają w ten sposób, że okna przeglądarki wraz ze wszystkimi zakładami działają w jednym procesie - wtedy wstrzymana jest praca całej przeglądarki, nie tylko karta ze stroną z zatrzymanym skryptem. Przeglądarka Google Chrome zaś działa w taki sposób, że każda karta w oknie jest osobnym procesem - wtedy wstrzymane jest ładowanie strony w tej konkretnej karcie. Dlatego Inde-

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do Sesje i ciasteczka Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do śledzenia użytkownika podczas jednej sesji

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ : Cookies Sesje Inne możliwości

Bardziej szczegółowo

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne. Polityka prywatności (pliki cookies) 1. Informacje ogólne. Cemarol Sp. z o.o. 1. Operatorem Serwisu www.powiat-lebork.com jest Cemarol sp. z o.o. z siedzibą w Kobylnicy (76-251), Kobylnica, ul. Główna

Bardziej szczegółowo

Polityka prywatności serwisu www.aran.com.pl

Polityka prywatności serwisu www.aran.com.pl Przedsiębiorstwo BudowlanoHandlowe Z.Niziński Polityka prywatności serwisu www.aran.com.pl 1. Informacje ogólne. Operatorem Serwisu [adres serwisu, np. www.blink.pl] jest [pełne dane rejestrowe] Serwis

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja mobilnego systemu wspomagającego organizowanie zespołowej aktywności fizycznej Autor: Krzysztof Salamon W dzisiejszych czasach życie ludzi

Bardziej szczegółowo

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07 PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się

Bardziej szczegółowo

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka Sesje, ciasteczka, wyjątki Nie sposób wyobrazić sobie bez nich takich podstawowych zastosowań, jak logowanie użytkowników czy funkcjonowanie koszyka na zakupy. Oprócz tego dowiesz się, czym są wyjątki,

Bardziej szczegółowo

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja ZPKSoft WDoradca 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja 1. Wstęp ZPKSoft WDoradca jest technologią dostępu przeglądarkowego do zasobów systemu ZPKSoft Doradca.

Bardziej szczegółowo

Polityka bezpieczeństwa.

Polityka bezpieczeństwa. Polityka bezpieczeństwa. Cookies Polityka dotycząca Ciasteczek Niniejsza Polityka dotycząca Ciasteczek odnosi się do wszystkich stron internetowych oraz aplikacji na urządzenia mobilne, odwiedzających

Bardziej szczegółowo

The OWASP Foundation http://www.owasp.org. Session Management. Sławomir Rozbicki. slawek@rozbicki.eu

The OWASP Foundation http://www.owasp.org. Session Management. Sławomir Rozbicki. slawek@rozbicki.eu The OWASP Foundation http://www.owasp.org Session Management Sławomir Rozbicki slawek@rozbicki.eu 28-07-2011 OWASP TOP 10 A1: Injection A2: Cross-Site Scripting (XSS) A3: Broken Authentication and Session

Bardziej szczegółowo

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science Systemy internetowe Wykład 5 Architektura WWW Architektura WWW Serwer to program, który: Obsługuje repozytorium dokumentów Udostępnia dokumenty klientom Komunikacja: protokół HTTP Warstwa klienta HTTP

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

REGULAMIN. Cookies. Co to są ciasteczka?

REGULAMIN. Cookies. Co to są ciasteczka? Cookies REGULAMIN Polityka dotycząca Ciasteczek Niniejsza Polityka dotycząca Ciasteczek odnosi się do wszystkich stron internetowych oraz aplikacji na urządzenia mobilne, należących do tkkf.tarnobrzeg.pl.

Bardziej szczegółowo

1. Rodzaj przetwarzanych danych / linki do witryn zewnętrznych

1. Rodzaj przetwarzanych danych / linki do witryn zewnętrznych Niniejsza witryna jest obsługiwana przez firmę SANDA Sp. z o.o. i jest zlokalizowana na serwerze stanowiącym własność Domotel Sp. z o.o. z siedzibą w Koluszki. Wszystkie podstrony (mikrowitryny) obsługiwane

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

Bardziej szczegółowo

Serwis nie zbiera w sposób automatyczny żadnych danych, z wyjątkiem danych zawartych w plikach cookies podczas samego korzystania z Witryny.

Serwis nie zbiera w sposób automatyczny żadnych danych, z wyjątkiem danych zawartych w plikach cookies podczas samego korzystania z Witryny. POLITYKA PRYWATNOŚCI (POLITYKA COOKIES) SERWISU WWW.EREPETITIO.COM Zawartość 1. Informacje ogólne... 1 2. Jakie dane zbiera Serwis w sposób automatyczny podczas korzystania z Witryny?... 1 3. Logi serwera...

Bardziej szczegółowo

Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi

Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi Stosowanie ciasteczek (cookies) Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi przeglądanie strony i składanie zamówień. Dlatego w trosce

Bardziej szczegółowo

POLITYKA COOKIES. Definicje. Rodzaje wykorzystywanych Cookies

POLITYKA COOKIES. Definicje. Rodzaje wykorzystywanych Cookies POLITYKA COOKIES Niniejsza Polityka Cookies określa zasady przechowywania i dostępu do informacji na urządzeniach Użytkownika za pomocą plików Cookies, służących realizacji usług świadczonych drogą elektroniczną

Bardziej szczegółowo

Instrukcja konfiguracji funkcji skanowania

Instrukcja konfiguracji funkcji skanowania Instrukcja konfiguracji funkcji skanowania WorkCentre M123/M128 WorkCentre Pro 123/128 701P42171_PL 2004. Wszystkie prawa zastrzeżone. Rozpowszechnianie bez zezwolenia przedstawionych materiałów i informacji

Bardziej szczegółowo

Dokumentacja aplikacji Szachy online

Dokumentacja aplikacji Szachy online Projekt z przedmiotu Technologie Internetowe Autorzy: Jakub Białas i Jarosław Tyma grupa II, Automatyka i Robotyka sem. V, Politechnika Śląska Przedmiot projektu: Aplikacja internetowa w języku Java Dokumentacja

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Języki programowania wysokiego poziomu. PHP cz.3. Formularze Języki programowania wysokiego poziomu PHP cz.3. Formularze Formularze Sposób przesyłania danych formularza do serwera zależy od wybranej metody HTTP: Metoda GET

Bardziej szczegółowo

Polityka prywatności

Polityka prywatności Polityka prywatności 1. Niniejsza polityka prywatności określa zasady gromadzenia, przetwarzania i wykorzystywania informacji o użytkownikach serwisu www oraz użytkownikach, którzy przekażą swoje dane

Bardziej szczegółowo

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework mgr inż. Łukasz Stefanowicz dr inż.

Bardziej szczegółowo

Informujemy, iż wszystkie dane są gromadzone jedynie za Państwa przyzwoleniem.

Informujemy, iż wszystkie dane są gromadzone jedynie za Państwa przyzwoleniem. Polityka prywatności Niniejsza strona ma służyć komunikacji pomiędzy Philip Morris Polska Distribution sp. z o.o. [ PMPL-D ], a Dystrybutorami wyrobów tytoniowych, w szczególności realizacji Programu Dystrybucyjnego

Bardziej szczegółowo

Polityka prywatności

Polityka prywatności Polityka prywatności Administrator Serwisu 1. Właścicielem niniejszego serwisu internetowego zasilenia.faktura.pl, zwanego dalej Serwisem, jest Blue Media Spółka Akcyjna z siedzibą w Sopocie, 81-717 Sopot,

Bardziej szczegółowo

ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl

ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl Niniejsze zasady dotyczą wszystkich Użytkowników strony internetowej funkcjonującej w domenie http://www.pawlowskisport.pl,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Polityka prywatności stron BIP WIJHARS w Opolu

Polityka prywatności stron BIP WIJHARS w Opolu Polityka prywatności stron BIP WIJHARS w Opolu Niniejsza Polityka ma na celu poszanowanie prywatności każdego z użytkowników serwisu BIP Wojewódzkiego Inspektoratu Jakości Handlowej Artykułów Rolno - Spożywczych

Bardziej szczegółowo

Regulaminy. Cookies. Polityka dotycząca Ciasteczek

Regulaminy. Cookies. Polityka dotycząca Ciasteczek Regulaminy Cookies Polityka dotycząca Ciasteczek Niniejsza Polityka dotycząca Ciasteczek odnosi się do wszystkich stron internetowych, należących do Grupy portali i sklepów Zi-Co Sp. z o.o.: - dekarze.pl

Bardziej szczegółowo

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1. Zakład Elektronicznych Urządzeń Pomiarowych POZYTON sp. z o. o. 42-200 Częstochowa ul. Staszica 8 p o z y t o n tel. : (034) 361-38-32, 366-44-95, 364-88-82, 364-87-50, 364-87-82, 364-87-62 tel./fax: (034)

Bardziej szczegółowo

ZAŁĄCZNIK NR 1 DO REGULAMINU SERWISU ZNANEEKSPERTKI.PL POLITYKA OCHRONY PRYWATNOŚCI

ZAŁĄCZNIK NR 1 DO REGULAMINU SERWISU ZNANEEKSPERTKI.PL POLITYKA OCHRONY PRYWATNOŚCI ZAŁĄCZNIK NR 1 DO REGULAMINU SERWISU ZNANEEKSPERTKI.PL POLITYKA OCHRONY PRYWATNOŚCI Headlines Spółka z ograniczoną odpowiedzialnością i spółka spółka komandytowa szanuje i troszczy się o prawo do prywatności

Bardziej szczegółowo

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak Wykład 3 / Wykład 4 Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak 1 Wprowadzenie do Modułu 3 CCNA-E Funkcje trzech wyższych warstw modelu OSI W jaki sposób ludzie wykorzystują

Bardziej szczegółowo

Zarządzanie sesją w aplikacjach Internetowych. Kraków, 2008-10-23 Paweł Goleń

Zarządzanie sesją w aplikacjach Internetowych. Kraków, 2008-10-23 Paweł Goleń Zarządzanie sesją w aplikacjach Internetowych Kraków, 2008-10-23 Paweł Goleń Agenda Po co sesje w aplikacjach internetowych Sposoby przekazywania identyfikatorów Sposoby ochrony Cookie Analiza identyfikatora

Bardziej szczegółowo

Kancelaria Prawna.WEB - POMOC

Kancelaria Prawna.WEB - POMOC Kancelaria Prawna.WEB - POMOC I Kancelaria Prawna.WEB Spis treści Część I Wprowadzenie 1 Część II Wymagania systemowe 1 Część III Instalacja KP.WEB 9 1 Konfiguracja... dostępu do dokumentów 11 Część IV

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych KARTA PRZEDMIOTU Nazwa przedmiotu/modułu: Nazwa angielska: Kierunek studiów: Poziom studiów: Profil studiów Jednostka prowadząca: Programowanie aplikacji internetowych Web application development edukacja

Bardziej szczegółowo

Czym są pliki cookies?

Czym są pliki cookies? Czym są pliki cookies? Poprzez pliki cookies należy rozumieć dane informatyczne, w szczególności pliki tekstowe, przechowywane w urządzeniach końcowych użytkowników przeznaczone do korzystania ze stron

Bardziej szczegółowo

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi 1 Rozdział 1 Wprowadzenie do PHP i MySQL Opis: W tym rozdziale kursanci poznają szczegółową charakterystykę

Bardziej szczegółowo

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja Instytut Telekomunikacji Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska, marzec 2015 Wprowadzenie Ćwiczenie jest wykonywane

Bardziej szczegółowo

Trojan bankowy Emotet w wersji DGA

Trojan bankowy Emotet w wersji DGA Trojan bankowy Emotet w wersji DGA Warszawa 17/11/2014 CERT Orange Polska Strona 1 z 7 Trojan bankowy Emotet został zauważony kilka miesięcy temu. Od tej pory zdaje się być cyklicznie wykorzystywany w

Bardziej szczegółowo

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Uwierzytelnianie użytkowników, Obiekt session, Silniki

Bardziej szczegółowo

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5 Politechnika Wrocławska Wydział Podstawowych Problemów Techniki Technologie sieciowe Sprawozdanie z labolatorium Lista 5 Autor: Piotr Kosytorz IIrokInf. indeks: 166174 Prowadzący: dr inż. Łukasz Krzywiecki

Bardziej szczegółowo

Polityka Cookies. 1 Definicje. Administrator oznacza przedsiębiorstwo

Polityka Cookies. 1 Definicje. Administrator oznacza przedsiębiorstwo Polityka Cookies 1. Niniejsza Polityka Cookies określa zasady przechowywania i dostępu do informacji na urządzeniach Użytkownika za pomocą plików Cookies, służących realizacji usług świadczonych drogą

Bardziej szczegółowo

Wykorzystywanie plików cookies

Wykorzystywanie plików cookies Polityka Niniejsza Polityka dotyczy plików i odnosi się do stron internetowych w domenie *.rkantor.com, zwanej dalej ( Serwisem ), których właścicielem jest Raiffeisen Solutions Sp. z o. o z siedzibą w

Bardziej szczegółowo

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer.

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer. Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer. Możemy dodawać lub usuwać poszczególne role. Można to zrobić później uruchamiając START Zarządzanie tym serwerem

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

edistro.pl Spis treści

edistro.pl Spis treści Spis treści 1 Spis treści 1 Spis treści... 2 2 Obsługa systemu... 3 2.1 Wymagania... 3 2.2 Uzyskiwanie dostępu do edistro... 3 2.3 Sprawdzenie czy mam włączony JavaScript... 4 2.3.1 Internet Explorer...

Bardziej szczegółowo

Zasady Wykorzystywania Plików Cookies

Zasady Wykorzystywania Plików Cookies Zasady Wykorzystywania Plików Cookies Definicje i objaśnienia używanych pojęć Ilekroć w niniejszym zbiorze Zasad wykorzystywania plików Cookies pojawia się któreś z poniższych określeń, należy rozumieć

Bardziej szczegółowo

POLITYKA PRYWATNOŚCI

POLITYKA PRYWATNOŚCI POLITYKA PRYWATNOŚCI 1. Niniejsza Polityka Prywatności określa zasady przetwarzania danych osobowych pozyskanych za pośrednictwem Sklepu Internetowego www.mybodie.pl (zwanego dalej: Sklepem ). 2. Właścicielem

Bardziej szczegółowo

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER 2012-08-06

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER 2012-08-06 2012 Firma Informatyczna ASDER Prezentacja Serwer danych lokalnych Przemysław Kroczak ASDER 2012-08-06 Szanowni Państwo, W dzisiejszej coraz częściej trzeba współdzielić pliki między pracownikami/działami

Bardziej szczegółowo

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010 Bezpieczeństwo interoperacyjnego hostingu Gerard Frankowski, Zespół Bezpieczeństwa PCSS 4. Konferencja MIC Nowoczesne technologie bliżej nas Poznań, 04.03.2010 1 Agenda Wprowadzenie Zespół Bezpieczeństwa

Bardziej szczegółowo

Załącznik do Zarządzenia Członka Zarządu Domu Maklerskiego nr 52/2014/JI z dnia 24 września 2014 r.

Załącznik do Zarządzenia Członka Zarządu Domu Maklerskiego nr 52/2014/JI z dnia 24 września 2014 r. Polityka prywatności Poniższa Polityka Prywatności wyjaśnia w jakim celu i w jaki sposób gromadzimy, przetwarzamy oraz chronimy Twoje dane osobowe. Szanujemy Twoje prawo do prywatności. Chcielibyśmy szczegółowo

Bardziej szczegółowo

KORZYSTANIE Z BAZY DANYCH UpToDate

KORZYSTANIE Z BAZY DANYCH UpToDate KORZYSTANIE Z BAZY DANYCH UpToDate 1 KORZYSTANIE Z BAZY DANYCH UpToDate 1. Wejdź na stronę Biblioteki Głównej Uniwersytetu Medycznego w Lublinie: http://www.biblioteka.umlub.pl 2. W ZASOBY kliknij na Zdalny

Bardziej szczegółowo

Konspekt pracy inżynierskiej

Konspekt pracy inżynierskiej Konspekt pracy inżynierskiej Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel

Bardziej szczegółowo

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego 2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego produktu. 23 czerwca 2014 Spis treści 3 Spis treści...5

Bardziej szczegółowo

Polityka Prywatności i Cookies

Polityka Prywatności i Cookies Polityka Prywatności i Cookies I. Podstawa Prawna: 1.Prawo telekomunikacyjne Art. 173. I. Przechowywanie informacji lub uzyskiwanie dostępu do informacji już przechowywanej w telekomunikacyjnym urządzeniu

Bardziej szczegółowo

156.17.4.13. Adres IP

156.17.4.13. Adres IP Adres IP 156.17.4.13. Adres komputera w sieci Internet. Każdy komputer przyłączony do sieci ma inny adres IP. Adres ten jest liczbą, która w postaci binarnej zajmuje 4 bajty, czyli 32 bity. W postaci dziesiętnej

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Wstęp. Jakie dane przetwarzamy?

Wstęp. Jakie dane przetwarzamy? Wstęp Lunching.pl sp. z o.o. ul. Fabrycza 20A 31 553 Kraków NIP: 6751527515 KRS: 0000586924 Operator aplikacji lunching.pl jest Administratorem danych osobowych (Administrator) gromadzonych i przetwarzanych

Bardziej szczegółowo

Pobieranie komunikatów GIF

Pobieranie komunikatów GIF Spis treści Wstęp... 2 1. Ustawienia harmonogramu zadań... 3 1.1. Tryby pracy AswPlan... 3 2. System KS-EWD... 4 2.1. Instalacja KS-EWD... 5 3. Inauguracja OSOZ... 6 3.1. Zdefiniowanie zadania pobierania

Bardziej szczegółowo

SERWERY WIRTUALNE Stabilność, szybkość i bezpieczeństwo danych...

SERWERY WIRTUALNE Stabilność, szybkość i bezpieczeństwo danych... SERWERY WIRTUALNE Stabilność, szybkość i bezpieczeństwo danych... Oferujemy Państwu profesjonalny hosting już od około 0,17 zł netto/dziennie. Jeśli korzystają Państwo z dużych drogich serwerów i nie chcą

Bardziej szczegółowo

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet JSP ciąg dalszy Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić JSP tags, Używanie tagów, Custom tags, JSP objests, Obiekty

Bardziej szczegółowo

6. Bezpieczeństwo przy współpracy z bazami danych

6. Bezpieczeństwo przy współpracy z bazami danych 6. Bezpieczeństwo przy współpracy z bazami danych 6.1. Idea ataku SQL injection Atak znany jako SQL injection jest możliwy wtedy, gdy użytkownik ma bezpośredni wpływ na postać zapytania wysyłanego do bazy

Bardziej szczegółowo

Spis treści. Spis treści... 2. Wstęp... 3. Instalacja nazwa.pl... 3. Instalacja Home.pl... 8. Edycja grafiki strony... 17. logo...

Spis treści. Spis treści... 2. Wstęp... 3. Instalacja nazwa.pl... 3. Instalacja Home.pl... 8. Edycja grafiki strony... 17. logo... Instalacja serwera Spis treści Spis treści... 2 Wstęp... 3 Instalacja nazwa.pl... 3 Instalacja Home.pl... 8 Edycja grafiki strony... 17 logo... 17 Wstęp Najnowszy sklep internetowy spod znaku sellsmart,

Bardziej szczegółowo

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE Budowa i oprogramowanie komputerowych systemów sterowania Laboratorium 4 Metody wymiany danych w systemach automatyki DDE 1 Wprowadzenie do DDE DDE (ang. Dynamic Data Exchange) - protokół wprowadzony w

Bardziej szczegółowo

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak Serwery Autorzy: Karol Czosnowski Mateusz Kaźmierczak Czym jest XMPP? XMPP (Extensible Messaging and Presence Protocol), zbiór otwartych technologii do komunikacji, czatu wieloosobowego, rozmów wideo i

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami Windows Serwer 2008 R2 Moduł 5. Zarządzanie plikami Sprawdzamy konfigurację kart sieciowych 172.16.x.0 x nr w dzienniku Na serwerze musi działać Internet! Statyczny adres IP jest potrzebny komputerom,

Bardziej szczegółowo

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. Gdy już posiadamy serwer i zainstalowany na nim system Windows XP, 7 lub 8 postawienie na nim serwera stron WWW jest bardzo proste. Wystarczy

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,

Bardziej szczegółowo

POLITYKA PRYWATNOŚCI I WYKORZYSTYWANIA PLIKÓW COOKIES W SERWISACH INTERNETOWYCH GoPay Sp. z o.o.

POLITYKA PRYWATNOŚCI I WYKORZYSTYWANIA PLIKÓW COOKIES W SERWISACH INTERNETOWYCH GoPay Sp. z o.o. POLITYKA PRYWATNOŚCI I WYKORZYSTYWANIA PLIKÓW COOKIES W SERWISACH INTERNETOWYCH GoPay Sp. z o.o. PLIKÓW COOKIES GoPay Sp. z o.o. jako firma przywiązuje szczególną uwagę do poszanowania prywatności użytkowników

Bardziej szczegółowo

Strona wizytówka od 400 zł

Strona wizytówka od 400 zł Strona wizytówka od 400 zł Oferta z dnia 21.01.2010 Prosta strona zawierająca podstawowe informacje o firmie oraz jej ofercie. Pozwala ona klientom na odnalezienie firmy w sieci, zapoznanie się z jej ofertą,

Bardziej szczegółowo

Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP

Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP System Windows XP umożliwia udostępnianie plików i dokumentów innym użytkownikom komputera oraz innym użytkownikom

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu. Integracja z Okazje.info, Skąpiec, Sklepy24

Dokumentacja Użytkownika Systemu. Integracja z Okazje.info, Skąpiec, Sklepy24 Dokumentacja Użytkownika Systemu Integracja z Okazje.info, Skąpiec, Sklepy24 Wersja 2016 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 OKAZJE.INFO... 4 2.2 SKĄPIEC... 4 2.3 SKLEPY24.PL... 4 3 KONFIGURACJA...

Bardziej szczegółowo

OpenLaszlo. OpenLaszlo

OpenLaszlo. OpenLaszlo OpenLaszlo Spis Treści 1 OpenLaszlo Co to jest? Historia Idea Architektura Jako Flash lub DHTML Jako servlet lub SOLO Jak to działa? Język LZX Struktura programu Skrypty Obiekty i klasy Atrybuty i metody

Bardziej szczegółowo

REGULAMIN KORZYSTANIA Z SERWISU INTERNETOWEGO Lloyd Properties sp. z o.o.

REGULAMIN KORZYSTANIA Z SERWISU INTERNETOWEGO Lloyd Properties sp. z o.o. REGULAMIN KORZYSTANIA Z SERWISU INTERNETOWEGO Lloyd Properties sp. z o.o. POSTANOWIENIA OGÓLNE 1. Niniejszy "Regulamin korzystania z serwisu internetowego Lloyd Properties sp. z o.o." (zwany dalej Regulaminem

Bardziej szczegółowo

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie System komputerowy System komputerowy (ang. computer system) to układ współdziałaniadwóch składowych: sprzętu komputerowegooraz oprogramowania, działających coraz częściej również w ramach sieci komputerowej.

Bardziej szczegółowo

System generacji raportów

System generacji raportów Zalety systemu Czym jest ProReports? prostota instalacji, wieloplatformowość (AIX, Linux, Windows, Solaris), obsługa popularnych formatów (PDF, XLS, RTF, HTML,TXT,XML,CSV), obsługa wielu baz danych, raporty

Bardziej szczegółowo

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania. Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania. Założenia projektowe systemu NETDOC. część 1: założenia ogólne i funkcjonalność rdzenia systemu Założenia ogólne Celem projektu jest

Bardziej szczegółowo

System automatycznego rozsyłania wiadomości

System automatycznego rozsyłania wiadomości System automatycznego rozsyłania wiadomości Verlogic Systemy Komputerowe 2013 Wstęp Informacja to proces, bez którego trudno sobie wyobrazić istnienie we współczesnym życiu gospodarczym. Uzyskanie bądź

Bardziej szczegółowo

(Pluggable Authentication Modules). Wyjaśnienie technologii.

(Pluggable Authentication Modules). Wyjaśnienie technologii. Bezpieczeństwo systemów komputerowych. Temat seminarium: Moduły PAM (Pluggable Authentication Modules). Wyjaśnienie technologii Autor: Bartosz Hetmański Moduły PAM (Pluggable Authentication Modules). Wyjaśnienie

Bardziej szczegółowo

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO ekomajty.pl

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO ekomajty.pl POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO ekomajty.pl Informacje ogólne Niniejszy dokument określa zasady prywatności w Sklepie internetowym ekomajty.pl (dalej jako Sklep Internetowy ). Administratorem

Bardziej szczegółowo

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW Ataki na aplikacje WWW Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW Ataki na aplikację Ataki na przeglądarkę Ataki na serwer WWW/kontener, etc. Często kombinacja i wiele etapów Którędy do środka

Bardziej szczegółowo

Praca w sieci z serwerem

Praca w sieci z serwerem 11 Praca w sieci z serwerem Systemy Windows zostały zaprojektowane do pracy zarówno w sieci równoprawnej, jak i w sieci z serwerem. Sieć klient-serwer oznacza podłączenie pojedynczego użytkownika z pojedynczej

Bardziej szczegółowo

Samokontrola postępów w nauce z wykorzystaniem Internetu. Wprowadzenie

Samokontrola postępów w nauce z wykorzystaniem Internetu. Wprowadzenie mgr Piotr Gaś, dr hab. inż. Jerzy Mischke Ośrodek Edukacji Niestacjonarnej Akademii Górniczo-Hutniczej w Krakowie Samokontrola postępów w nauce z wykorzystaniem Internetu Wprowadzenie W każdym systemie

Bardziej szczegółowo

POLITYKA PRYWATNOŚCI

POLITYKA PRYWATNOŚCI POLITYKA PRYWATNOŚCI 1. Portal A sp. z o.o. dba o bezpieczeństwo udostępnianych w Portalu danych osobowych, w szczególności przed dostępem osób nieupoważnionych. 2. Portal A sp. z o.o. realizuje politykę

Bardziej szczegółowo

Jak ustawić cele kampanii?

Jak ustawić cele kampanii? Jak ustawić cele kampanii? Czym są cele? Jest to funkcjonalność pozwalająca w łatwy sposób śledzić konwersje wygenerowane na Twojej stronie www poprzez wiadomości email wysłane z systemu GetResponse. Mierzenie

Bardziej szczegółowo

Dokumentacja Użytkownika Systemu

Dokumentacja Użytkownika Systemu Dokumentacja Użytkownika Systemu Integracja z Okazje.info, Skąpiec, Sklepy24 Wersja 7.9 Spis treści 1 INTEGRACJA... 3 2 REJESTRACJA... 4 2.1 OKAZJE.INFO... 4 2.2 SKĄPIEC... 4 2.3 SKLEPY24.PL... 4 3 KONFIGURACJA...

Bardziej szczegółowo

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera. Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera. Wchodzimy w Centrum sieci -> Połączenia sieciowe -> następnie do właściwości naszej karty sieciowej. Następnie przechodzimy do Protokół internetowy

Bardziej szczegółowo

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie 1. Instalacja w zwykłym skrypcie PHP Instalacja PHP Hypercachera Refresher Standard i PHP

Bardziej szczegółowo

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010 System kontroli wersji - wprowadzenie Rzeszów,2 XII 2010 System kontroli wersji System kontroli wersji (ang. version/revision control system) służy do śledzenia zmian głównie w kodzie źródłowym oraz pomocy

Bardziej szczegółowo

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs. www.poczta.greenlemon.pl

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs. www.poczta.greenlemon.pl Instrukcja do panelu administracyjnego do zarządzania kontem FTP WebAs www.poczta.greenlemon.pl Opracowanie: Agencja Mediów Interaktywnych GREEN LEMON Spis treści 1.Wstęp 2.Konfiguracja 3.Konto FTP 4.Domeny

Bardziej szczegółowo