POLITECHNIKA KRAKOWSKA im. TADEUSZA KOŚCIUSZKI. Jan Zoń

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

Download "POLITECHNIKA KRAKOWSKA im. TADEUSZA KOŚCIUSZKI. Jan Zoń"

Transkrypt

1 INSTYTUT INŻYNIERII I GOSPODARKI WODNEJ POLITECHNIKA KRAKOWSKA im. TADEUSZA KOŚCIUSZKI Jan Zoń DEDYKOWANY BACK-END DLA POTRZEB WIZUALIZACJI ZJAWISK METEOROLOGICZNYCH W ŚRODOWISKU praca magisterska studia dzienne kierunek studiów: informatyka specjalność: informatyka stosowana w inżynierii środowiska promotor: dr inż. Robert Szczepanek nr pracy: 2137 data złożenia:... KRAKÓW 2008 ul. Warszawska 24, Kraków tel/fax (+48 12) sekretariat@iigw.pl internet:

2 Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona A. Einstein

3 Dziękuję Rodzicom za wsparcie i wiarę we mnie, Dr inż. Robertowi Szczepankowi poświęcony mi czas, uwagę, i za możliwość rozwoju, którą od niego otrzymałem, Dyrekcji oraz pracownikom firmy Trax Elektronik za udostępnienie bazy danych na potrzeby implementacji systemu GMAP MVT

4 SPIS TREŚCI 1. Wprowadzenie Wielkości i pomiary meteorologiczne Techniki informatyczne w meteorologii Narzędzia Baza danych Tabele meteorologiczne i informacyjne PHP Hypertext Preprocessor Extensible Markup Language - XML Reguły tworzenia dokumentów XML Hierarchia elementów w dokumencie XML Przetwarzanie dokumentów XML JavaScript Obiektowe podejście do struktury dokumentu HTML - DOM Asynchronous JavaScript and XML Google Maps Application Programming Interface Projekt GMAP MVT - implementacja Baza danych Format XML założenia i implementacja Źródło i zastosowany format danych Tworzenie dokumentów XML przez skrypty PHP W kierunku Google Maps JavaScript w połączeniu z AJAX Import XML Przetwarzanie XML Prezentacja działania systemu GMAP MVT Podsumowanie Spis rysunków Spis tabel Spis listingów Bibliografia...95

5 1. WPROWADZENIE 5

6 Człowieka od wieków interesowało otaczające go środowisko naturalne, próbował poznawać mechanizmy i zasady kierujące ekosystemem w którym przebywa. Zagadnieniami, które są najczęściej kojarzone z osłoną meteorologiczną są takie zjawiska jak opad atmosferyczny, wilgotność, zachmurzenie, wiatr, temperatura czy obecność mgły. Zjawiska atmosferyczne wpływają na człowieka. Wiele lat temu, gdy ludzkość nie dysponowała skomplikowanymi urządzeniami i aparaturą pomiarową, wiele z nich pozostawało dla człowieka niewytłumaczalnych. Wraz z postępem cywilizacyjnym i kolejnymi wynalazkami, człowiek stopniowo uświadamiał sobie prawa kierujące przyrodą i chętniej korzystał z dobrodziejstw nauki. W dzisiejszych czasach postęp w dziedzinie meteorologii i prognozowania jest mocno zaawansowany. Ogólnoświatowe systemy osłony meteo potrafią przewidywać nadchodzące kataklizmy, ratując życie setek tysięcy ludzi rocznie oraz zapewniając poczucie bezpieczeństwa. Jednakże pomimo stosowania zaawansowanych technik w meteorologii, człowiek nie potrafi wpływać bezpośrednio na zjawiska atmosferyczne. Możliwe jest natomiast zapobieganie skutkom ich niekorzystnych następstw poprzez projektowanie i wdrażanie systemów osłony meteorologicznej. Kilka dekad temu, najpopularniejszym i najbardziej dostępnym medium informujących ludzi o warunkach pogodowych było radio. Wraz z wynalezieniem technologii umożliwiającej przesył obrazu za pomocą fal elekromagnetycznych, przekaz werbalny został uzupełniony o obraz telewizyjny. W latach 60 ubegłego wieku miał miejsce kolejny przełom w dziedzinie przesyłania informacji na odległość. Było to podjęcie przez amerykańską Agencja Bezpieczeństwa Narodowego (RAND) decyzji o rozpoczęciu opracowywawnia skutecznej metody komunikacji do zastosowań militarnych na wypadek wybuchu wojny nuklearnej. Projekt przygotowywany przez RAND przy wsparciu Paula Barana uważa się za poczatki globalnej sieci Internet. W dzisiejszych czasach klasyczne metody zapisu i interpretacji danych meteo takie jak dzienniki opadu, temperatur lub stanu wód zastępowane są przez zautomatyzowane urządzenia i czujniki pomiarowe. Zmierzone wielkości trafiają do wyspecjalizowanych systemów komputerowych, na których gromadzone są 6

7 w dedykowanych bazach danych. Bardzo ważnym jest, aby informacja o potencjalnych zagrożeniach wynikających z następstw zjawisk atmosferycznych trafiała do zainteresowanego użytkownika w możliwie jak najkrótszym czasie. Równie ważna z punktu widzenia użytkownika jest dostępność tych danych oraz możliwość ich prostej i jednoznacznej interpretacji. Rozwiązaniem zapewniającym ww. warunki jest wykorzystanie globalnej sieci Internet jako medium służącemu gromadzeniu i publikacji zebranych danych. Analizując tempo przyrostu liczby zarejestrowanych domen Internetowych na przestrzeni ostatnich lat można stwierdzić, że Intenet z roku na rok staje się coraz bardziej globalny i dostępny dla szerokiej rzeszy użytkowników (Rysunek 1). Rysunek 1. Liczba zarejestrowanych na świecie domen internetowych źródło: Internet Systems Consortium, [2] Globalny w przenośni, jak również w dosłownym tego słowa znaczeniu, gdyż od kilku lat możliwe jest oglądanie powierzchni kuli ziemskiej, dzięki usłudze stworzonej przez firmę Google, noszącej nazwę Google Maps. Na podstawie interfejsu programistycznego - udostępnionego przez firmę Google - Google Maps API (Application Programming Interface), możliwe jest umieszczanie i wizualizacja na mapach świata rozmaitych obiektów. 7

8 Manipulacje mapą Google przesuwanie, przybliżanie i oddalanie - oparte są na użyciu JavaScriptu, obiektowego skryptowego języka programowania. Skrypty JavaScript najczęściej umieszczane są na stronach WWW i służą do zapewnienia interaktywności poprzez reagowanie na zdarzenia takie jak wciśnięcie przycisku, przeciągnięcie elementu w inne miejsce ekranu. Ponadto, JavaScript potrafi wykorzystywać technikę AJAX (ang. Asynchronous JavaScript and XML), stosowaną do tworzenia aplikacji internetowych w których interakcja pomiędzy użytkownikiem a serwerem może się odbywać bez przeładowywania całej strony WWW. Dane przekazywane przez interfejs AJAX mogą być zapisywane w formacie XML. Istnieje wiele serwisów o różnorodnej tematyce korzystających z Google Maps. Przykładowo, jedną z witryn internetowych wizualizujących na mapie Google położenie sieci hoteli w USA jest podobną funkcjonalność posiada polska strona: Do grona obiektów które znalazły się na mapach Google zaliczają się również między innymi stacje benzynowe: oraz obiekty turystyczne: Rysunek 2. 8

9 Rysunek 2. Kopalnia Soli w Bochni przedstawiona na mapie Google źródło: Lokalizator internetowy, [8] Jest to jednak tylko mały ułamek tematyki, jaką można zaprezentować na mapie Google, w zasadzie jedynym ograniczeniem jest wyobraźnia oraz pomysłowość projektanta. W niniejszej pracy opisany został system łączący dane zapisane w formacie XML z interfejsem Google Maps API. Dane, z których korzysta stworzony system pobierane są z meteorologicznej bazy danych należącej do krakowskiej firmy Trax Elektronik, a następnie są konwertowane do postaci dokumentów XML. Jest to podyktowane faktem udostepniania przez Google Maps API mechanizmów obsługi dokumentów XML. Informacje zapisane w formacie XML pozwalają na umieszczanie na mapie Google różnego rodzaju punktów (markerów) wizualizujących sytuację meteorologiczną. Jest to popularny sposób wizualizacji grup obiektów. 9

10 Do umieszczenia punktu na mapie potrzebne są jego współrzędne geograficzne tj. długość oraz szerokość geograficzna. W stworzonym systemie wykorzystana została bazy danych, w której zapisane są informacje o położeniu przestrzennym punktów pomiarowych, co pozwala na umieszczenie ich na mapie Google. Wybrany sposób prezentacji danych, a więc wizualizacja obiektów na mapie jest dużo bardziej atrakcyjna dla użytkownika w porównaniu do przedstawiennia tych samych danych w tabelach i zestawieniach. Poza aspektem przejrzystości, istotny jest również również fakt tego, że interfejs dostarczany przez Google jest bardzo intuicyjny oraz posiada wiele możliwości i rozmaitych funkcji, które można samodzielnie rozbudowywać aby osiągnąć zamierzony efekt. Dostęp do bazy danych możliwy jest dzięki wykorzystaniu języka PHP (ang. PHP hypertext preprocessor). Jest to obiektowy, działający po stronie serwera język skryptowy, służący do dynamicznego generowania dokumentów. Posiada on moduły wyspecjalizowane w kierunku komunikacji skryptu z bazą danych umożliwiające nawiązanie połączenia oraz wykonywanie zapytań o zawartość bazy i zwracanie ich wyników do skryptu w postaci zmiennych. W stworzonym systemie na podstawie danych pobranych z bazy tworzone są pliki (dokumenty) w formacie XML. Jest to możliwe, podobnie jak pobieranie danych z bazy, także przez wykorzystanie języka PHP. Pozwala on wygenerować kompletny i poprawny dokument XML, w którym zapisane są informacje zwrócone z meteorologicznej bazy danych. Przygotowana w ten sposób porcja danych następnie zostaje przekazana do odpowiednio zaprojektowanych aplikacji, przetwarzających dane wejściowe w formacie XML do formatu zrozumiałego przez interfejs Google Maps. Aby osiągnąć współdziałanie między zupełnie odrębnymi komponentami jakimi są format XML oraz mapa Google, konieczne jest użycie narzędzia pośredniego, w postaci języku JavaScript w którym napisany został autorski zestaw 10

11 narzędzi programistycznych. Umożliwiają one wyświetlenie na mapie Google informacji meteorologicznych w swobodny i konfigurowalny przez użytkownika sposób. Rysunek 3. Zarys projektowanego zestawu narzędzi źródło: opracowanie własne Podsumowując, projektowany system składa się z trzech odrębnych komponentów. Pierwszym z nich jest meteorologiczna baza danych. Na jej podstawie dzięki wykorzystaniu języka PHP tworzone są dokumenty w formacie XML. Następnie ich zawartośc jest wizualizowana na mapie dostarczanej przez interfejs Google Maps (Rysunek. 3) Stworzony system GMAP MVT (Google Maps, Ajax and PHP Meteo Visualization Toolkit) jest zestawem narzędzi służących do wizualizacji zjawisk meteorologicznych opartym na Google Maps, Ajax oraz PHP. W dalszej części pracy będę posługiwał się skróconą nazwą GMAP. 11

12 2. WIELKOŚCI I POMIARY METEOROLOGICZNE 12

13 Meteorologia jest nauką, która zajmuje się badaniem zjawisk fizycznych i procesów zachodzących w atmosferze kuli ziemskiej. Obserwacje atmosfery prowadzone są w placówkach pomiarowych zwanych stacjami meteorologicznymi. Są one także miejscem akwizycji pomiarów. Urządzenia pomiarowe umieszczane są w tzw. ogródku meteorologicznym dotyczy to pomiarów naziemnych. Przykładowy wygląd ogródka meteorologicznego znajduje się na rysunku 4. Rysunek 4. Ogródek meteorologiczny źródło: Instytut Meteorologii i Gospodarki Wodnej, [4] Do mierzonych w ogródku meteorologicznym wielkości można zaliczyć: temperaturę powietrza, ciśnienie atmosferyczne, wilgotność powietrza oraz kierunek i prędkość wiatru. Każda z nich mierzona jest za pomocą specjalnych, odpowiednich dla danego typu pomiaru instrumentów pomiarowych. Dla potrzeb systemu GMAP wykorzystywane są dane pochodzące z systemu stacji meteorologicznych, należących do firmy Trax Elektronik. W ogródkach dokonywany jest pomiar następujących wielkości: temperatury powietrza: pomiar dokonywany jest za pomocą termometrów rtęciowych. Umieszczone w ażurowej klatce meteorologicznej, mierzą temperaturę powietrza na wysokości 2 metrów. Pomiar temperatury na 13

14 powierzchni gruntu oraz na wysokości 20 centymetrów odbywa się odpowiednio przy pomocy termometrów gruntowych oraz przygruntowych. wilgotności względnej: wyraża procentową zawartość nasyconej pary wodnej w powietrzu. Mierzona jest przez urządzenia zwane higrometrami, które umieszczane są w klatkach meteorologicznych. Coraz powszechniej stosowane są urządzenia cyfrowe kombinowane termohigrometry. prędkości oraz kierunku wiatru: Pomiar prędkości wiatru dokonywany jest urządzeniem zwanym anemometrem. W kontekście omawianego systemu zastosowane zostały anemometry mechaniczne (rotacyjne). Składają się one z wirnika złożonego z łopatek zakończonych półkolistymi czaszami. Kierunek wiatru określany jest za pośrednictwem skrzydła zamontowanego podobnie jak anemometr na mierzącym kilka metrów maszcie. stanu opadu atmosferycznego: opadem nazywane są produkty kondensacji pary wodnej zawartej w atmosferze (atmosfera ziemska), spadające na powierzchnię Ziemi lub unoszące się w powietrzu w postaci wody lub kryształków lodu. Opady atmosferyczne mogą występować pod postacią:deszczu, śniegu, mżawki, krup, gradu, mgły lub opadów osiadających rosy, szronu oraz szadzi. Do pomiarów opadu atmosferycznego służą deszczomierze (najpopularniejszy Hellmana) i pluwiografy. Ilość opadu określana jest wysokością wody wyrażoną w milimetrach. 14

15 3. TECHNIKI INFORMATYCZNE W METEOROLOGII 15

16 Projektowanie i wdrażanie systemów osłony meteorologicznej jest podstawą przewidywania klęsk żywiołowych. Straty materialne w wielu przypadkach są nieuniknione, jednak posiadając odpowiednią infrastrukturę wczesnego ostrzegania o zbliżającym się huraganie lub powodzi, można je zminimalizować. Powódź, która dotknęła Polskę w 1997 roku spowodowała śmierć 55 osób i przyniosła kolosalne straty materialne w skali całego państwa. Całkowicie zniszczonych zostało kilkaset domów, mostów, wiele setek kilometrów dróg, wodociągów i studni gospodarczych, infrastruktura energetyczna, ciepłownicza, kanalizacyjna i oczyszczalnie ścieków. [4]. Stało się jasnym, że potrzebne jest stworzenie od podstaw systemu wczesnego ostrzegania o klęskach żywiołowych na terenie Polski. Dzięki wsparciu Banku Światowego, Instytut Meteorologii i Gospodarki Wodnej przygotował i wdrożył projekt Systemu Monitoringu i Osłony Kraju SMOK. SMOK jest nowoczesnym systemem obejmującym monitoring, prognozowanie oraz ostrzeganie przed groźnymi zjawiskami naturalnymi (powodzie, silne wiatry, burze). Do jego zadań należy również rozpowszechnianie informacji o aktualnym i przewidywanym stanie atmosfery i hydrosfery [4]. W skład SMOK wchodzi blisko 970 posterunków pomiarowych. Dokonują one takich pomiarów jak: stan wody w rzekach, temperatura wody w rzekach, stan wody gruntowej, opad atmosferyczny ciekły, prędkość oraz kierunek wiatru, temperatura powietrza w klatce i przygruntowa Posterunki pomiarowe przesyłają swoje pomiary do serwera, który gromadzi je w bazie danych. W skład systemu teleinformatycznego SMOK wchodzi m.in. duża grupa serwerów bazodanowych oraz superkomputer obliczający prognozy na podstawie przeprowadzanych pomiarów Rysunek 5. 16

17 Rysunek 5. Prognozujący superkomputer SGI Origin 3800 źródło: Instytut Meteorologii i Gospodarki Wodnej, [4] Korzyści płynące z połączenia dziedzin meteorologii oraz informatyki są długoterminowe i wymierne. Dzięki archiwizacji informacji z wielu punktów pomiarowych możliwe jest tworzenie dokładnych i przekrojowych zestawień danych. Możliwe jest również prowadzenie dzienników pomiarowych w czasie rzeczywistym dzięki wykorzystaniu łączności radiowej i internetowej pomiędzy infrastrukturą pomiarową a gromadzącą dane. Niniejsza praca skupia się na zagadnieniach związanych ze sposobem połączenia wyników pomiarów meteorologicznych z systemem informatycznym, dedykowanym do ich wizualizacji. Wykorzystano w niej zbiór urządzeń pomiarowych oraz infrastrukturę teleinformatyczną, w szczególności dostęp do bazy danych meteorologicznych krakowskiej firmy Trax Elektronik. System stworzony przez firmę przypomina SMOK IMGW, składa się z meteorologicznych stacji pomiarowych, punktów akwizycji obrazu (tzw. punktów kamerowych) oraz urządzeń przesyłających zarejestrowane informacje do wyspecjalizowanej w tym celu bazy danych. Stacje meteorologiczne firmy Trax Elektronik wyposażone są w urządzenia rejestrujące, które gromadzą w swojej pamięci wyniki pomiarów (temperaturę, wilgotność względną, wysokość opadu, prędkość oraz kierunek wiatru). Odbywa się to w 10-minutowych odstępach czasu. Do rejestratora podłączony jest modem pracujący w technologii GPRS 17

18 (General Packet Radio Service), który umożliwia przesyłanie pakietów zawierających wartości zmierzonych wielkości do danych serwera meteorologicznego. Pakiety danych są następnie dekodowane i zapisywane w meteorologicznej bazie danych. Zastosowanie technologii GPRS umożliwia łączność na bardzo dużych odległościach i w trudno dostępnych lokalizacjach - Rysunek 5. Rysunek 6. Schemat ideowy podsystemu akwizycji i archiwizacji danych źródło: opracowanie własne Zaprojektowany system GMAP zakłada wykorzystanie istniejącej bazy danych jako źródła niezbędnych informacji związanych zarówno z wielkościami meteo, jak również tych związanych z aspektami konfiguracyjnymi tworzonego systemu. Meteorologiczna baza danych traktowana jest w systemie firmy Trax Elektronik jako: magazyn i archiwum danych meteo, magazyn i archiwum obrazów kamerowych, magazyn informacji o komponentach (stacje pomiarowe, punkty akwizycji obrazu), interfejs udostępniający możliwość pobierania i obróbki uzyskanych wartości. W systemie GMAP jest ona traktowana w analogiczny sposób. Szczegółowe informacje dotyczące tej kwestii znajdują się w rozdziale 5. 18

19 Stan obecny i perspektywy rozwoju GMAP ograniczony jest zasięgiem do danych zawartych w meteorologicznej bazie danych firmy TraxElektronik. GMAP wykorzystuje za pośrednictwem języka PHP informacje o położeniu geograficznym obiektów (stacji meteorologicznych, punktów kamerowych) zapisanych w bazie danych. Stan na dzień 1 czerwca 2008r wynosi ok. 500 stacji meteorologicznych oraz ok. 250 punktów kamerowych. Na rysunku 7 przedstawione zostały stacje meteorologiczne należące do Generalnej Dyrekcji Dróg Krajowych i Autostrad (GDDKiA). W miarę rozwoju systemu i instalowania kolejnych punktów pomiarowych oraz kamer, liczby te wzrosną, tym samym zwiększy się zasięg GMAP. Liczniejsze stacje meteo ulokowane w pewnym ograniczonym obszarze pozwalają na dokładniejszą analizę panujących warunków atmosferycznych. Rysunek 7. Stacje meteorologiczne GDDKiA w systemie firmy Trax Elektronik źródło: firma Trax Elektronik, [5] 19

20 4. NARZĘDZIA 20

21 Do stworzenia programistycznych, systemu dzięki którym GMAP niezbędny możliwe było był komplet zamieszczenie narzędzi informacji pochodzących z meteorologicznej bazy danych na mapie Google. Przetransformowanie informacji zapisanych w bazie danych do formatu xml odbyło się za pośrednictwem skryptów napisanych w języku PHP. Stworzenie interfejsu umożliwiającego nanoszenie danych meteorologicznych na mapę Google możliwe było dzięki wykorzystaniu skryptów zapisanych w języku PHP, JavaScript oraz technologii AJAX. Narzędzia, języki programowania i technologie wykorzystane do implementacji systemu GMAP zostały szczegółowo opisane w kolejnych podrozdziałach. 4.1 BAZA DANYCH Baza danych jest zbiorem wzajemnie powiązanych danych, przechowywanych w pamięci komputerów i wykorzystywanych przez programy użytkowe instytucji lub organizacji wraz z oprogramowaniem umożliwiającym definiowanie, wykorzystywanie i modyfikowanie tych danych [1]. W potocznym ujęciu, pojęcie bazy danych obejmuje dane oraz program komputerowy wyspecjalizowany do gromadzenia i przetwarzania tych danych. Program taki (często pakiet programów) nazywany jest Systemem do zarządzania bazą danych (ang. DataBase Management System, DBMS). Historia komputerowych baz danych sięga lat 60' ubiegłego wieku. Początkowo, bazujące na opracowaniu Charlesa Bachmana systemy komputerowych baz danych wykorzystywały szeregowy, przez co bardzo wolny dostęp do zgromadzonych informacji. Wraz z wprowadzeniem na rynek urządzeń umożliwiających swobodny dostęp do 21

22 danych, zmienił się sposób implementacji samych baz. W 1970r Edgar Frank Codd zaproponował relacyjny model, który miał pozwalać na łączenie danych dotyczących tych samych obiektów przechowywanych w różnych zbiorach. Nowoczesne relacyjne bazy danych pozwalają na wykonywanie szeregu operacji na przechowywanych danych, w szczególności na sortowanie według dowolnie zdefiniowanych kryteriów. Operacje te mogą być dowolnie łączone i rozbudowywane - służą do tego specjalne języki, z których najpopularniejszymi jest SQL (ang. Structured Query Language). Nowoczesne relacyjne bazy danych mogą gromadzić dane różnych typów. Najpopularniejsze z nich to: bool - wartości bool'owskie (prawda / fałsz) byte, integer, float, double wartości liczbowe, char, varchar, text - łańcuchy znakowe (string), time, timestamp data i czas Nie brakuje również możliwości zapisu danych specjalistycznych typów [6]: bytea dane binarne, polygon typ reprezentujący wielokąt, inet typ reprezentujący adres internetowy, macaddr typ reprezentujący adres MAC urządzenia, Wymienione wyżej typy zaimplementowane zostały w relacyjnym systemie bazodanowym PostgreSQL [6]. Ich nazwy oraz ilość rezerwowanego na nie miejsca w pamięci dyskowej różni się między systemami bazodanowymi innych producentów, dlatego więc projektując bazę danych od podstaw, należy uważnie zaznajomić się z jej dokumentacją. Ilość typów danych oraz ich różnorodność pozwala projektować bazy danych w sposób dostosowany do i odpowiadający wymaganiom funkcjonalnym 22

23 użytkownika. Duże znaczenie podczas podejmowania decyzji o wykorzystaniu danego typu ma jego wielkość, czyli rezerwowany dla niego obszar w pamięci dyskowej komputera. Wybór nieodpowiednich typów danych może skutkować nadmiernym zapotrzebowaniem na przestrzeń dyskową w miarę rozrastania się bazy danych. Bazy danych przechodzą ciągłą ewolucję, kolejne implementacje zyskują na wydajności, poprawie bezpieczeństwa i niezawodności. Posiadają mechanizmy umożliwiające zdalną pracę (na przykład programy: PgAdmin,MySqlAdmin, psql, interfejsy stworzone za pomocą języka PHP opisane w rozdziale 5.2.2). Typowym i nieodzownym komponentem nowoczesnych baz danych są możliwości wielodostępu oraz definiowania użytkowników na wielu poziomach uprawnień. Czyni je to użytecznymi i godnymi uwagi w wielu dziedzinach zastosowań - Rysunek 8. Rysunek 8. Perspektywa korzystania z bazy danych z punktu widzenia dostępu oraz uprawnień użytkowników źródło: opracowanie własne W zależności od preferencji lub specyfiki środowiska operacyjnego, pod kontrolą którego ma pracować baza danych, możliwa jest instalacja odpowiadających sobie baz danych pracujących na różnych platformach sprzętowych oraz systemowych (Windows, Linux, Solaris). Przykładami popularnych i nieustannie rozwijanych relacyjnych baz danych są MySQL, PostgreSQL oraz Oracle. Dwie pierwsze z nich są darmowe, natomiast 23

24 Oracle jest bazą wymagającą płatnej licencji. Każda z nich do obsługi zapytań oraz pozostałych operacji wykorzystuje język SQL. Za jego pomocą można tworzyć również kopie zapasowe danych, które są łatwo przenaszalne pomiędzy różnymi systemami operacyjnymi. Jest to kluczowe z punktu widzenia bezpieczeństwa i archiwizacji. SQL realizuje założenia relacyjnej bazy danych zawarte w akronimie CRUD wymienione w tabeli 1. Każda relacyjna baza danych musi implementować funkcje tworzenia, odczytu, aktualizacji oraz usunięcia elementów, które przechowuje. Tabela 1. Założenia CRUD źródło: opracowanie własne Polskie tłumaczenie Odpowiednik SQL Create utwórz insert Read odczytaj select Update zaktualizuj update Delete (destroy) usuń (zniszcz) delete Zarówno programista jak i użytkownik dysponując potężnym narzędziem jakim jest baza danych może w sposób bezpieczny i wydajny przechowywać, wstawiać oraz odczytywać dane w niej zakodowane. Z uwagi na ciągły rozwój oprogramowania baz danych oraz poszerzania się spektrum ich wykorzystania, pewnym jest, że chcąc gromadzić dane w sposób nowoczesny i systematyczny nieuniknione jest wykorzystanie do tego celu komputerowej bazy danych. System GMAP wykorzystuje meteorologiczną bazę danych należącą do firmy Trax Elektronik. Podstawową bazodanową jednostką magazynującą informacje strukturalnie i logicznie ze sobą powiązane są tabele. W skład każdej z tabel wchodzą wiersze (krotki). Z kolei każdy wiersz w tabeli składa się z pól. Posiadają one unikalną w obrębie tabeli nazwę oraz niosą informację o typie danych które są w nich przechowywane. 24

25 4.1.1 TABELE METEOROLOGICZNE I INFORMACYJNE Dane w bazie firmy Trax Elektronik przechowywane są w tabelach, które zostały podzielone na informacyjne oraz meteorologiczne. Dla lepszego zobrazowania zależności pomiędzy poszczególnymi tabelami, został stworzony diagram ERD (ang. Entity Relationship Diagram) - diagram związków encji przedstawiony na rysunku 9. Rysunek 9. Relacje pomiędzy tabelami bazodanowymi projektowanego systemu źródło: opracowanie własne Na rysunku 9 przedstawione zostały kluczowe z punktu widzenia zaprojektowanego systemu GMAP tabele bazodanowe wraz z polami, które wchodzą w ich skład. Tabele meteorologiczne zostały wyróżnione kolorem niebieskim, natomiast tabele informacyjne zostały wyróżnione kolorem czerwonym. Tabela stacje jest tabelą informacyjną jednak ze względu na jej szczególny charakter na diagramie 25

26 zaznaczona została kolorem czarnym. Ponadto, diagram zawiera relacje między konkretnymi polami w tabelach: relacja 1:1 oznacza relację jeden do jednego relacja 1:1..n oznacza relację jeden do wielu Dodatkowymi oznaczeniami są: PK klucz podstawowy tabeli (ang. Primary Key) FK klucz obcy (ang. Foreign Key) PF klucz podstawowy/obcy (ang Primary/Foreing key) Klucz podstawowy identyfikuje rekord (krotkę) w sposób unikalny. Klucz obcy wskazuje na referencję do klucza podstawowego znajdującego się w innej tabeli. Jak widać na rysunku 9, aby uzyskać dane pomiarowe pochodzące ze stacji o wybranym identyfikatorze (stid), należy wykorzystać trzy dodatkowe tabele: pakiety, pomiary oraz wielkości. Z kolei aby dysponować kompletem informacji o danej stacji pomiarowej, potrzebne jest dodatkowo połączenie tabel rejony oraz pkamerowe. TABELE INFORMACYJNE Jak już było wspomniane wcześniej w rozdziale 3, w skład systemu firmy Trax Elektronik wchodzą urządzenia pomiarowe (stacje meteo oraz punkty kamerowe). Reprezentacja bazodanowa stacji meteorologicznych przedstawia się w sposób przedstawiony w tabeli 2. Tabela bazodanowa stacje zawiera informacje o pracujących w systemie stacjach meteorologicznych. 26

27 Tabela 2. Tabela bazodanowa stacje źródło: opracowanie własne Nazwa pola stid (PK)1 stacja szer dlug rejid ip Typ zmiennej smallint text real real integer inet przykład 44 Nowogród Objaśnienia poszczególnych pól: stid: numer identyfikacyjny stacji, typ: small int (zapisany na 2 bajtach) stacja: nazwa stacji pod jaką figuruje ona w systemie, typ: text napis szer: współrzędna określająca szerokość geograficzną na jakiej zlokalizowana jest stacja, typ: real wartość zmiennoprzecinkowa zapisana na 4 bajtach dlug: współrzędna określająca długość geograficzną na jakiej zlokalizowana jest stacja, typ: real rejonid: identyfikator rejonu, do którego stacja przynależy, typ: integer wartość całkowita zapisana na 4 bajtach Tabela rejony Zawiera ona informację o rejonie do którego przynależy dana stacja. Jej obecność pomaga w identyfikacji oraz klasyfikacji grupy stacji biorąc pod uwagę kryterium ich położenia na mapie Polski - tabela 3. Tabela 3. Tabela bazodanowa rejony źródło: opracowanie własne Nazwa pola rejid (PK) nadrzedny rejnazwa Typ zmiennej integer integer text przykład warszawa 1 PK (Primary Key) z ang. klucz podstawowy. Jednoznacznie identyfikuje rekord w tabeli,jego wartość musi być unikalna w obrębie tabeli. 27

28 Objaśnienia poszczególnych pól: rejid: unikalny numer identyfikacyjny rejonu, typ: integer wartość całkowita zapisana na 4 bajtach, nadrzedny: wskaźnik do numeru identyfikacyjnego rejonu nadrzędnego względem aktualnie rozpatrywanego, typ: integer wartość całkowita zapisana na 4 bajtach, rejnazwa: nazwa rejonu, typ: text napis. Tabela pkamerowe W tej tabeli zapisane są informacje potrzebne do przypisania stacji meteorologicznej odpowiadającego jej punktu kamerowego, oraz wydobycia informacji o położeniu plików z obrazami zarejestrowanymi przez zainstalowane kamery - tabela 4. Tabela 4. Tabela bazodanowa pkamerowe źródło: opracowanie własne Nazwa pola pkamid (PK) pkamnum pkamnazwa pkamdir Typ zmiennej serial smallint text text przykład Wojtachowice zielona_gora Objaśnienia poszczególnych pól: pkamid: unikalny numer identyfikacyjny punktu kamerowegom, typ: serial wartość całkowita, autoinkrementująca się, zapisana na 4 bajtach pkamnum: numer punktu kamerowego, jest odnośnikiem do tabeli stacje. Stacje pomiarowe posiadające punkt kamerowy będą posiadać odpowiadający im wpis w tabeli pkamerowe. Typ: smallint wartość całkowita zapisana na 2 bajtach. Pkamnazwa: nazwa punktu kamerowego w systemie, typ: text napis pkamdir: wskazuje ścieżkę przeszukiwań obrazów zgromadzonych na serwerze, typ: text napis 28

29 TABELE METEOROLOGICZNE Do tabel meteorologicznych projektowanego systemu należą: pakiety, pomiary oraz wielkości. Schemat ich zależności tabelami zaprojektowany został w sposób umożliwiający przypisanie każdej ze stacji zmierzonych przez nią wartości wraz z uwzględnieniem czasu w którym zostały one przesłane do bazy danych. Tabela pakiety Zawiera informację o pojedynczej porcji danych (pakiecie) przesłanym przez stację meteo do serwera bazy danych tabela 5. Tabela 5. Tabela bazodanowa pakiety źródło: opracowanie własne Nazwa pola pktid (PK) stid measured Typ zmiennej integer smallint timestamp przykład :40:00+01 Objaśnienia poszczególnych pól: pktid: unikalny numer pakietu w systemie bazy danych, typ: integer - wartość całkowita zapisana na 4 bajtach stid: identyfikator stacji meteo, wskazuje na pochodzenie pakietu, typ: smallint wartość całkowita zapisana na 2 bajtach measured: czas zmierzenia pakietu, typ: timestamp - znacznik czasowy. Tabela pomiary Przyporządkowuje pakietowi o wybranym identyfikatorze pakietu (pktid) wartość oraz identyfikator pomiaru. Nie zawiera ona klucza podstawowego. 29

30 Zamiast niego pomiary identyfikowane są za pomocą dwóch kryteriów: identyfikatora pakietu pktid oraz identyfikatora pomiaru pomid tabela 6. Tabela 6. Tabela bazodanowa pomiary źródło: opracowanie własne Nazwa pola pktid (PF) pomid (PF) value Typ zmiennej integer smallint real przykład Objaśnienia poszczególnych pól: pktid: identyfikator pakietu, którego dany pomiar i jego rodzaj dotyczy, typ: integer - wartość całkowita zapisana na 4 bajtach, pomid: identyfikator wielkości pomiaru, typ: smallint - wartość całkowita zapisana na 2 bajtach, value: wartość pomiaru - typ real - zmiennoprzecinkowa liczba zapisana na 4 bajtach Tabela wielkosci jej poszczególne pola przedstawione są w tabeli 7. Tabela 7. Tabela bazodanowa wielkosci źródło: opracowanie własne Nazwa pola pomid (PK) pomnazwa jednostka Typ zmiennej smallint text text przykład 32 T_20 C Objaśnienia poszczególnych pól: pomid: unikalny identyfikator wielkości pomiaru,typ: integer wartość całkowita zapisana na 4 bajtach 30

31 pomnazwa: nazwa wielkości pomiaru, typ: text napis, jednostka: jednostka wielkości pomiaru, typ: text napis Zaprezentowany w niniejszym rodziale rzeczywisty i pracujący model bazy danych meteorologicznej jest doskonałym źródłem danych dla projektowanego systemu GMAP. Pomiary takie jak temperatura powierzni ziemi, temperatura powietrza, wilgotność, intensywność opadu oraz wiatr są umieszczane w bazie danych na bieżąco, wraz z momentem ich nadesłania ze zdalnych stacji meteo. Pozwala to pracować z wykorzystaniem aktualnych i wiarygodnych danych, ponieważ stacje wyposażone są w profesjonalne czujniki rejestrujące mierzone wielkości. Z uwagi na bardzo dużą ilość stacji pomiarowych zarejestrowanych w bazie danych oraz fakt usytuowania ich w różnych województwach Polski, projektowany system może posłużyć za miarodajną i dokładną podstawę do wizualizacji panujących warunków meteorologicznych [10]. Jednym z interfejsów przystosowanych do współpracy z wykorzystywaną bazą danych meteorologicznych jest interfejs udostępniany przez język skryptowy PHP, a w szczególności przez jego rozszerzenie o nazwie php5-pgsql. Rozszerzenie o którym mowa umożliwia formułowanych w języku SQL, odbiór zdalne wykonywanie zapytań i dalsze przetwarzanie otrzymanych rezultatów. Opis wykorzystania rozszerzenia php5-pgsql znajduje się w rozdziale

32 4.2 PHP HYPERTEXT PREPROCESSOR Inspiracją do rozpoczęcia w roku 1994 prac nad projektem PHP (ang. PHP hypertext preprocessor) przez duńskiego programistę Rasmusa Lerdorfa była chęć zebrania statystyk użytkowników odwiedzających jego domową stronę WWW. Stworzył on więc zestaw narzędzi wzbogacających funkcjonalność serwera WWW, które błyskawicznie zostały zauważone i zdobyły popularność wśród społeczności internetowej. Po opublikowaniu przez Lerdorfa kodu źródłowego PHP, język ten zaczął być rozwijany przez programistów na całym świecie. Z biegiem czasu zaczęły pojawiać się nowe jego wersje, zaimplementowano w nim obiektowość (od wersji PHP 3.0), uczyniono język modułowym. Programiści mogli zatem poszerzać możliwości języka poprzez dodawanie do niego własnych modułów. Obecnie PHP definiowany jest jako obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. PHP najczęściej stosuje się do przetwarzania skryptów po stronie serwera WWW ale może być on również używany z poziomu wiersza poleceń (tzw. CLI Command Line Interface), wówczas obecność serwera WWW nie jest koniecznością. Aktualnie najnowszą wersją PHP jest wersja 5.26 z 1 mają 2008r, która wykorzystuje ponad 180 oficjalnych i nieoficjalnych modułów należących do repozytorium PECL (ang. PHP Extension Community Library). Obecne moduły PHP zwane również rozszerzeniami języka umożliwiają między innymi wykonywanie takich operacji, jak: łączenie się z różnymi rodzajami baz danych ( mysql, PostgreSQL i inne), pobieranie z nich informacji i ich prezentację 32

33 dynamiczne generowanie skompresowanych obrazów (obrazy jpg, png, gif i inne), zdalne otwieranie i wywoływanie plików oraz innych skryptów, autentykację użytkownika, przesyłanie danych zaszyfrowanych, nagrywanie i przetwarzanie dźwięku Składnia języka PHP przypomina swoim wyglądem znaną z języka C i podobnych. Cały kod PHP musi zawierać się pomiędzy znacznikami: <?php oraz?>, lub <? oraz?>, w przeciwnym wypadku interpreter1 nie wykona kodu. Aby łatwiej byłoby sobie wyobrazić jak wygląda kod języka PHP, przedstawiam fragment skryptu, który wykorzystywany jest przeze mnie do generowania dokumentów w formacie XML - listing 1. 1 <?php 2 header("content-type: text/xml; charset=iso "); 3 echo "<?xml version=\"1.0\" encoding=\"iso \"?>";... 5 foreach($ra as $stid => $fields) 6 { 7 8 echo "<station id=\"$stid\">"; 9 echo "<station_info>"; } 11// To jest tylko komentarz, interpreter pomija go w trakcie przetwarzania kodu. 12?> Listing 1. Fragment skryptu PHP generującego dokument w formacie XML źródło: opracowanie własne Linie 1 oraz 12 wyznaczają odpowiednio początek oraz koniec skryptu. W linii nr 2 ustawiany jest rodzaj tworzonego dokumentu, w tym wypadku jest nim text/xml z kodowaniem znaków ISO Przeglądarka internetowa dzięki 1 Interpreter PHP służy do uruchamiania skryptów PHP. Jest to program, który odczytuje plik z kodem PHP a następnie przekształca go na kod maszynowy. 33

34 umieszczeniu tej informacji decyduje w jaki sposób interpretować treść dokumentu. ISO jest stroną kodową języka polskiego, której zastosowanie umożliwia poprawne wyświetlane znaków charakterystycznych dla naszego języka (ą,ę,ć,ż,ź,ó,ł,ń). Linia nr 3 za pomocą dyrektywy języka PHP o nazwie echo umieszcza w ciele dokumentu deklarację informującą o typie dokumentu. Echo jest dyrektywą, która wypisuje na ekran treść zawartą pomiędzy znakami cudzysłowów. Jeśli konieczne jest umieszczenie znaków cudzysłowu wewnątrz wyświetlanej treści, wówczas muszą być one zamaskowane przy pomocy znaku \. Linia nr 5 przedstawia przykład wykorzystania pętli foreach. Ten rodzaj pętli wykorzystywany jest do przeszukiwania zawartości tablic w języku PHP. Wszystkie zmienne, zarówno tekstowe,liczbowe jak i tablicowe muszą rozpoczynać się znakiem dolara $. Pętla foreach z linii nr 5 pozwala na przeszukanie tablicy wielowymiarowej $ra po jej indeksie zapisywanym odpowiadające aktualnie w zmiennej $stid. przeszukiwanemu Zmienna $fields indeksowi. Nie zawiera jest dane wymagane zwiększanie indeksu podczas kolejnych przebiegów pętli, język PHP robi to automatycznie. W linii 8 odbywa się złożenie napisu <station id= z zawartością zmiennej $stid oraz znaku >. Wynik złożenia jest następnie wyświetlany na ekranie za pomocą dykertywy echo. Jak widać na powyższym przykładzie język PHP jest analogiczny do innych języków programowania, przez co doświadczony programista nie będzie miał problemów związanych z poprawnym jego stosowaniem. Cechą, która przemawia na korzyść PHP względem innych obiektowych języków programowania (C++, Java) jest sposób tworzenia zmiennych i przechowywania ich w pamięci maszyny. Stosując PHP, programista unika nieraz kłopotliwego i czasochłonnego dopracowywania programu pod kątem wykorzystania pamięci operacyjnej, gdyż wszelkie operacje przydzielania i zwalniania pamięci zajmowanej przez definiowane zmienne odbywają się automatycznie. Język PHP stosowany jest w aplikacjach, od których wymaga się dostępności 34

35 przez Internet, aby móc z niego korzystać potrzebne jest zainstalowanie obsługi języka w serwerach WWW. Ponieważ PHP jest stabilny, dobrze udokumentowany oraz rozwijany a także posiada możliwość wykonywania za jego pośrednictwem zdalnych połączeń z bazami danych, jest on znakomitym wyborem językak który może posłużyć do zaprogramowania interfejsu umożliwiającego obsługę, pobieranie oraz obróbkę danych pochodzących z bazy danych. Popularnym i elastycznym sposobem na przechowywanie informacji pobranych z baz danych jest wykorzystanie standardu XML opisane szczegółowiej w rozdziale 4.3. Za pomocą skryptów napisanych w języku PHP możliwe jest tworzenie dokumentów XML. Język PHP z punktu widzenia projektu GMAP jest elementem łączącym bazę danych ze standardem XML. 4.3 EXTENSIBLE MARKUP LANGUAGE XML XML(ang. Extensible Markup Language) Rozszerzalny Język Znaczników jest uniwersalnym językiem formalnym1, służącym do zapisu różnorodnych danych w sposób przejrzysty i usystematyzowany. Z uwagi na sposób prezentacji danych zapisanych za pomocą XML, nadaje się on do tworzenia usług internetowych niezależnych zarówno od platformy sprzętowej, jak i innych podsystemów które będą go wykorzystywać. Cechuje się on również tym, że jest łatwy do zrozumienia z uwagi na wykorzystanie w nim znaczników, a tworzone w nim dokumenty mogą być łatwe do interpretacji przez niedoświadczonego użytkownika. Jego zaletą jest to, że nawet osoba nie znająca zasad tworzenia dokumentów XML będzie w stanie w znacznym stopniu rozszyfrować zakodowaną w nich informację. Wynika to z prostoty i harmonii tego języka [3]. Wachlarz zastosowań języka XML jest bardzo szeroki; począwszy od budowy interaktywnych 1 aplikacji Język formalny pojęcie z zakresu logiki, definiuje alfabet wraz z zakresem posługiwania się nim. 35

36 internetowych, przetwarzaniu danych, renderingu witryn WWW na statycznych interfejsach użytkownika skończywszy [12]. Wspomniana niezależność XML od platformy sprzętowej, umożliwiła łatwą wymianę dokumentów pomiędzy różnymi systemami i znacząco przyczyniła się do popularności tego języka w dobie Internetu. Język XML należy do podzbioru języka SGML. SGML w odróżnieniu od języków znaczników dedykowanych do konkretnych zastosowań (takich jak np. HTML (ang. Hypertext Markup Language), nie jest zbiorem określonych znaczników i reguł ich użytkowania, lecz ogólnym, nadrzędnym językiem służącym do definiowania dowolnych znaczników i ustalania zasad ich poprawnego użytkowania [17]. Organizacją, która trzyma pieczę nad ustanawianiem standardów implementacji i przesyłania witryn WWW, w tym również dokumentów XML jest założona 1 października 1994r przez Tima Berners-Lee, World Wide Web Consortium (w skrócie W3C). Każdy człowiek dąży do uporządkowania i usystematyzowania otaczającego go świata, dlatego format XML dzięki ograniczeniom oraz przejrzystym zasadom tworzenia w nim dokumentów, jest dziś tak popularnym formatem udostępniania informacji REGUŁY TWORZENIA DOKUMENTÓW XML Każdy język komputerowy, zarówno kompilowany (C, C++, Pascal), jak również język znaczników XML posiada swoje zasady oraz reguły, których należy przestrzegać podczas posługiwania się nim. Dokument XML jest poprawny składniowo (ang. well formed), jeżeli zgodny jest z regułami składni XML, mianowicie: Na początku każdego dokumentu musi znajdować się deklaracja specyficzna dla typu XML, 36

37 W dokumencie dopuszczalne jest istnienie dokładnie jednego unikatowego elementu głównego korzenia, Wszystkie pozostałe elementy muszą znajdować się w obrębie korzenia, Wszystkie niepuste elementy muszą posiadać znacznik początkowy i końcowy, Pusty element nie musi posiadać znacznika końcowego, dopuszcza się zagnieżdżanie elementów, jednak nie mogą one na siebie zachodzić, Jeżeli element posiada atrybut, wówczas jego wartość musi być zapisana w cudzysłowach. Poprawność strukturalna (ang. structural validity) dokumentu XML osiągnięta jest wtedy, gdy jest on zgodny ze przypisaną mu definicją dokumentu. Najpopularniejszym językiem służącym do precyzowania reguł dokumentów z rodziny SGML jest DTD (ang. Document Type Definition). Definicja dokumentu obejmuje zasady określane przez użytkownika. Należą do nich m. in.: opisy dopuszczalnych elementów w zbiorze, lista atrybutów mogących cechować poszczególne elementy, zasady zagnieżdżań poszczególnych elementów. Przykład dokumentu XML Przykład dokumentu XML przedstawia Listing 2. 1 <?xml version= 1.0 encoding= UTF-8 standalone= yes?> 2 <wypozyczalnia-video kategoria= filmy przyrodnicze > 3 <film nosnik= DVD > 4 <autor>james Attenborough</autor> 5 <tytul>africa unrevealed continent</tytul> 6 <rok-wydania>2008</rok-wydania> 7 <uwagi>nowość</uwagi> 8 </film> 9 0 <film nosnik= VHS > 11 <autor>mary Crabtree</autor> 12 <tytul>galapagos wildlife mysteries</tytul> 13 <rok-wydania>1993</rok-wydania> 14 <uwagi/> 37

38 15 </film> 16 </wypozyczalnia-video> 17 <!-- tak zapisywany jest komentarz do kodu --> Listing 2. Przykładowy dokument w formacie XML źródło: opracowanie własne Linijka nr. 1 jest deklaracją, informującą o typie dokumentu. W tym przypadku typem dokumentu jest XML w wersji 1.0 z kodowaniem znaków UTF-8. W przypadku jej nie umieszczenia, przeglądarka internetowa, bądź też inny program parsujący taki dokument, może niepoprawnie zinterpretować jego zawartość. W przypadku nie zaznaczenia w dokumencie systemu kodowania znaków, zamiast oczekiwanych liter, mogą pojawić się nieczytelne znaki, uniemożliwiając tym samym dalsze, poprawne przetwarzanie takiego pliku. Atrybut standalone natomiast określa, czy dokument może występować samodzielnie czy też będzie on potrzebował odwołania do zewnętrznego DTD. Jak już było wspomniane w niniejszym rozdziale, aby dokument był poprawny składniowo, musi istnieć w nim dokładnie jeden element główny korzeń. Korzeniem dokumentu - Listing 2 - przykładowego dokumentu XML mogącego opisywać katalog filmów wypożyczalni wideo jest znacznik wypozyczalnia-video. Posiada on dodatkowo jeden atrybut: kategoria. Znaczniki w XML konstruuje się w podobny sposób jak w dokumentach HTML. Przykładowy znacznik otwierający ma postać <marker> a zamykający go </marker>. XML zezwala na umieszczanie w dokumentach znaczników pustych <znacznik_pusty/>, taki znacznik zastępuje treść <znacznik_pusty> </znacznik_pusty>. Elementy puste wykorzystuje się najczęściej wtedy, gdy zawierają one wyłącznie atrybuty. Bardzo ważną kwestią jest rozróżnianie wielkości liter. Znacznik <marker> nie jest tym samym znacznikiem co <MARKER> czy <MaRker>, nie można go również zamknąć wstawiając </MARKER>. XML nie wymaga stosowania jednej, konkretnej wielkości liter, konieczna jest jednak spójność w wykorzystaniu jednego systemu nazewnictwa znaczników. Analogicznie do języka HTML, atrybuty w XML określa się w znaczniku otwierającym element. Wymagane jest, aby były one zamknięte w znaki (') lub cudzysłowy ( ). 38

39 Linijki 3 9 z Listingu 2. wprowadzają do dokumentu opis elementu film. Zawiera on subznaczniki niosące informację o autorze, tytule, roku produkcji oraz uwagach na temat elementu film. Dodatkowo, element film z linijki 3 posiada atrybut informujący o typie nośnika. W analogiczny sposób można definiować pozostałe elementy film, umieszczając je kolejno pod sobą, mając na uwadze, aby znaczniki nie nachodziły na siebie, oraz to aby wszystkie znalazły się w obrębie korzenia. Programista ma prawo używać komentarzy w swoich dokumentach XML. Komentarze nie są przetwarzane przez parsery1. Rozpoczęcie bloku komentarza ma postać: <!--. Aby zakończyć blok, należy domknąć komentarz sekwencją -->. Cały tekst pomiędzy tymi znakami traktowany jako komentarz [Listing 2.,linia 17]. Trzeba mieć na uwadze, że w zasadniczej treści komentarza nie może się znaleźć sekwencja dwóch myślników (--), wówczas parser zgłosi błąd HIERARCHIA ELEMENTÓW W DOKUMENCIE XML Elementy mogą przechowywać tekst (pomiędzy znacznikami: początkowym a końcowym), mogą być puste, lub zawierać kolejne elementy zwane podelementami. Elementy zawierające inne elementy nazywane są elementami nadrzędnymi. Element film jest nadrzędny wobec elementów autor, tytuł, rok-wydania, uwagi [ Listing 1., Rysunek 10.]. 1 Parser - analizator składniowy. Dokonuje analizy danych wejściowych, opierając się na zmodyfikowanych algorytmach analizy języków formalnych. 39

40 Rysunek 10. Przykładowa hierarchia dokumentu XML źródło: opracowanie własne Zagnieżdżając jedne elementy w drugich, umieszcza się w dokumencie XML informację o zależnościach pomiędzy elementami nadrzędnymi a podrzędnymi (podelementami). W prosty sposób można uzyskać klarowny opis relacji typu nadrzędny podrzędny (np. opis struktury pracowniczej firmy) za pomocą notacji XML. Nie bez przyczyny XML wykorzystywany jest do zapisu informacji przechowywanych w bazach danych (rozdział 5.2.1), można bowiem utworzyć za jego pomocą dokument o charakterze listy odpowiadający krotkom zapisanym w tabeli. Podsumowując, sposób formułowania dokumentów XML jest bardzo zbliżony do naturalnych opisów różnych elementów dokonywanych przez człowieka. Z uwagi na tę cechę, dokumenty XML są łatwe w czytaniu i zrozumieniu. Dodatkowo, istnieją mechanizmy sprawdzania poprawności tworzonych dokumentów (np. są one wbudowane w przeglądarki internetowe). Pozwala to ustrzec się błędów i nieścisłości, które mogą w nich wystąpić na etapie projektowania. 40

41 4.3.3 PRZETWARZANIE DOKUMENTÓW XML Dokumenty XML mogą być czytane przez użytkownika w zwykłych edytorach tekstowych (Notatnik, Word Windows, gedit, nano Linux), jednak w przeważającej większości przypadków są one przetwarzane przez programy zwane parserami. Parsery dokonują analizy składniowej dokumentu, czyli sprawdzają czy dany dokument jest dobrze uformowany. Schemat przetwarzania dokumentu XML przez parser został zobrazowany na rysunku 11. Rysunek 11. Schemat przetwarzania dokumentu XML przez parser źródło: na podstawie [3] Ogromna większość nowoczesnych przeglądarek internetowych (Firefox, Netscape, Opera, Internet Explorer) posiadają wbudowane parsery XML umożliwiające użytkownikowi wyświetlenie w okienku treści dokumentu. 41

42 Wyspecjalizowane parsery zajmują się nie tylko wyświetlaniem treści dokumentu, lecz również potrafią: przekonwertować go na stronę w języku HTML, przetworzyć zawartą w nim treść na polecenia kierowane do bazy danych, wygenerować nowy dokument i zapisać go na twardym dysku, wstępnie zmodyfikować go i przekazać innemu podsystemowi celem dalszego przetwarzania, na przykład odbiorcą może być program napisany w języku JavaScript wykorzystujący technologię AJAX. Wykorzystanie technologii JavaScript w połączeniu z AJAX jest jednym z komponentów projektowanego systemu GMAP. 4.4 JAVASCRIPT JavaScript to obiektowy skryptowy język programowania, stworzony przez Brendana Eich, programistę Netscape Communications Corporation w 1995r. Umożliwiał on zagnieżdżanie swojego kodu w stronach WWW wzbogacając je o mechanizmy dynamicznego przetwarzania liczb oraz modyfikacji danych zapisanych w formularzach, bez konieczności przeładowywania całego dokumentu. JavaScript w wersji 1.0 opublikowano dla użytkowników w 1996r. Obecną wersją JavaScriptu jest wersja oznaczona numerem 1.5, trwają jednocześnie prace nad wersją 2.0 wzbogaconą o kilka rozszerzeń dodanych przez fundację Mozilla (twórcę m. in popularnej przeglądarki internetowej Firefox). 42

43 Kompatybilność. JavaScript jest obsługiwany przez ogromną większość współczesnych przeglądarek internetowych m. in Mozilla Firefox, Safari,Internet Explorer, Opera, Netscape. Aby kod napisany w JavaScript mógł zostać wykonany, należy umieścić w dokumencie HTML odpowiednie znaczniki oznaczające początek oraz koniec skryptu. W przypadku, gdy przeglądarka użytkownika nie obsługuje JavaScriptu, lub jego obsługa jest wyłączona, wówczas do dobrych praktyk programisty należy, aby ten przypadek obsłużyć. Najczęściej wiąże się to z wyświetleniem alternatywnej treści przeglądanego dokumentu lub informacji dla użytkownika [ Listing 3., linia 5 ]. Użycie kodu JavaScript w dokumencie HTML. Osadzanie kodu JavaScript w dokumencie HTML jest nieskomplikowane. Robi się to poprzez umieszczenie w dowolnym miejscu dokumentu HTML znacznika otwierającego kod w JavaScript <script>. W praktyce jednak,umieszcza się go na początku strony - w sekcji HEAD - która jest wczytywana przez przeglądarki jako pierwsza. Zabieg ten pozwala na uniknięcie błędów, które mogą mieć miejsce, gdy użytkownik nie czekając na całkowite załadowanie się strony kliknie na jakiś element, który jest obsługiwany przez JavaScript. 1 <html> 2 <head> 3 <script src="./skrypt.js" type="text/javascript"> </script> 4 <script type="text/javascript"> kod skryptu </script> 5 <noscript> Przeglądarka nie obsługuje JavaScript </noscript> 6 </head>.<!-- To jest komentarz HTML. -->.<!-- Tu znajduje się pozostała część dokumentu HTML. -->. 7 <html> Listing 3. Kod JavaScript w dokumencie HTML źródło: opracowanie własne Powyżej przedstawiono bardzo skrócony fragment dokumentu HTML, jego ideą jest pokazanie w jaki sposób umieszcza się kod JavaScript w HTML. 43

44 Zaprezentowane są dwa podejścia umieszczania kodu JavaScript w HTML, każde ma swoje wady oraz zalety. Podejście nr 1. Jego ilustracja znajduje się w linii nr 3. Definiowane jest w tej linii źródło, czyli ścieżka dostępu do skryptu, którego kod ma zostać załadowany. Skrypt źródłowy znajduje się w bieżącym katalogu pod nazwą skrypt.js. Jego typem jest text/javascript. Deklaracja typu jest niezbędna, w przypadku jej braku przeglądarka internetowa nie będzie w stanie poprawnie przetwarzać strony HTML. Podejście nr 2. Zakłada ono, iż treść (kod) skryptu umieszczony jest pomiędzy znacznikami <script> </script>. Jak widać typ pozostaje identyczny jak w przypadku podejścia nr 1. Umieszczanie JavaScript bezpośrednio w treści dokumentu HTML (podejście nr 2.) ma jedną zaletę. Pozwala na przechowywanie kodu JavaScript i HTML w jednym, tym samym pliku, ułatwia tym samym dokonywanie zmian w obydwu kodach jednocześnie, bez konieczności odszukiwania plików źródłowych. Jednak w przypadku, gdy programista zamierza użyć tego samego kodu JavaScript w wielu stronach HTML, wówczas wygodniej i rozsądniej jest dołączyć go w postaci pliku. (podejście nr 1.). Oprócz tego, jeśli zaistnieje warunkowa potrzeba użycia pewnego kawałka kodu JavaScript (np. w zależności od rodzaju przeglądarki internetowej użytkownika), wtedy również lepszym rozwiązaniem jest ładowanie odpowiedniego pliku niż umieszczanie wszystkich przypadków użycia w jednym, nieraz obszernym kodzie włączanym bezpośrednio do dokumentu HTML. JavaScript implementuje zaawansowane i złożone techniki wpływania na zawartość stron WWW. Jest on najczęściej osadzany dokumentach HTML 44

45 wzbogacając ich funkcjonalność i interaktywność. JavaScript 1.5 wspiera nowy, złożony standard W3C DOM. DOM (ang. Document Object Model) czyli obiektowy model dokumentu to API dla dokumentów HTML oraz XML. Wprowadza strukturalne odwzorowanie dokumentu, pozwalając modyfikować jego zawartość i warstwę prezentacji. DOM łączy strony WWW ze skryptami lub innymi językami programowania [15]. DOM specyfikowany przez organizację W3C udostępnia zestaw obiektów odzwierciedlających dokumenty HTML oraz elementy okna przeglądarki, w szczególności za jego pomocą: możliwe jest tworzenie, usuwanie i modyfikacja elementów HTML, możliwe jest dodawanie i usuwanie atrybutów wszystkich znaczników HTML, możliwe jest dodawanie i usuwanie stylów, z jakich korzysta dana strona WWW, możliwe jest przypisanie więcej niż jednej procedury w przypadku wystąpienia zdarzenia1 wymagającego obsłużenia przez JavaScript. Są to istotne udogodnienia, pozwalające na projektowanie bardzo dynamicznych i interaktywnych aplikacji. 1 Zdarzenie w opisywanym kontekście może to być kliknięcie myszką na przycisk znajdujący się na stronie WWW, bądź najechanie kursorem na element, który posiada przypisaną procedurę obsługi takiej ewentualności. 45

46 4.4.1 OBIEKTOWE PODEJŚCIE DO STRUKTURY DOKUMENTU HTML - DOM Obiektowość jest bardzo pożądaną cechą nowoczesnych języków programowania. Pozwala ona na traktowanie zmiennych programowych, tak jakby były one swego rodzaju kontenerami logicznie zaprojektowanego układu cech (zwanych zmiennymi wewnętrznymi klasy) wraz z towarzyszącymi nim sposobami wykorzystania, nazywanych metodami. Zatem mówiąc o klasie pewnego obiektu, mamy na myśli zestaw zmiennych, które obiekt przechowuje oraz zestaw metod, które umożliwiają operacje na tych zmiennych. Jak było wspomniane JavaScript jest językiem programowania, który pozwala działać na obiektach DOM i manipulować nimi. Innymi słowy, z racji tego, że budowa DOM jest hierarchiczna (drzewiasta) - możliwe jest przeszukiwanie wgłąb stosując relację rodzic-dziecko celem odnalezienia określonego elementu dokumentu HTML. W przypadku skomplikowanych dokumentów, zawierających wiele zagnieżdżonych elementów (w kontekście HTML są to znaczniki) próba odniesienia się do wybranego z nich wymaga doskonałej wiedzy o strukturze tego dokumentu. Aby lepiej uzmysłowić sobie czym jest obiekt DOM oraz jakie są powiązania i zależności pomiędzy konkretnymi jego składowymi, należy przyjrzeć się rysunkowi

47 Rysunek 12. Hierarchia obiektów DOM źródło: na podstawie [7] Na rysunku 12 zobrazowany jest schemat struktury dokumentu HTML w ujęciu DOM. Elementy w zacieniowanych prostokątach nazywane są obiektami, natomiast elementy w białych prostokątach to zbiory / kolekcje. W kolekcjach zbierane są obiekty danego typu, np. odnośniki, obrazy, arkusze stylów. Czyli zawartość strony WWW napisanej w HTML. JavaScript a obiekty DOM Język JavaScript wyposażony jest w mechanizmy i funkcje pozwalające na odwoływanie się do obiektów znajdujących się w obrębie dokumentu HTML. 47

48 Aby trafnie odróżnić instrukcje języka JavaScript od obiektów DOM, posłużę się poniższym listingiem kodu: var divtable = document.getelementsbytagname("div"); 2. alert("znaleziono + divtable.length + elementów <div>.");... Objaśnienia : Kolor niebieski oznacza użycie JavaScriptu, czerwony dotyczy DOM. var divtable = : tworzy zmienną JavaScript o nazwie divtable document.getelementsbytagname("div") : Obiekt document przechowuje wszystko, co znajduje się na stronie HTML- struktura dokumentu HTML w ujęciu DOM przedstawiona została na rysunku 12. DOM definiuje metodę dostępu do elementów dokumentu poprzez wywołanie metody getelementsbytagname na rzecz obiektu document. Pobiera ona do listy węzłów (NodeList, rodzaj specyficznej dla DOM tablicy, która przechowuje węzły) wszystkie znaczniki, które odpowiadają przekazanemu parametrowi (w kolejności występowania w źródle dokumentu). Zatem zmienna divtable staje się teraz listą węzłów elementów div występujących w dokumencie. Poprawnie sformułowany element div powinien posiadać atrybut id będący identyfikatorem w skali dokumentu. ; : średnik kończy instrukcję JavaScript alert() jest metodą DOM, która wyświetla okno dialogowe z przekazanym parametrem łańcuchem znakowym. W tym przypadku jest to napis sklejony z trzech składowych: łańcucha znakowego Znaleziono, własności lenght listy węzłów divtable oraz łańcucha znakowego elementów <div>. Własność lenght zdefiniowana w DOM zwraca liczbę całkowitą będącą ilością węzłów przechowywanych w liście węzłów. 48

49 Jeśli dokument HTML w którym wywołano powyższy fragment kodu zawierał 5 elementów typu div, wówczas użytkownik ujrzy na ekranie okno dialogowe: Jak udowadnia wyżej opisany przykład, za pomocą JavaScriptu można w klarowny i skuteczny sposób odwoływać się do zawartości dokumentu, pod warunkiem, że nie występują między elementami złożone zależności i zagnieżdżenia. W tym przypadku, należy użyć bardziej złożonych algorytmów. 4.5 ASYNCHRONOUS JAVASCRIPT AND XML AJAX (Asynchronous JavaScript and XML) jest od niedawna używaną nazwą na dwie potężne cechy przeglądarek WWW, które, choć dostępne od lat, były pomijane przez wielu autorów stron, aż do niedawna, gdy na rynku ukazały się takie aplikacje, jak Google Suggest i Google Maps. [14] Dzięki tym cechom można: wysyłać zapytania do serwera bez przeładowywania strony, parsować i pracować z dokumentami XML. 49

50 Termin AJAX jest akronimem od wyrazów: Asynchroniczny oznaczający sposób przesyłania danych. Użytkownik może korzystać ze strony internetowej która wysyła żądanie pobrania danych bez konieczności jej przeładowywania. JavaScript pochodzi od języka programowania, który implementuje funkcjonalność asynchronicznych zapytań. XML jest formatem przechowywania danych w dokumentach tekstowych. Łącząc ze sobą wyżej wymienione pojęcia w jedną całość, można otrzymać kwintesencję zastosowania AJAX. Jak wynika z rozszyfrowania akronimu AJAX, jest on niczym innym, jak technologią łączącą źródło danych zapisanych w dokumentach XML przy wykorzystaniu asynchronicznej transmisji realizowanej za pomocą odpowiednich obiektów i metod zaimplementowanych w języku JavaScript. Mówienie tutaj o technologii AJAX może być mylące, bowiem AJAX jest połączeniem wszystkich wyżej wymienionych składników. Pomimo XML w nazwie, AJAX niekoniecznie wymaga używania formatu XML do wymiany danych. Poza XML obsługiwane są między innymi takie metody jak zwykły tekst, sformatowany HTML (Formatted HTML) oraz format JSON (JavaScript Object Notation). Faktycznie, programista może się posłużyć dowolnym formatem, przy ograniczeniu, że musi on być możliwy do obsłużenia przez JavaScript. Asynchroniczność technologii AJAX jest cechą, która wprowadza nową jakość w projektowaniu aplikacji internetowych. Dotychczas, wysłanie zapytania do serwera, które powodowało zwrócenie przez niego pewnej porcji danych, wiązało się z koniecznością przeładowania aktualnej strony, celem otrzymania wyników swojego zapytania. Podejście do projektowania usług internetowych specyficzne dla AJAX jest zupełnie odmienne. Użytkownik chcący otrzymać pewne dane z serwera jest obsługiwany asynchronicznie a zarządzaniem transmisją pomiędzy nim a serwerem zajmuje się silnik AJAX [14]. 50

51 Rysunek 13. Synchroniczna i asynchroniczna aplikacja internetowa źródło: opracowane na podstawie [14] W klasycznym ujęciu synchronicznej aplikacji internetowej JavaScript posługuje się metodami GET/POST1 celem pobrania/wysłania nowych danych z/do serwera i ich prezentacji. To podejście, choć pożądane w pewnych sytuacjach (np. tworzenie systemu logowania), posiada pewną wadę : wymusza przeładowanie 1 GET/POST metody działań na wskazanym zasobie,w tym kontekście dotyczą one żądania pobrania/wysłania dokumentu właściwych dla protokołu HTTP. 51

52 całej strony lub ramki znajduje się pobierająca dane część kodu celem odświeżenia zawartości. Najważniejszym argumentem przemawiającym za korzystaniem z AJAX jest możliwość uzyskania wysokiego poziomu interaktywności w aplikacjach internetowych. Aplikacje internetowe zaprojektowane z wykorzystaniem technologii AJAX są nowoczesne, atrakcyjne dla użytkownika oraz szybkie, gdyż ograniczana jest ilość pobieranych przez klienta danych do tych, które faktycznie są jemu potrzebne - z serwera pobierane są zatem tylko te dane, których żąda użytkownik lub które są niezbędne. Pozwala to na zaoszczędzenie przepustowości łącz. Korzystanie z aplikacji opartej na AJAX przypomina pracę z tradycyjną aplikacją stacjonarną. Jest to bardzo pożądana cecha, ponieważ większość ludzi przyzwyczajonych jest do pracy z takimi właśnie programami. AJAX można również zdefiniować jako metodę wykorzystania JavaScriptu do komunikacji z serwerem niezależnie od tradycyjnych żądań GET i POST. Z technicznego punktu widzenia, podstawą pracy AJAX-a jest obiekt implementujący odpowiednie metody obsługi wykonywania zapytań i pobierania XML-a ze zdalnego serwera. Obiekt ten przyjął nazwę XMLHttpRequest. Bez jego obecności nie byłoby możliwe korzystanie z dobrodziejstw AJAX. Steven Holzner, autor książki Ajax Bible napisał: It s not just JavaScript that makes Ajax tick, it s the XMLHttpRequest object inside JavaScript. [11]. (To nie tylko sam JavaScript pozwala działać Ajax-owi. Robi to obiekt XMLHttpRequest należący do JavaScript-u.) XMLHttpRequest jest wyspecjalizowanym obiektem wbudowanym w język JavaScript nowoczesnych przeglądarek internetowych, którego fizyczna implementacja zależy od konkretnej przeglądarki. Dla przeglądarek Firefox oraz Safari jest on wewnętrznym obiektem JavaScript-u, natomiast dla Internet Explorer-a jest on wbudowanym obiektem ActiveX. W obydwu przypadkach jego funkcjonalność jest jednak taka sama. Ponieważ obiekt XMLHttpRequest różni się pomiędzy 52

53 przeglądarkami szczegółami implementacji, programista tworzący wykorzystujący go kod musi pamiętać żeby sprawdzić z którą implementacją ma do czynienia i zastosować odpowiednią procedurę obsłużenia każdego z przypadków użycia Listing 4. 1 function loadxmldocument(url) 2 { 3 // Firefox, Opera, Safari 4 if (window.xmlhttprequest) { 5 xmlreguestobject = new XMLHttpRequest(); 6 xmlreguestobject.open("get", url, true); } 10 // Windows' Internet Explorer 11 } else if (window.activexobject) { 12 xmlreguestobject = new ActiveXObject("Microsoft.XMLHTTP"); 13 xmlreguestobject.open("get", url, true); } 17} Listing 4. Dodawanie obsługi AJAX w zależności od wykorzystywanej przeglądarki internetowej źródło: opracowanie własne Fragment kodu z Listingu 4 ma za zadanie sprawdzić z jakiej przeglądarki korzysta klient (linie 4, 11), stworzyć odpowiadający dla każdej z nich obiekt (linie 5, 12) oraz wysłać żądanie o dokument url metodą GET (linie 6, 13). Pomimo różnic w nazewnictwie (XMLHttpRequest dla przeglądarek Firefox, Opera, Safari; Microsoft.XMLHTTP jako obiekt ActiveX dla Internet Explorer), funkcjonalności obiektów w obydwu przypadkach są identczne. Dla porządku będę posługiwał się nazwą XMLHttpRequest. XMLHttpRequest udostępnia API pozwalające wysyłać do serwera żądania HTTP metodami GET oraz POST. Są to te same metody jak w przypadku klasycznej (synchronicznej) aplikacji internetowejj (rysunek 13), z tą różnicą, że ich obsługą w przypadku AJAX-a zajmują się specjalne funkcje stowarzyszone z XMLHttpRequest. Z punktu widzenia serwera, są to zwyczajne zapytania od przeglądarki. Od strony JavaScript-u, XMLHttpRequest udostępnia treść oraz nagłówki wysyłanych komunikatów, przez co programista może na bieżąco 53

54 sprawdzać i informować użytkownika o postępie połączenia. Przekazaną przez serwer w odpowiedzi na żądanie klienckie treść można odebrać jako zwykły tekst (typ mime text/plain) lub dokument XML (typ mime text/xml). Najczęściej wykorzystywany jest model XML. Nie stoi jednak nic na przeszkodzie, aby odbieraną treść traktować jak zwykły tekst, trzeba jednak pamiętać aby jego format dawał się przetworzyć na poziomie JavaScript-u. responseasxml = xmlreguestobject.responsexml; responseastext = xmlreguestobject.responsetext; W dwóch powyższych 1-linijkowych fragmentach kodu przedstawione zostały metody uzyskania odpowiedzi serwera na zapytanie klienta. Zmienna responseasxml zawiera dokument w formacie XML, zmienna responseastext zawiera dokument w formacie tekstowym. Dalszym przetwarzaniem danych zawartych w tych dwóch zmiennych może zajmować się JavaScript. W zależności od struktury zwróconego dokumentu, programista projektuje odpowiednie procedury jego przetwarzania i decyduje o jego przeznaczeniu. 4.6 APPLICATION PROGRAMMING INTERFACE Google Maps to jeden z serwisów oferowanych przez firmę Google. Jest on bazą danych map oraz zdjęć satelitarnych i lotniczych pochodzących z całego świata. Zdjęcia można oglądać na stronie internetowej w różnych skalach, przy czym maksymalne przybliżenie dostępne jest w wybranych, największych miastach globu rysunek 14. Użytkownik posiada również możliwość przesuwania mapy we wszystkich kierunkach. 54

55 Rysunek 14. Zamek Wawelski w Krakowie oglądany na mapie Google źródło: opracowanie własne Mapy Google można oglądać zarówno na stronie internetowej producenta jak również możliwe jest projektowanie własnych witryn WWW wyposażonych w funkcjonalność i interfejs użytkownika wzorowaną na oryginale. Google Maps API to interfejs programowania aplikacji dostarczony przez firmę Google, który umożliwia wstawienie mapy na własną stronę internetową. API umożliwia zintegrowanie ze stroną internetową w pełni fukcjonalnej mapy, z naniesionymi na nią własnymi danymi oraz funkcjami przeznaczonymi do obsługi zdarzeń. Wszystkie czynności związane z mapami Google i Google API realizowane są przy użyciu języka JavaScript. Korzystanie z Google Maps API uwarunkowane jest dołączeniem do kodu strony WWW na której ma być umieszczona mapa Google pliku skryptu źródłowego JavaScript, dostarczanego przez firmę Google. Plik ten posiada w swojej nazwie 55

56 identyfikator, tzw. Google Maps API key, który można uzyskać rejestrując się w portalu Google [9]. Poprzez dołączenie ww. skryptu źródłowego, developer1 uzyskuje dostęp do bibliotek programistycznych dostarczanych przez Google Maps API. Biblioteki te zaimplementowane są w języku JavaScript i obejmują narzędzia pozwalające na [9]: Uwaga wstępna: kolorem czerwonym zaznaczone są fragmenty kodu specyficzne dla Google Maps Api, niebieskim natomiast JavaScriptu. 1. Utworzenie i umieszczenie mapy Google na stronie WWW. var map = new GMap2(document.getElementById("map")); W powyższej linii kodu tworzony jest obiekt JavaScript o nazwie map, który reprezentuje mapę. Argument konstruktora2 stanowi obiekt DOM o identyfikatorze "map". 2. Wycentrowanie utworzonej mapy, poprzez określenie punktu startowego map.setcenter(new GlatLng( , ), 17); Jest to zabieg konieczny do właściwego funkcjonowania mapy stworzonej w punkcie nr 1. Efekt osiągany jest poprzez wywołanie na rzecz obiektu map przyjmującej dwa argumenty. Pierwszym z nich jest obiekt typu setcenter GlatLng metody reprezentujący położenie geograficzne punktu, drugim jest liczba oznaczająca przybliżenie to mapy. odpowiednio Liczby długość i szerokość oraz geograficzna. W przykładzie środek mapy wskazuje na zamek królewski na Wawelu w Krakowie. 1 developer człowiek rozwijający pewną dziedzinę, w tym kontekście programista 2 konstruktor w kontekście programowania obiektowego, konstruktor to specjalna metoda wywoływana w celu utworzenia obiektu 56

57 3. Utworzenie i umieszczenie na istniejącej mapie punktów (markerów) var markermanager = new GmarkerManager(map); var marker = new Gmarker(point, icon); markermanager.addmarker(marker); markermanager.refresh(); Powyższe cztery linie kodu odnoszą się do obiektów stworzonych w punktach 1. oraz 2. Obrazują w jaki sposób stworzyć zarządcę markerów (linia nr 1) oraz marker (linia nr 2). Zarządca markerów - GmarkerManager posiada bardzo korzystną cechę, potrafi on nadać każdemu markerowi właściwość poziom przybliżenia, po przekroczeniu którego będzie on widzialny na mapie. Jest to bardzo pomocne w przypadku umiejscawiania bardzo dużej (300 i więcej) ilości markerów, bo pozwala pokazywać jedynie te, które mają poziom przybliżenia większy lub równy aktualnemu mapy. Do utworzenia markera potrzebne są dwie informacje: argument point niosący informację o jego położeniu geograficznym oraz icon będący graficznym znacznikiem reprezentującym go na mapie. Argument point może być obiektem typu GlatLng opisanym powyżej. Icon tworzony jest za pomocą konstruktora GIcon. Aby marker został naniesiony na mapę, należy go umieścić w zarządcy metodą addmarker a następnie zaktualizować zarządcę metodą refresh (linia nr 4). Przedstawione w niniejszym rozdziale klasy, obiekty i metody należące do Google Maps API są zestawieniem interesującym z punktu widzenia projektu GMAP. Opis dedykowanych dla GMAP rozwiązań opisany jest w rozdziale

58 5. PROJEKT GMAP MVT IMPLEMENTACJA 58

59 Zaprojektowany system GMAP ma na celu dostarczenie użytkownikowi programiście konfigurowalnego zestawu narzędzi potrzebnych do wizualizacji wielkości meteorologicznych na mapie Google. System wykorzystuje meteorologiczną bazę danych (rozdziały 5.1 oraz 4.1), pobierane z niej informacje stanowią po dalszym ich przetworzeniu podstawę treści wizualizowanych przez użytkownika. Podczas projektowania systemu GMAP staram się wykorzystywać najnowsze i szeroko dostępne technologie, mając na uwadze atrakcyjność końcowego produktu. Projektowany system z założenia ma pozwalać na odczyt aktualnych danych meteo z bazy danych i przygotowanie narzędzi programistycznych umożliwiających umieszczenie tych danych na mapie. Przetwarzanie informacji pobranych z bazy danych przebiega dwustopniowo. W pierwszym kroku są one pobierane z bazy danych oraz konwertowane do postaci dokumentów XML przy użyciu skryptów napisanych w języku PHP (rozdział 5.2). Dokumenty w formacie XML stanową punkt wyjścia do osiągnięcia celu, jakim jest przedstawienie danych w postaci zmiennych języka JavaScript. Mechanizm, odpowiedzialny za konwersję danych z XML do JavaScript opiera się na wykorzystaniu technologii AJAX służącemu do pobrania XML oraz autorskiego zestawu narzędzi JavaScript, które odpowiadają za poprawne jego przetworzenie (rozdział 5.3). Przygotowane w ten sposób gotowe do wykorzystania zmienne JavaScript stanowią komplet danych potrzebnych do umieszczenia ich na mapie Google (rozdział 5.4) przez użytkownika systemu GMAP. Od użytkownika wymaga się wyłącznie sprecyzowania parametrów pracy GMAP. Schemat ideowy systemu GMAP przedstawiony został na rysunku

60 Rysunek 15. Schemat ideowy systemu GMAP MVT (niebieskie strzałki wyznaczają kierunek przepływu danych, przerywane strzałki wskazują na miejsca ingerencji użytkownika w system) źródło: opracowanie własne Objaśnienia do rysunku 15: Kolorem niebieskim (strzałki oraz podpisy pod nimi) zaznaczony jest kierunek przepływu danych oraz narzędzia, za pomocą których stworzone zostały podsystemy realizujące go. Zobrazowany na środku rysunku 15 symbol dokumentu XML stanowi formę przejściową danych pomiędzy miejscem ich pobrania bazą danych a celem wizualizacją na mapie Google. Strzałki przerywane wskazują na miejsca wpływu użytkownika na działający system. Do podsystemów tworzących GMAP zalicza się: baza danych meteorologicznych, parametryzowalne skrypty napisane w języku PHP, dokumenty XML tworzone w trakcie pracy systemu, autorskie narzędzia napisane w języku JavaScript wykorzystujące technologię AJAX, szablon narzędzi służących wizualizacji danych na mapie Google (konfiguracja wizualizacji) 60

61 5.1 BAZA DANYCH Zaprojektowanie wydajnego i skalowalnego sposobu przechowywania danych jest kluczowym problemem, który należy rozwiązać podczas projektowania wysoko dostępnych systemów działających w czasie rzeczywistym. O tym jak ważny jest krótki czas reakcji oraz dostępność w przypadku systemu osłony meteorologicznej nie trzeba przekonywać. System osłony meteo, aby móc spełniać swoją rolę musi posiadać możliwość archiwizacji danych (niejednokrotnie ogromnych ich ilości) celem analizy bądź prognozowania zmieniających się warunków atmosferycznych na podstawie dostępnych w systemie informacji. Użycie specjalnie zaprojektowanej bazy jest bardzo rozsądnym sposobem na gromadzenie danych, spełniającym wyżej postawione warunki. Opis wykorzystywanej na potrzeby systemu GMAP bazy danych (tabel, pól, relacji) oraz ich znaczeń znajduje się w rozdziale 4.1. Projektowanie tabel bazodanowych, dobór typów pól w tabelach, wyznaczanie relacji pomiędzy tabelami wykracza poza ramy opisu systemu i korzysta z gotowego rozwiązania w postaci meteorologicznej bazy danych firmy Trax Elektronik. Wszystkie istotne kwestie związane z implementacją systemu zawarte zostały w rozdziale FORMAT XML ZAŁOŻENIA I IMPLEMENTACJA Aby możliwe było naniesienie informacji na mapę Google konieczne jest wstepne przetransformowanie ich z postaci pobranej z meteorologicznej bazy danych do formatu XML. 61

62 Wykorzystanie standardu XML jako sposobu do zapisu i udostępniania danych jest powszechne i szeroko stosowane. Istnieje szereg systemów wykorzystujących go zarówno jako źródła danych, jak również zapisujących je w tym standardzie. Do takich systemów należy również system GMAP, który w swej pierwszej fazie implementacji tworzy pliki w formacie XML, aby następnie wykorzystać je jako źródło danych. Wybór formatu XML jako swoistego rodzaju łącznika między bazą danych, a mapą Google jest uzasadniony, gdyż w miarę wzrostu liczby usług wykorzystujących standard XML, staje się on coraz bardziej rozpoznawalny, a co za tym idzie rośnie liczba ludzi wykorzystujących go na co dzień i projektujących różnego rodzaju oparte na nim usługi. Sprawia to, że system GMAP jest system otwartym dla większej rzeszy programistów, co daje mu szanse rozwoju. W kolejnych podrozdziałach opisany został przyjęty w systemie GMAP format danych XML (rozdział 5.2.1) oraz implementacja pozwalająca na przetransformowanie danych z bazy możliwa dzięki skryptom PHP (rozdział 5.2.2). Wykorzystanie stworzonych dokumentów XML jako źródła danych opisane zostało w rozdziale ŹRÓDŁO I ZASTOSOWANY FORMAT DANYCH W systemie GMAP dane zapisywane w formacie XML pozyskiwane są z meteorologicznej bazy danych. Zawiera ona informacje o położeniu stacji pomiarowych a więc o długości i szerokości geograficznej. Wszystkie punkty pomiaru zlokalizowane są w obrębie granic Polski, zatem nie jest potrzebna informacja o półkuli na której znajdują się interesujące nas obiekty. Każda stacja oprócz informacji o położeniu, posiada skojarzone z nią rodzaje prowadzonych pomiarów oraz ich wielkości i wartości. 62

63 Umieszczane w dokumentach XML tworzonych na potrzeby systemu GMAP wielkości meteorologiczne to: temperatura powietrza na powierzchni ziemi [ ], temperatura powietrza na wysokości 20cm [ ], temperatura powietrza na wysokości 50cm [ ], temperatura powietrza na wysokości 2m [ ], wysokość opadu atmosferycznego z okresu 10 minut [mm], kierunek wiatru, podany w stopniach [ᵒ] licząc od kierunku północnego, poruszając się zgodnie ze wskazówkami zegara, prędkość wiatru [m/s] Stacje pomiarowe różnią się między sobą typem, zatem zestaw mierzonych przez nie wielkości jest różny dla poszczególnych punktów pomiarowych. Oprócz wyżej wymienionych wielkości specyficznych dla systemu meteorologicznego, dokumenty XML zawierają również informację o nazwie stacji, jej lokalizacji i zarządcy któremu podlega dany punkt. Dodatkową informacją zapisaną w XML jest wspomniana wcześniej obecność punktów kamerowych. Podgląd lokalizacji stacji pomiarowej na podstawie zdjęć jest bardzo przydatny z punktu widzenia użytkownika przeprowadzającego wizualizację przy pomocy GMAP. Pomaga to w błyskawicznej ocenie analizy sytuacji meteorologicznej. System GMAP zakłada również uwzględnienie podziału terytorium Polski na rejony. Przewiduje on możliwość generowania dokumentów XML zawierających informacje jedynie o tych stacjach, które należą do wybranych rejonów. W przypadku, gdy w danym rejonie umieszczony jest punkt kamerowy1, informacja ta również uwzględniana jest przy tworzeniu dokumentów XML. 1 punkt kamerowy urządzenie lub grupa urządzeń rejestrująca nieruchomy obraz. 63

64 Tworzone w systemie dokumenty XML ściśle odwzorowywują zawartość bazy i zawierają wyżej wymienione atrybuty specyficzne dla każdego z punktów pomiarowych. Wpis w dokumentach o każdym punkcie pomiarowym zawiera odpowiednio usystematyzowane pod kątem logicznym elementy. Ich zestaw składa się na indywidualny dla każdego z punktów komplet informacji. Można powiedzieć, że wygenerowany każdorazowo dokument XML jest uporządkowaną listą. Jest to możliwe dzięki wykorzystaniu odpowiednich znaczników. W systemie GMAP przyjęty został format przedstawiony na Listingu 5, stworzony na z uwzględnieniem struktury logicznej wykorzystywanej meteorologicznej bazy danych. <elements> <station id="45"> <station_info> <name>jana Pawła II</name> <maintainer>kraków</maintainer> <longitude> </longitude> <latitude> </latitude> </station_info> <cameras>krakow</cameras> <station_measurements pktid=" "> <krw>291.2</krw> <prw>0</prw> <opad>0</opad> <T_0>17.4</T_0> <T_2>13.9</T_2> <T_20>14.2</T_20> <wilg>87.1</wilg> </station_measurements> </station> <station id="463"> <station_info> <name>cewice</name> <maintainer>rdlp Gdańsk</maintainer> <longitude>17.73</longitude> <latitude>54.44</latitude> </station_info> <cameras>na</cameras> <station_measurements pktid=" "> <krw>48.2</krw> <prw>0</prw> <T_50>0</T_50> 64

65 <wilg>85.3</wilg> </station_measurements> </station> </elements> Listing 5. Struktura zaprojektowanego dokumentu XML na przykładzie stacji pomiarowych Cewice oraz Jana Pawła II źródło: opracowanie własne Korzeniem tworzonych dokumentów jest znacznik o nazwie elements. W jego obrębie znajdują się wszystkie pozostałe znaczniki. Nazewnictwo większości znaczników jest anglojęzyczne. Cały dokument mógłby zawierać tylko i wyłącznie polskie wyrazy, jednakże każdemu projektantowi zależy na tym, aby jego praca była jak najbardziej przejrzysta i dostępna dla szerokiego grona odbiorców, również użytkowników zagranicznych. Bez tłumaczenia na nazwy angielskie pozostawiono elementy opisujące rodzaje mierzonych wielkości. Ma to na celu zachowanie precyzyjnej informacji o rodzaju pomiaru przeprowadzanego przez czujnik określonego typu. Elementem języka XML rozpoczynającym opis punktu pomiarowego jest znacznik <station>. Posiada on jeden atrybut o nazwie id. Atrybut ten jest unikalny dla każdej ze stacji i pozwala na jej identyfikację w systemie bazodanowym. Więcej na temat struktury bazy danych wykorzystywanej przez GMAP można znaleźć w rozdziale który szczegółowo ją opisuje rozdział Informacje nie związane z meteorologią zostały oddzielone od meteorologicznych celem uzyskania większej przejrzystości zaprojektowanego dokumentu - rysunek

66 Rysunek 16. Schemat hierarchii oraz podziału elementów w zaprojektowanym dokumencie XML źródło: opracowanie własne Elementy znajdujące się pomiędzy znacznikami <station> </station> należy interpretować jako treść opisu danego punktu pomiarowego oraz odpowiadające mu mierzone wielkości i ich wartości. Opis znaczników wykorzystywanych w GMAP station_info - jest to subelement względem station. Zawiera on nie związane z meteorologią informacje o danym punkcie pomiarowym takie jak: name nazwa punktu pomiarowego, zapis tekstowy, maintaner w wolnym tłumaczeniu 'zarządca', niekiedy oznacza region do kórego punkt przynależy, zapis tekstowy, longitude długość geograficzna wschodnia wielkość liczbowa, latitude szerokość geograficzna północna wielkość liczbowa. cameras subelement względem station, niesie informacje o nazwie kartoteki w której znajdują się aktualne obrazy kamerowe z danego punktu pomiarowego wyposażonego kamerę, zapis tekstowy, station_measurements subelement względem station. Zawiera 66

67 informacje meteorologiczne do których należą: krw kierunek wiatru, wielkość wyrażona w stopniach, liczona od kierunku północnego poruszając się zgodnie ze wskazówkami zegara, prw prędkość wiatru, wielkość wyrażona w metrach na sekundę, T_0 temperatura nawierzchni/temperatura powietrza na wysokości 0 cm mierzona w stopniach Celsjusza T_20 temperatua powietrza na wysokości 20 cm, mierzona w stopniach Celsjusza T_50 temperatua powietrza na wysokości 50 cm, mierzona w stopniach Celsjusza T_2 temperatua powietrza na wysokości 2 m, mierzona w stopniach Celsjusza Opad wartość pomiaru wysokości opadu atmosferycznego z okresu 10 minut podawana w mm Wilg wilgotność względna, podana w procentach Struktura oraz rodzaj danych zapisanych w dokumencie XML pozwalają użytkownikowi na prostą i jednoznaczną interpretację. Dodatkowe zapisy takie jak długość oraz szerokość geograficzna czynią z dokumentów solidną i wystarczającą podstawę do umieszczenia danych w nich zapisanych na mapie Google. Struktura dokumentów XML została zorganizowana w sposób przejrzysty i zgodny z zasadami ich tworzenia [por rozdział 4.3.1]. Sposób jej tworzenia opisany został w rozdziale

68 TWORZENIE DOKUMENTÓW XML PRZEZ SKRYPTY PHP PERSONALIZACJA I PARAMETRYZACJA Zaprojektowane na potrzeby systemu GMAP dokumenty XML generowane są w sposób dynamiczny za pośrednictwem języka PHP na podstawie danych pobranych z rzeczywistej bazy meteorologicznej [por rozdział 4.3.1]. Język PHP jest wykorzystywany tam, gdzie wymagana jest potrzeba tworzenia dokumentów z dynamicznie generowaną zawartością, w skład których wchodzą również te, których treść oparta jest na zawartości bazy danych. W systemie GMAP generowane dokumenty XML są konfigurowalne przez użytkownika. Posiada on możliwość wyboru lokalizacji i rodzajów pomiarów. Opis tego zagadnienia znajduje się w dalszej części pracy. Po określeniu parametrów wywołania skryptu uruchamiany jest mechanizm odpowiedzialny za pobieranie rekordów z bazy. Jest to realizowane poprzez wykorzystanie odpowiednich bibliotek i funkcji udostępnianych przez język PHP opisanych w niniejszym rozdziale. Personalizacja Użytkownik posiada możliwość edycji parametrów pracy systemu poprzez wybór zakresu lokalizacji (rejony) oraz pomiarów których użyje do swojej wizualizacji za pośrednictwem GMAP. Swoboda w powyższych kwestiach czyni GMAP uniwersalnym systemem przystosowanym do różnych zastosowań i wymagań użytkownika. Wybór zakresu rejonów oraz pomiarów sprowadza się do modyfikacji odpowiedniego skryptu PHP - getxml.php. Skrypt ten generuje dokumenty XML wymagane przez pozostałe komponenty GMAP. 68

69 Rejony Zaprojektowany system umożliwia użytkownikowi wybór zakresu stacji meteorologicznych przeznaczonych do wizualizacji. Sposób oraz szczegóły implementacyjne wizualizacji leżą w gestii użytkownika, ponieważ GMAP ma za zadanie jedynie dostarczyć narzędzia, które to zadanie umożliwią. Przyjęto, że najmniejszą jednostką, którą wykorzystuje silnik GMAP jest rejon. Wybór rejonu determinuje listę należących do niego stacji meteo i punktów kamerowych. Zatem decyzja mająca wpływ na końcową ilość i rozmieszczenie wizualizowanych obiektów podejmowana jest przez użytkownika na samym początku. Rejon utożsamiany jest w kontekście niniejszej pracy z jego zarządcą. Dla przykładu: rejon o nazwie g_krakow podlega pod zarządcę GDDKiA (Generalna Dyrekcja Dróg Krajowych i Autostrad) Kraków. Z kolei rejon krakow podlega zarządowi dróg miasta Kraków. Nic nie stoi na przeszkodzie, aby użytkownik wykorzystywał do swojej wizualizacji kilka, bądź kilkanaście rejonów jednocześnie, ma w tej kwestii pełną swobodę wyboru. Wybór rejonów przez użytkownika odbywa się za pośrednictwem zmodyfikowania ich listy. Pomiary Stacje meteo różnią się między sobą ilością i rodzajem zainstalowanych czujników pomiarowych. Można spotkać się ze stacjami mierzącymi wyłącznie kierunek oraz siłę wiatru, są również takie, które oprócz parametrów wiatrowych zbierają również dane o temperaturze, wilgotności oraz intensywności opadu. Z uwagi na różnorodność stacji meteo, GMAP udostępnia użytkownikowi możliwość wyboru rodzajów pomiarów przeznaczonych do wizualizacji. Wybór pewnego 69

70 zakresu pomiarów odnosi się do wszystkich stacji meteo przynależących do wybranych wcześniej przez użytkownika rejonów. Punkty kamerowe GMAP wyposażony jest w mechanizm sprawdzania, czy dana stacja meteorologiczna wyposażona jest w kamerę. Dodawanie informacji o punkcie kamerowym realizowane jest automatycznie na poziomie skryptu getxml.php. W tym miejscu systemu GMAP, użytkownik nie ma wpływu na umieszczanie, czy też nie informacji o punktach kamerowych. Parametryzacja W poprzedniej części niniejszego rozdziału opisany został sposób konfigurowania parametrów skryptu generującego dokumenty XML. Parametry te można podzielić na dwie grupy: parametry konfiguracyjne określające rejon(y) dla których generowane mają być dokumenty XML, parametry konfiguracyjne określające pomiary dla których generowane mają być dokumenty XML. Poniżej opisany jest sposób wykorzystania przez skrypt PHP obu grup parametrów. Implementacja w oparciu o parametry konfiguracyjne określające rejon(y) dla których generowane mają być dokumenty XML. Na listingu 6 przedstawiona jest implemenatcja mechanizmu związanego z obsługą zapytań do bazy danych, uwzględniająca parametry konfiguracyjne określające rejon(y), dla których generowany ma być dokument XML. 70

71 1 $dbase = new db(); 2 $dbase -> conn($host,$port,$user,$password,$dbname); 3 $result = $dbase -> performquery("select stacje.stid, stacja as nazwa_stacji, rejony.rejnazwa as zarzadca, dlugosc, szerokosc from stacje natural join rejony where rejonid in(3,11,15) order by stid ASC"); Listing 6. Połączenie z bazą danych i wybór rejonów w systemie GMAP MVT źródło: opracowanie własne Objaśnienia: Linia nr 1. - Tworzony jest obiekt $dbase, będący reprezentacją połączenia z bazą danych. Na potrzeby projektu GMAP została napisana specjalna klasa o nazwie db, która obsługuje połączenie z meteorologiczną bazą danych Linia nr 2. Ponadto możliwe jest wykonywanie zapytań do bazy danych za pomocą przynależnej jej metody o nazwie performquery() - linia nr 3. Klasa db posiada mechanizm sprawdzający czas wykonania się zapytania. W przypadku przekroczenia wartości krytycznej (30 sekund) zapytanie jest anulowane, a użytkownik otrzymuje o tym fakcie zwrotną informację. Pod zmienną $result podstawiony zostanie rezultat zapytania SQL zwróconego przez metodę performquery(). Jest nim tabela której format został przedstawiony w tabeli 8. Treścią zapytania jest tekst: select stacje.stid,stacja as nazwa_stacji,rejony.rejnazwa as zarzadca,dlugosc,szerokosc from stacje natural join rejony where rejid in(3,11,15) order by stacje.stid ASC" Z punktu widzenia użytkownika najważniejsze w powyższym zapytaniu są liczby 3,11,15 będące identyfikatorami rejonów zarządców do których przynależą stacje. 71

72 Proces przebiegu tego zapytania w systemie GMAP odbywa się w sposób przedstawiony na rysunku 17. Rysunek 17. Plan zapytania do bazy danych łączącego tabele stacje i rejony źródło: opracowanie własne Wydobycie z bazy danych listy stacji meteo, przynależących do rejonów o identyfikatorach 3,11,15 odbywa się na zasadzie łączenia ze sobą dwóch tabel: stacje oraz rejony. Kryterium łączenia jest występowanie w kolejnych wierszach tabeli stacje pola rejoinid o wartości będącej liczbą 3,11 lub 15.Łączenie tabel metodą natural join jest możliwe w przypadku występowania w obu łączonych ze sobą tabelach pola o tej samej nazwie i typie. W naszym przypadku tym polem jest rejid. Łączenie tabel stacje i rejony odbywa się przy użyciu specjalnych tabel haszujących (stąd krok Hash Join na planie zapytania). Tabele haszujące rezydują w pamięci i bardzo efektywnie skracają czas wykonywania zapytań dla przykładu zwrócenie 400 wierszy będących wynikiem złączenia tabel stacje i rejony zajęło łącznie 273ms. Ostatnim krokiem na planie zapytania jest posortowanie wyników w sposób rosnący ASC względem pola stid z tabeli stacje. Wykonanie się powyższego zapytania zwraca tabelę danych o formie przedstawionej w tabeli 8. 72

73 Tabela 8. Przedstawienie wyników zapytania do bazy danych łączącego tabele stacje i rejony źródło: opracowanie własne Widoczne jest w jaki sposób poszczególnym rejonom zarządcom przyporządkowane zostały odpowiadające im stacje meteo. Podsumowując, użytkownik korzystający z GMAP musi dysponować informacją o rejonach i odpowiadających im identyfikatorach rejid. Wiedza ta wystarcza do skonfigurowania GMAP pod kątem doboru zakresu przetwarzanych przez niego stacji meteorologicznych. Implementacja w oparciu o parametry konfiguracyjne określające pomiary dla których generowane mają być dokumenty XML System GMAP obsługuje następujące rodziny pomiarów: temperaturowe T_0, T_20, T_50, T_2 związane z wiatrem: krw, prw wilgotność: 73

74 wilg opad: opad Objaśnienia rodzajów pomiarów należących do poszczególnych rodzin znajdują się w rozdziale Użytkownik definiuje je na początku pliku getxml.php poprzez przypisanie do zmiennej $wykorzystywane_pomiary ich listy. Każdy rodzaj pomiaru oddzielany jest on sąsiedniego za pomocą przecinka. Przykład: $wykorzystywane_pomiary = T_0,T_2,krw,prw System GMAP odpowiada za to, żeby każdej stacji meteo należącej do wybranych przez użytkownika rejonów (Personalizacja) przyporządkowane zostały odpowiadające jej rodzaje pomiarów. W przypadku, jeśli pewna stacja meteo nie prowadzi jakiegoś z typów pomiaru, wówczas nie zostanie on w ogóle uwzględniony w generowanych dokumentach XML. Reasumując, od użytkownika GMAP wymaga się jedynie określenia listy rejonów oraz listy pomiarów. Stanowią one dane wejściowe dla skryptu getxml.php. Tworzenie dokumentów XML odbywa się w oparciu o dane pobierane z bazy danych i można je podzielić na kilka stadiów rysunek 18. Poszczególne stadia są od siebie uzależnione, dlatego więc dokumenty XML generowane są w ściśle określony sposób: Poniższe punkty dotyczą schematu generowania dokumentów XML stanowiąc jego opis. Następujące po sobie stadia oznaczone zostały na rysunku 18 liczbami znajdującymi się w szarych kółkach. Wstępem do pracy jest przygotowanie zakresu danych wejściowych (wybór rejonów, wybór pomiarów). Po tej operacji kolejno następują: 74

75 1. Przyporządkowanie stacji do rejonów wynik: stworzenie listy stid, zawiera ona zbiór informacji o przyporządkowanych stacjach, 2. Przyporządkowanie poszczególnym stacjom meteorologicznym na liście stid przesłanych przez nie najnowszych nie starszych niż 10 minut pakietów, wynik: lista stid z powiązanymi identyfikatorami pakietów pktid 3. Wyodrębnienie zdefiniowanych przez użytkownika pomiarów wynik: lista stid z powiązanymi identyfikatorami pakietów pktid z uwzględnieniem wybranych przez użytkownika pomiarów 4. Dodanie do struktury opisanej w pkt. 3 informacji związanej z rodzajami wielkości reprezentowanymi przez pomiary wynik:lista stid z powiązanymi identyfikatorami pakietów pktid z uwzględnieniem wybranych przez użytkownika pomiarów. Pomiary mają nadane im wielkości. 5. Uzupełnienie struktury informacją o występowaniu punktu kamerowego przypisanego do danej stacji meteo. Wynik: komplet informacji potrzebnej do generowania dokumentów XML 6. Generowanie dokumentów XML. 75

76 Rysunek 18. Schemat generowania dokumentów XML w systemie GMAP MVT źródło: opracowanie własne W wyniku wykorzystania na potrzeby GMAP języka PHP jako interfejsu do łączenia się z bazą danych oraz wykonywania na niej zapytań uwzględniających konfigurację określoną przez użytkownika otrzymano poprawne i w pełni wartościowe dokumenty XML. 5.3 W KIERUNKU JAVASCRIPT W POŁĄCZENIU Z AJAX Wygenerowanie dokumentów w formacie XML zawierających dane dotyczące stacji meteorologicznych (rozdział 5.2) stanowi punkt wyjścia dla podsystemu 76

77 należącego do GMAP, który zajmuje się ich konwersją do zmiennych języka JavaScript. JavaScript jest jedynym językiem programowania, który może zostać wykorzystany do wizualizacji obiektów na mapie Google. Pracę tego podsystemu można podzielić na dwa etapy: 1. pobranie zawartości dokumentu XML, zaimplementowane jest ono z wykorzystaniem technologii AJAX, 2. przetworzenie pobranej zawartości za pośrednictwem autorskiego zestawu narzędzi JavaScirpt Etap nr 1. obejmuje obsługę żądania pobrania dokumentu XML z serwera, następnie importuje go, Etap nr 2. obejmuje wykonanie konwersji wejściowego pobranego przy wykorzystaniu technologii AJAX dokumentu XML do zmiennych języka JavaScript IMPORT XML Pobieranie zawartości utworzonych przez system GMAP dokumentów w formacie XML odbywa się na poziomie języka JavaScript za pośrednictwem funkcji loadxmldocument(url). Przyjmuje ona jeden argument, jest nim tekst w formacie URL1. Funkcja ta została zaprojektowana w sposób który umożliwia identyfikację przeglądarki z której korzysta użytkownik i stworzenie odpowiadającego jej obiektu AJAX. Obiekt ten nosi w systemie GMAP nazwę xmlreguestobject i jest odpowiedzialny za pobranie dokumentu XML z lokalizacji wskazywanej przez url. Opisywana funkcja loadxmldocument(url) ma za zadanie przekonwertować pobrany dokument XML do postaci zmiennej JavaScript, będącej jego nieprzetworzoną reprezentacją. 1 URL - (ang. Uniform Resource Locator) - ujednolicony format zasobów. Służy między innymi do identyfikowania zasobów dostępnych w internecie. 77

78 Przykładowe użycie funkcji loadxmldocument(url) może mieć postać: sposób nr 1. loadxmldocument(" Wywołanie powyższej linii kodu spowoduje, że system GMAP podejmie próbę połączenia się z adresem internetowym celem pobrania statycznego dokumentu o nazwie xmldoc.xml. Innym sposobem wywołania opisywanej funkcji jest: sposób nr 2. loadxmldocument(" Przedstawia odmienne podejście w kontekście przechowywania dokumentu XML na serwerze. W odróżnieniu od sposobu nr 1. który zakładał załadowanie statycznego dokumentu, sposób nr 2. obrazuje możliwość pobrania dokumentu XML wygenerowanego w sposób dynamiczny przy użyciu skryptu PHP o nazwie php_xmldoc_generator.php. System GMAP obsługuje obydwa wyżej wymienione sposoby pozyskiwania dokumentów XML. W momencie udanego nawiązania połączenia z serwerem z którego ma zostać pobrany wyznaczony dokument XML, system GMAP rozpoczyna jego pobieranie za pomocą procedur zaimplementowanych przez AJAX. W międzyczasie monitorowany jest postęp tego zadania. Rozróżniane są 3 stany oparte o właściwość obiektu AJAX xmlreguestobject reprezentującego połączenie nawiązane w celu pobrania dokumentu XML. Określają one postęp w imporcie dokumentu: data loading : oznacza on udaną inicjalizację, data partially (available) : oznacza on, że część dokumentu XML została już poprawnie zaimportowana, 78

79 data ready : oznacza on, że dokument w całości został poprawnie zaimportowany i jest gotowy do wykorzystania. Umieszczenie na stronie WWW użytkownika systemu GMAP pól stanu importu dokumentów XML jest dostępne przy użyciu funkcji JavaScript o nazwie showprogresscells(dom_object). Przyjmuje ona jako argument obiekt typu DOM, przy założeniu że może on zawierać w sobie znacznik języka HTML <div> PRZETWARZANIE XML Po poprawnym pobraniu dokumentu, informacja o tym fakcie wraz z nieprzetworzonym dokumentem XML przekazywana jest do funkcji JavaScript należących do autorskiego zestawu narzędzi. Bazuje on na wykorzystaniu nieprzetworzonego dokumentu XML znajdującego się w postaci zmiennej JavaScript. Proces przetwarzania opiera się na rozbiciu całości dokumentu na mniejsze jednostki. Każda z jednostek opisuje jedną stację meteorologiczną i zawiera specyficzne dla niej informacje (położenie geograficzne, nazwa, rejon/zarządca) oraz dane meteorologiczne. Funkcją należącą do autorskiego zestawu narzędzi JavaScript która realizuje dekompozycję dokumentu XML do mniejszych jednostek jest processxmltogm(js_xml_document). Przyjmuje ona jeden argument wejściowy, jest nim nieprzetworzony dokument XML - js_xml_document. Funkcja ta stanowi punkt połączenia pomiędzy systemem GMAP a aplikacją użytkownika, który otrzymuje możliwość wizualizacji na mapie Google punktów będącymi odzwierciedleniem stacji meteorologicznych. Istotę działania oraz domyślny format zapisu jednostek wytwarzanych przez funkcję 79

80 processxmltogm() przedstawia rysunek 19. Rysunek 19. Konwersja dokumentu XML przez system GMAP MVT do zmiennych JavaScript źródło: opracowanie własne Objaśnienia: Niebieskie strzałki zwrócone są w kierunku jednostek powstałych na bazie danych pochodzących z tabel informacyjnych meteorologicznej bazy danych, czerwone dane meteorologiczne. Opis elementów można znaleźć również w rozdziale _name_element : zapisane są w niej informacje o nazwie stacji meteorologicznej, _maintainer_element : zapisane są w niej informacje o rejonie/zarządcy stacji meteorologicznej, _longitude_element : zawiera liczbę będącą wartością długości geograficznej stacji meteorologicznej, _latitude_element : zawiera liczbę będącą wartością szerokości geograficznej stacji meteorologicznej, var_camdir : przechowywuje informację o przynależności do stacji punktu kamerowego, 80

81 var_station_measurements : przechowuje listę złożoną z rodzajów pomiarów i odpowiadających im wartości. Format listy jest następujący: rodzaj_pomiaru_1:wartość_1,rodzaj_pomiaru_2:wartość_2,... przykład: T_20:15.7,opad:2,krw:234.1,prw:1.8 Znaki dwukropka : oddzielają rodzaj pomiaru od jego wartości, przecinki, dzielą następujące po sobie pary rodzaj_pomiaru:wartość. Każdy zestaw jednostek:_name_element, _maintainer_element, _longitude_element, _latitude_element, var_camdir, var_station_measurements stanowi opis pojedynczej stacji meteorologicznej. System GMAP umożliwia użytkownikowi ingerencję w nazewnictwo jednostek oraz format listy rodzajów pomiarów i odpowiadających im wartości. Odbywa się to poprzez przedefiniowanie ciała funkcji processxmltogm(). Zmiana nazw zmiennych polega na zastąpieniu w kodzie funkcji starych (domyślnych) na nowe. Zmiana formatu listy ogranicza się do skorygowania separatorów ; oraz,. Nie zaleca się zmiany rodzaju pomiaru, gdyż niesie on ze sobą informację o wykorzystywanym przez daną stację meteorologiczną rodzaju czujnika. Podsumowując, dzięki wykorzystaniu technologii AJAX do pobierania dokumentów XML oraz stworzonemu autorskiemu zestawowi narzędzi, który przetwarza je do postaci jednostkowych użytkownik GMAP otrzymuje dane w formie która umożliwia umieszczenie ich na mapie Google. Sposób implementacji aplikacji użytkownika ma wpływ na końcowy efekt przeprowadzanej wizualizacji, gdyż zarówno GMAP jak i Google Maps API są konfigurowywalne. 81

82 5.4 PREZENTACJA DZIAŁANIA SYSTEMU GMAP MVT System GMAP MVT jest zbiorem narzędzi służących do wizualizacji wielkości meteorologicznych opartym na Google Maps, Ajax oraz PHP. We wcześniejszych rozdziałach opisane zostały zasady według kórych funkcjonuje GMAP oraz narzędzia programistyczne umożliwiające współpracę użytkownika z systemem. Ostatnim i docelowym komponentem systemu GMAP jest warstwa prezentacji oparta o wizualizację działania systemu na mapie Google. Wizualizacja została zaimplementowana przy wykorzystaniu interfejsu Google Maps API. Do jej obsługi zaprojektowane zintegrowane z GMAP funkcje JavaScript, stanowiące szablon wizualizacyjny dla użytkowników systemu. Każda z opisywanych w niniejszym rodziale funkcji wykorzystujących API Google może być modyfikowana i dostosowywana do potrzeb i wymagań użytkownika. Stacje meteorologiczne symbolizowane są na mapie za pomocą markerów. Po kliknięciu na marker otwiera się okienko informacyjne zawierające dane dotyczące stacji. Warstwa prezentacji GMAP wykorzystuje do wizualizacji dane przechowywane w zmiennych języka JavaScipt. Sposób ich uzyskania opisany jest w rozdziale Mechanizm wizualizacji w systemie GMAP wykorzystujący Google Maps API można podzielić na następujące etapy: 1. Utworzenie mapy Google i umieszczenie jej na stronie WWW, 2. stworzenie specjalnego obiektu Google Maps API o typie GMarkerManager, będącego zarządcą umieszczanych na mapie danych, 3. przygotowanie i utworzenie markerów, 4. wyświetlenie markerów. Szczegółowy opis każdego z etapów znajduje się w dalszej części pracy. 82

83 1. Utworzenie mapy Google i umieszczenie jej na stronie WWW. Mapa Google umieszczona jest wewnątrz znacznika <div>1 dokumentu HTML. Wymaganym jest zdefiniowanie atrybutu id będącym jego unikalnym identyfikatorem w obrębie dokumentu oraz wymiarów tego znacznika tj. jego szerokości oraz wysokości podawanej w pikselach bądź procentowo w odniesieniu do rozdzielczości ekranu. Tworzona mapa ma wielkość taką samą jak znacznik <div> w której się znajduje. Wykorzystana do przeprowadzenia prezentacji systemu mapa ma wymiary: szerokość: 80% rozdzielczości poziomej ekranu, wysokość: 550 pikseli. Są to wartości dobrane w sposób umożliwiający wygodne korzystanie z mapy w najpopularniejszym zakresie rozdzielczości ekranu podanej w pikselach: 800x600, 1024x768 oraz 1280x1024. Mapę Google umieszczona została w dokumencie HTML w następujący sposób: stworzony został znacznik <div> będący kontenerem dla mapy (język HTML): <div id="map_div" style="width: 80%; height: 550px; > </div> do utworzonego znacznika dodany został obiekt mapy (język JavaScript, Google Maps API): map = new Gmap2(document.getElementById("map_div")); 2. Stworzenie specjalnego obiektu Google Maps API o typie GMarkerManager, będącego zarządcą umieszczanych na mapie danych. Obiekt typu GmarkerManager służy do umieszczania w nim zbioru zbioru markerów. Sposób w jaki jest on tworzony został opisany w rozdziale 4.6. W GMAP obiekt GmarkerManager występuje on pod nazwą markermanager. 1 <div> - znacznik oferujący ogólny mechanizm dodawania struktury do dokumentów, grupuje inne znaczniki. [15] 83

84 3. Przygotowanie i utworzenie markerów. Przyjęto, że każdy marker odzwierciedla na mapie Google dokładnie jedną stację meteorologiczną. Marker składa się z ikony oraz okienka informacyjnego. Rola okienka informacyjnego polega na wyświetleniu dodatkowych treści w oknie mapy. Odbywa się to poprzez kliknięcie lewym przyciskiem myszy na ikonę markera znajdujacego się na mapie. W kontekście konfiguracji pojedyńczego markera system GMAP umożliwia użytkownikowi: 1. Utworzenie markera. Za tworzenie markera w systemie GMAP odpowiedzialna jest funkcja createtabbedmarker(coords,icon,t1t,t1c,t2t,2tc,caminfo) Zwraca ona do systemu GMAP obiekt typu GMarker reprezentujący pojedyńczą stację meteorologiczną. Wywoływana jest ona z następującymi argumentami: coords : współrzędne geograficzne w postaci obiektu typu GLatLng więcej informacji na jego temat można znaleźć w rozdziale 4.6. icon : obiekt typu GIcon, zawierający parametry ikony symbolizującej tworzony marker. Ikona musi być wcześniej utworzona za pomocą funkcji seticonappearance() opisanej w dalszej części pracy. t1t : tytuł zakładki nr. 1 w okienku informacyjnym, t1c : treść zawartości okienka informacyjnego nr 1. t2t : tytuł zakładki nr. 2 w okienku informacyjnym, t2c : treść zawartości okienka informacyjnego nr 2. caminfo : informacja o tym, czy stacja meteorologiczna wyposażona jest w punkt kamerowy. 84

85 2. Utworzenie ikony. Do utworzenia i zmiany wyglądu ikony w systemie GMAP służy funkcja o nazwie: seticonappearance(imageurl, width, height, anchorx, anchory) Zwraca ona do systemu GMAP obiekt typu GIcon będący reprezentacją ikony. Wywoływana jest ona z argumentami imageurl : adres zasobu URL opisujący ścieżkę dostępu do pliku obrazu ikony. width : szerokość obrazu ikony, podawana w pikselach height : wysokość obrazu ikony, podawana w pikselach anchorx : zakotwiczenie ikony na mapie w poziomie, licząc od jej górnego lewego rogu anchory : zakotwiczenie ikony w pionie na mapie, licząc od jej lewego górnego rogu 3. Zdefiniowanie zawartości okienka informacyjnego. GMAP jest zestawem narzędzi dedykowanym do wizualizacji zjawisk meteorologicznych, zatem na zawartość okienka informacyjnego składają się dane pobrane z meteorologicznej bazy danych, uprzednio odpowiednio przetworzone. Sposób tworzenia tych danych oraz ich reprezentacja zostały szczegółowo opisane w rozdziale Zawartość okienka informacyjnego definiowana jest we wspomnianej wcześniej funkcji tworzącej marker : createtabbedmarker(). Funkcja ta jest zaprojektowana w sposób pozwalający na intuicyjne wpływanie na wygląd i zawartość okienka informacyjnego, wymaga ono zgodności treści w nim umieszczanych z językiem HTML. 85

86 Wywołanie funkcji createtabbedmarker(): createtabbedmarker( new GlatLng(_longitude_element,_latitude_element), 'info', _name_element, 'pomiary', var_station_measurements, var_camdir) Za odpowiednie argumenty funkcji podstawione zostają dane odpowiadające jednej stacji meteorologicznej. Ich format oraz znaczenia wyjaśnione są w rozdziale Zakładki okienka informacyjnego przyjęły nazwy odpowiednio info oraz pomiary. Treścią zakładki info jest nazwa stacji, natomiast treścią zakładki pomiary jest lista przejrzyście sformatowanych przez funkcję rodzajów pomiarów i ich wartości. Umieszczona jest również informacja o punkcie kamerowym. Przykładowy wygląd okienka informacyjnego przedstawiony został na rysunku 20. Rysunek 20. Przykładowy wygląd okienka informacyjnego na przykładzie stacji meteorologicznej Dobrodzień źródło: opracowanie własne 86

87 Kliknięcie myszką na napis obraz kamerowy powoduje otwarcie się w nowym oknie witryny WWW zawierającej obraz zarejestrowany w punkcie kamerowym stacji Dobrodzień rysunek 21. Rysunek 21. Obraz kamerowy, punkt kamerowy Dobrodzień źródło: opracowanie własne 4. Wyświetlenie markerów. Wyświetlanie markerów realizowane jest przy pomocy obiektu typu GMarkerManager. Kolejne markery dodawane są do obiektu markermanager za pomocą metody addmarker. markermanager.addmarker(marker); Po dodaniu ostatniego markera, są one wyświetlane na mapie Google: markermanager.refresh(); 87

88 System GMAP umożliwia wizualizację bardzo dużej ilości markerków na jednej mapie. Fakt ten czyni go skalowalnym, dając tym samym szerokie możliwości rozwoju [10]. Na rysunku 22 przedstawiona została wizualizacja 256 stacji meteorologicznych należących do systemu fiirmy Trax Elektronik. Rysunek 22. Wizualizacja systemu stacji meteorologicznych przy użyciu systemu GMAP MVT źródło: opracowanie własne 88

Bazy danych i strony WWW

Bazy danych i strony WWW Bazy danych i strony WWW Obsługa baz danych poprzez strony WWW Niezbędne narzędzia: serwer baz danych np. MySQL serwer stron WWW np. Apache przeglądarka stron WWW interpretująca język HTML język skryptowy

Bardziej szczegółowo

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 SGML (Standard Generalized Markup Language) Standardowy uogólniony język znaczników służący do ujednolicania struktury i formatu różnego typu informacji (danych). Twórcy

Bardziej szczegółowo

29. Poprawność składniowa i strukturalna dokumentu XML

29. Poprawność składniowa i strukturalna dokumentu XML 29. i strukturalna dokumentu XML 13 października 2015 1 2 Poprawny składniowo dokument XML powinien być tworzony zgodnie z poniżej przedstawionymi zasadami. Deklaracja XML Powinien zawierać deklarację

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Podstawowe definicje Baza danych to uporządkowany zbiór danych umożliwiający łatwe przeszukiwanie i aktualizację. System zarządzania bazą danych (DBMS) to oprogramowanie

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych rk Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych pojęć, prawdopodobnie zastanawiasz się, kiedy zaczniesz

Bardziej szczegółowo

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Dotacje na innowacje. Inwestujemy w waszą przyszłość. PROJEKT TECHNICZNY Implementacja Systemu B2B w firmie Lancelot i w przedsiębiorstwach partnerskich Przygotowane dla: Przygotowane przez: Lancelot Marek Cieśla Grzegorz Witkowski Constant Improvement Szkolenia

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Wprowadzenie do technologii XML

Wprowadzenie do technologii XML Katedra Mikroelektroniki i Technik Informatycznych Łódź, 6 października 2005 roku 1 Informacje organizacyjne Omówienie przedmiotu 2 vs HTML Struktura 3 Struktura Informacje o przedmiocie Informacje organizacyjne

Bardziej szczegółowo

2017/2018 WGGiOS AGH. LibreOffice Base

2017/2018 WGGiOS AGH. LibreOffice Base 1. Baza danych LibreOffice Base Jest to zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego programu komputerowego,

Bardziej szczegółowo

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI asix Aktualizacja pakietu asix 4 do wersji 5 lub 6 Pomoc techniczna Dok. Nr PLP0016 Wersja:08-12-2010 ASKOM i asix to zastrzeżony znak firmy ASKOM Sp. z o. o.,

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych

Bardziej szczegółowo

Wykład I. Wprowadzenie do baz danych

Wykład I. Wprowadzenie do baz danych Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

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

Baza danych. Baza danych to:

Baza danych. Baza danych to: Baza danych Baza danych to: zbiór danych o określonej strukturze, zapisany na zewnętrznym nośniku (najczęściej dysku twardym komputera), mogący zaspokoić potrzeby wielu użytkowników korzystających z niego

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ Systemy baz danych 1. 2 Wstęp do baz danych 2. 2 Relacyjny model baz danych. 3. 2 Normalizacja baz danych. 4. 2 Cechy

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

Model semistrukturalny

Model semistrukturalny Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności, wielokrotne zagnieżdżania zobrazowane przez grafy skierowane model samoopisujący się wielkości i typy

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

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

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

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

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl Plan wykładu Wprowadzenie: historia rozwoju technik znakowania tekstu Motywacje dla prac nad XML-em Podstawowe koncepcje XML-a XML jako metajęzyk

Bardziej szczegółowo

Tomasz Grześ. Systemy zarządzania treścią

Tomasz Grześ. Systemy zarządzania treścią Tomasz Grześ Systemy zarządzania treścią Co to jest CMS? CMS (ang. Content Management System System Zarządzania Treścią) CMS definicje TREŚĆ Dowolny rodzaj informacji cyfrowej. Może to być np. tekst, obraz,

Bardziej szczegółowo

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)

Bardziej szczegółowo

Instrukcja obsługi narzędzia API

Instrukcja obsługi narzędzia API Instrukcja obsługi narzędzia API 2012 1. Podstawowe informacje Aby umożliwić maksymalną integrację systemów i stron partnerów z naszym systemem, stworzyliśmy specjalne API, które umożliwia generowanie

Bardziej szczegółowo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych

Bardziej szczegółowo

egroupware czy phpgroupware jest też mniej stabilny.

egroupware czy phpgroupware jest też mniej stabilny. Opengroupware to projekt udostępniający kompletny serwer aplikacji oparty na systemie Linux. Dostępny na licencji GNU GPL, strona domowa: http://www.opengroupware.org/ Jego cechy to wysoka stabilność,

Bardziej szczegółowo

OfficeObjects e-forms

OfficeObjects e-forms OfficeObjects e-forms Rodan Development Sp. z o.o. 02-820 Warszawa, ul. Wyczółki 89, tel.: (+48-22) 643 92 08, fax: (+48-22) 643 92 10, http://www.rodan.pl Spis treści Wstęp... 3 Łatwość tworzenia i publikacji

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

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

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 011/01 Nr programu: 31[01]/T,SP/MENIS/004.06.14 Okres kształcenia: łącznie ok. 180 godz. lekcyjne Wojciech Borzyszkowski Zenon Kreft Moduł Bok wprowadzający Podstawy

Bardziej szczegółowo

WPROWADZENIE DO BAZ DANYCH

WPROWADZENIE DO BAZ DANYCH WPROWADZENIE DO BAZ DANYCH Pojęcie danych i baz danych Dane to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp. Baza danych (data base) to uporządkowany zbiór danych z

Bardziej szczegółowo

TRX API opis funkcji interfejsu

TRX API opis funkcji interfejsu TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC TRX API opis funkcji interfejsu Kwiecień 2013 Copyright TRX TRX ul. Garibaldiego 4 04-078 Warszawa Tel. 22 871 33 33 Fax 22 871 57 30 www.trx.com.pl

Bardziej szczegółowo

NARZĘDZIA WIZUALIZACJI

NARZĘDZIA WIZUALIZACJI Kurs interaktywnej komunikacji wizualnej NARZĘDZIA WIZUALIZACJI Andrzej Łachwa andrzej.lachwa@uj.edu.pl 3 4/8 Zobacz film: http://www.ted.com/talks/david_mccandless_the_beauty_of_dat a_visualization.html

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy dwie Encje (tabele) prawym

Bardziej szczegółowo

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 013/01 Nr programu: 31[01]/T,SP/MENIS/00.06.1 Okres kształcenia: łącznie ok. 170 godz. lekcyjne Moduł Bok wprowadzający 1. Zapoznanie z programem nauczania i

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Systemy baz danych. mgr inż. Sylwia Glińska

Systemy baz danych. mgr inż. Sylwia Glińska Systemy baz danych Wykład 1 mgr inż. Sylwia Glińska Baza danych Baza danych to uporządkowany zbiór danych z określonej dziedziny tematycznej, zorganizowany w sposób ułatwiający do nich dostęp. System zarządzania

Bardziej szczegółowo

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki Tomasz Pawłowski Nr albumu: 146956 Praca magisterska na kierunku

Bardziej szczegółowo

Projektowanie baz danych za pomocą narzędzi CASE

Projektowanie baz danych za pomocą narzędzi CASE Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software

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

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką Autor: Paweł Konieczny Promotor: dr Jadwigi Bakonyi Kategorie: aplikacja www Słowa kluczowe: Serwis

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

Projektowani Systemów Inf.

Projektowani Systemów Inf. Projektowani Systemów Inf. Wykład VII Bezpieczeństwo Copyrights by Arkadiusz Rzucidło 1 Bezpieczeństwo Bezpieczeństwo związane z danymi Konstrukcja magazynów danych Mechanizmy zapisu i modyfikacji danych

Bardziej szczegółowo

Dziennik Urzędowy Unii Europejskiej L 274/9

Dziennik Urzędowy Unii Europejskiej L 274/9 20.10.2009 Dziennik Urzędowy Unii Europejskiej L 274/9 ROZPORZĄDZENIE KOMISJI (WE) NR 976/2009 z dnia 19 października 2009 r. w sprawie wykonania dyrektywy 2007/2/WE Parlamentu Europejskiego i Rady w zakresie

Bardziej szczegółowo

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bardziej szczegółowo

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym konceptualnym modelem danych jest tzw. model związków encji (ERM

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane Extensible Markup Language (XML) Wrocław, 15.03.2019 - Java - technologie zaawansowane Wprowadzenie XML jest językiem znaczników (ang. markup language) używanym do definiowania zbioru zasad rozmieszczenia

Bardziej szczegółowo

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop. 2017 Spis treści O autorach 11 Wprowadzenie 13 CZĘŚĆ I ROZPOCZĘCIE PRACY Lekcja 1. Co oznacza publikowanie treści w sieci

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja elektronicznego dziennika ocen ucznia Autor: Grzegorz Dudek wykonanego w technologii ASP.NET We współczesnym modelu edukacji, coraz powszechniejsze

Bardziej szczegółowo

Komunikacja i wymiana danych

Komunikacja i wymiana danych Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX

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

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

MySQL. Darmowa baza danych. Æwiczenia praktyczne

MySQL. Darmowa baza danych. Æwiczenia praktyczne IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE ONOWOœCIACH ZAMÓW CENNIK CZYTELNIA SPIS TREœCI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY

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

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer

Bardziej szczegółowo

Tom 6 Opis oprogramowania

Tom 6 Opis oprogramowania Część 4 Narzędzie do wyliczania wielkości oraz wartości parametrów stanu Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 30 maja 2012 Historia dokumentu Nazwa

Bardziej szczegółowo

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 21 maja 2012 Historia dokumentu

Bardziej szczegółowo

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37 Spis treści Wstęp 13 CZĘŚĆ I JĘZYK SIECI 17 Rozdział 1 Wprowadzenie do HTML5 19 Tworzenie przy pomocy znaczników: przegląd 20.Wprowadzanie nowych elementów HTML5 21 Korzystanie z kontynuowanych znaczników

Bardziej szczegółowo

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

Bardziej szczegółowo

Wykład 2. Relacyjny model danych

Wykład 2. Relacyjny model danych Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających

Bardziej szczegółowo

2 Podstawy tworzenia stron internetowych

2 Podstawy tworzenia stron internetowych 2 Podstawy tworzenia stron internetowych 2.1. HTML5 i struktura dokumentu Podstawą działania wszystkich stron internetowych jest język HTML (Hypertext Markup Language) hipertekstowy język znaczników. Dokument

Bardziej szczegółowo

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI Bazy danych Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI Wszechnica Poranna Trzy tematy: 1. Bazy danych - jak je ugryźć? 2. Język SQL podstawy zapytań. 3. Mechanizmy wewnętrzne baz danych czyli co

Bardziej szczegółowo

Rola języka XML narzędziem

Rola języka XML narzędziem Wprowadzenie do XML dr inż. Adam Iwaniak Szkolenie w Luboradzy, ZCPWZ, 12-13.02.2009r. Rola języka XML narzędziem Pierwszą rewolucją internetową było dostarczenie ludziom informacji. Znajdujemy się teraz

Bardziej szczegółowo

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38 Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem zajęcia 1 dr Jakub Boratyński pok. A38 Program zajęć Bazy danych jako podstawowy element systemów informatycznych wykorzystywanych

Bardziej szczegółowo

Programowanie internetowe

Programowanie internetowe Programowanie internetowe Wykład 1 HTML mgr inż. Michał Wojtera email: mwojtera@dmcs.pl Plan wykładu Organizacja zajęć Zakres przedmiotu Literatura Zawartość wykładu Wprowadzenie AMP / LAMP Podstawy HTML

Bardziej szczegółowo

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Systemy baz danych w zarządzaniu przedsiębiorstwem W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Proces zarządzania danymi Zarządzanie danymi obejmuje czynności: gromadzenie

Bardziej szczegółowo

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu Polska Organizacja Turystyczna ul. Chałubińskiego 8 00-613 Warszawa Spis treści 1 Założenia wstępne... 1 1.1 Informacje wstępne... 1 1.2 Cel projektu...

Bardziej szczegółowo

Alicja Marszałek Różne rodzaje baz danych

Alicja Marszałek Różne rodzaje baz danych Alicja Marszałek Różne rodzaje baz danych Rodzaje baz danych Bazy danych można podzielić wg struktur organizacji danych, których używają. Można podzielić je na: Bazy proste Bazy złożone Bazy proste Bazy

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /

Bardziej szczegółowo

Hot Potatoes. Zdania z lukami Przyporządkowanie. Tworzy spis wszystkich zadań. Krzyżówki

Hot Potatoes. Zdania z lukami Przyporządkowanie. Tworzy spis wszystkich zadań. Krzyżówki Hot Potatoes Zdania z lukami Przyporządkowanie Tworzy spis wszystkich zadań Quizy Krzyżówki Rozsypanki Pakiet Hot Potatoes jest zestawem sześciu narzędzi, kreatorów testów, stworzonym przez Zespół Badawczo-

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

Umieszczanie kodu. kod skryptu

Umieszczanie kodu. kod skryptu PHP Definicja PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona

Bardziej szczegółowo

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk PROGRAM PRAKTYKI ZAWODOWEJ Technikum Zawód: technik informatyk 351203 Lp. Temat 1 Zajęcia wprowadzające. Zapoznanie z zakładem, regulaminem pracy, przepisami BHP oraz instruktaż bhp. 2 Montaż i eksploatacja

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy

Bardziej szczegółowo

Kurs MATURA Z INFORMATYKI

Kurs MATURA Z INFORMATYKI Kurs MATURA Z INFORMATYKI Cena szkolenia Cena szkolenia wynosi 90 zł za 60 min. Ilość godzin szkolenia jest zależna od postępów w nauce uczestnika kursu oraz ilości czasu, którą będzie potrzebował do realizacji

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych dr inż. Adam Iwaniak Infrastruktura Danych Przestrzennych w Polsce i Europie Seminarium, AR Wrocław

Bardziej szczegółowo

Część I Rozpoczęcie pracy z usługami Reporting Services

Część I Rozpoczęcie pracy z usługami Reporting Services Spis treści Podziękowania... xi Wprowadzenie... xiii Część I Rozpoczęcie pracy z usługami Reporting Services 1 Wprowadzenie do usług Reporting Services... 3 Platforma raportowania... 3 Cykl życia raportu...

Bardziej szczegółowo

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL Podstawy baz danych: Rysunek 1. Tradycyjne systemy danych 1- Obsługa wejścia 2- Przechowywanie danych 3- Funkcje użytkowe 4- Obsługa wyjścia Ewolucja baz danych: Fragment świata rzeczywistego System przetwarzania

Bardziej szczegółowo

Kielce, dn. 28.07.2014 MICRON Sp. z o.o. Ul. Silniczna 15/1 25 515 Kielce ZAPYTANIE OFERTOWE NR 1/2014/PARP/POIG

Kielce, dn. 28.07.2014 MICRON Sp. z o.o. Ul. Silniczna 15/1 25 515 Kielce ZAPYTANIE OFERTOWE NR 1/2014/PARP/POIG Kielce, dn. 28.07.2014 MICRON Sp. z o.o. Ul. Silniczna 15/1 25 515 Kielce ZAPYTANIE OFERTOWE NR 1/2014/PARP/POIG W związku z realizacją projektu Wdrożenie internetowego systemu klasy B2B automatyzującego

Bardziej szczegółowo

System zarządzający grami programistycznymi Meridius

System zarządzający grami programistycznymi Meridius System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych

Bardziej szczegółowo

Programowanie Komponentowe WebAPI

Programowanie Komponentowe WebAPI Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,

Bardziej szczegółowo

Podstawowe zagadnienia z zakresu baz danych

Podstawowe zagadnienia z zakresu baz danych Podstawowe zagadnienia z zakresu baz danych Jednym z najważniejszych współczesnych zastosowań komputerów we wszelkich dziedzinach życia jest gromadzenie, wyszukiwanie i udostępnianie informacji. Specjalizowane

Bardziej szczegółowo

Wprowadzenie do baz danych

Wprowadzenie do baz danych Wprowadzenie do baz danych Bazy danych stanowią obecnie jedno z ważniejszych zastosowań komputerów. Podstawowe zalety komputerowej bazy to przede wszystkim szybkość przetwarzania danych, ilość dostępnych

Bardziej szczegółowo