reklama - zainteresowany?

HTML5. Podręcznik programisty - Helion

HTML5. Podręcznik programisty
ebook
Autor: Chuck Hudson, Tom Leadbetter
Tytuł oryginału: HTML5 Developer's Cookbook
TÅ‚umaczenie: Grzegorz Balcerek
ISBN: 978-83-246-6956-1
stron: 384, Format: ebook
Data wydania: 2013-03-29
Księgarnia: Helion

Cena książki: 50,25 zł (poprzednio: 67,00 zł)
Oszczędzasz: 25% (-16,75 zł)

Dodaj do koszyka HTML5. Podręcznik programisty

Tagi: HTML i XHTML - Programowanie

Najlepsze przepisy na udane aplikacje internetowe!

HTML5 pozwala twórcom stron internetowych tworzyć oparte o standardy sieciowe, działające w przeglądarkach, niezwykle bogate aplikacje o dużych możliwościach. Aplikacje te są zaopatrzone w najróżniejsze funkcjonalności - od przeciągania i upuszczania do natywnego dźwięku i wideo - i wszystko to oferują bez żadnych dodatkowych wtyczek. Krótko mówiąc, każdy twórca stron internetowych musi opanować HTML5, a im szybciej to zrobi, tym większą będzie miał przewagę. "HTML5. Podręcznik programisty" zawiera rady ekspertów i sprawdzony kod, potrzebne do tego, by od razu rozpocząć budowę wysokiej jakości aplikacji HTML5.

Autorzy tej książki, Chuck Hudson i Tom Leadbetter, prezentują przetestowane, modularne przepisy na poziomach dla początkujących, średnio zaawansowanych i zaawansowanych. Dowiesz się konkretnie, jak zapewniać nowoczesne zachowania aplikacji poprzez integrację nowych i ulepszonych elementów HTML5 z CSS3, multimediami i API języka JavaScript. Zgodnie z obecnymi standardami książka skupia się w pierwszym rzędzie na funkcjach HTML5 obsługiwanych w przeglądarkach oraz określa dla nich poziom wsparcia.

Tematyka książki obejmuje:

  • zrozumienie i stosowanie nowych strukturalnych elementów HTML5
  • wykorzystanie grupowania, poziomu tekstu i zmienionej semantyki
  • zarzÄ…dzanie obsÅ‚ugÄ… HTML5 w przeglÄ…darkach
  • używanie nowych technik dotyczÄ…cych ukÅ‚adu i stylizacji w CSS3
  • maksymalizacjÄ™ interaktywnoÅ›ci za pomocÄ… formularzy internetowych HTML5
  • osadzanie przy użyciu HTML5 dźwiÄ™ku i wideo
  • rysowanie na elemencie canvas
  • sterowanie historiÄ… przeglÄ…darki
  • integrowanie informacji o poÅ‚ożeniu za pomocÄ… API Geolocation
  • implementowanie przechowywania danych po stronie klienta
  • obsÅ‚ugÄ™ plików lokalnych
  • zarzÄ…dzanie komunikacjÄ… i wÄ…tkami
  • optymalizacjÄ™ zachowaÅ„ przeglÄ…darki w HTML5
  • integracjÄ™ danych urzÄ…dzeÅ„

Poznaj możliwości języka HTML5 w praktyce!

Dodaj do koszyka HTML5. Podręcznik programisty

Spis treści

HTML5. Podręcznik programisty eBook -- spis treści

Wstęp (13)

Podziękowania (21)

O autorach (23)

Rozdział 1 Nowe elementy strukturalne w HTML5 (25)

  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Budowa startowego dokumentu HTML5 (26)
    • doctype (26)
    • Kodowanie znaków (26)
    • JavaScript i Å‚Ä…cza CSS (27)
    • Styl używanej skÅ‚adni (27)
  • SkÄ…d pochodzÄ… wszystkie nowe elementy? (28)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Wykorzystanie elementu header do utworzenia nagÅ‚ówka witryny (29)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Wykorzystanie elementu hgroup do grupowania nagÅ‚ówków (31)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie nawigacji przy użyciu elementu nav (31)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Użycie elementu article (34)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Grupowanie treÅ›ci przy użyciu elementu section (35)
    • Którego elementu powinieneÅ› używać: article czy section? (36)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie paska bocznego za pomocÄ… elementu aside (37)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Użycie elementu footer (39)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Wykorzystanie narzÄ™dzia HTML5 Outliner do utworzenia prawidÅ‚owej struktury dokumentu (41)
  • PRZEPIS DLA ZAAWANSOWANYCH. Wykorzystanie wszystkich nowych elementów do utworzenia strony z wiadomoÅ›ciami (43)
  • PRZEPIS DLA ZAAWANSOWANYCH. Wykorzystanie wszystkich nowych elementów do utworzenia strony z wynikami wyszukiwania (46)
    • Podsumowanie (50)

Rozdział 2 Grupowanie, poziom tekstu i zmiany semantyczne (51)

  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Oznaczanie rysunków i ich podpisów elementami figure i figcaption (51)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Oznaczanie daty i czasu za pomocÄ… elementu time (53)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie widżetu przeÅ‚Ä…cznika za pomocÄ… elementu details (54)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Użycie elementu address do danych kontaktowych (56)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. PodÅ›wietlanie tekstu za pomocÄ… elementu mark (57)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Użycie elementu s do pokazania niepoprawnej lub nieistotnej treÅ›ci (58)
  • Zmiany dotyczÄ…ce istniejÄ…cych elementów (58)
    • Element cite (58)
    • Element ol (59)
    • Element dl (61)
    • Element small (63)
    • Elementy b oraz strong (63)
    • Elementy i oraz em (64)
    • Element abbr (64)
    • Element hr (64)
    • Elementy, których już nie ma (64)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Opakowywanie elementów Å‚Ä…czami (65)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Dodawanie informacji semantycznych za pomocÄ… mikrodanych (66)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Stosowanie WAI-ARIA z HTML5 (67)
  • PRZEPIS DLA ZAAWANSOWANYCH. Oznaczanie komentarzami strony z artykuÅ‚em (69)
  • Podsumowanie (71)

Rozdział 3 Obsługa przeglądarek w HTML5 (73)

  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. ObsÅ‚uga Internet Explorera (73)
    • Użycie JavaScriptu do uzyskania kompatybilnoÅ›ci z HTML5 (73)
    • Uzyskiwanie kompatybilnoÅ›ci CSS-a (74)
  • Szablony (boilerplates) (75)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Testowanie dziaÅ‚ania nowych możliwoÅ›ci HTML5 (75)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Wykorzystanie jQuery do zastÄ…pienia kalendarza (77)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Wykorzystanie biblioteki Modernizr do wykrywania możliwoÅ›ci (79)
  • Polyfilling (wielowypeÅ‚nianie) (82)
  • Użyteczne strony sprawdzajÄ…ce HTML5 (84)
  • Podsumowanie (84)

Rozdział 4 Nowe techniki dotyczące układu i stylizacji w CSS3 (85)

  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Tworzenie dostosowujÄ…cego siÄ™ projektu za pomocÄ… CSS3 Media Queries (85)
    • Kiedy używać zapytaÅ„ o media (90)
    • ObsÅ‚uga iPhone'a i urzÄ…dzeÅ„ z systemem Android (91)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH
  • Korzystanie z wÅ‚asnych czcionek przy użyciu @font-face (92)
    • Formaty plików i dziaÅ‚anie czcionek w różnych przeglÄ…darkach (93)
    • UsÅ‚ugi zwiÄ…zane z krojami pisma (94)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Tworzenie przycisków za pomocÄ… gradientów CSS i wielu teÅ‚ (95)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. UpiÄ™kszanie witryny za pomocÄ… transformacji i przejść (98)
  • PRZEPIS DLA ZAAWANSOWANYCH. Tworzenie animacji za pomocÄ… CSS-a (103)
  • Podsumowanie (106)

Rozdział 5 Formularze internetowe HTML5 (107)

  • Walidacja (107)
  • Typy wejÅ›ciowe HTML 4 (107)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie formularza do danych kontaktowych (109)
    • input type="email" (109)
    • input type="tel" (110)
    • input type="url" (111)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie formularza wyszukiwania przy użyciu input type="search" (112)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie kontrolek kalendarza i czasu (113)
    • input type="datetime" (113)
    • input type="datetime-local" (113)
    • input type="date" (114)
    • input type="time" (114)
    • input type="month" (115)
    • input type="week" (115)
    • NakÅ‚adanie ograniczeÅ„ na daty i godziny (115)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie pola do wprowadzania liczby (116)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie suwaka (bez potrzeby użycia JavaScriptu) (117)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie próbnika kolorów (117)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. WyÅ›wietlanie wyników za pomocÄ… elementu output (118)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Użycie tekstu zastÄ™pczego formularza (119)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. AutouzupeÅ‚nianie za pomocÄ… atrybutu list i elementu datalist (120)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Åšledzenie postÄ™pu wykonania zadania za pomocÄ… elementu progress (121)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Wskazywanie wyniku pomiaru za pomocÄ… elementu meter (122)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Przechodzenie do elementu form po zaÅ‚adowaniu strony (123)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Zezwalanie na wiele wartoÅ›ci (124)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Prosta walidacja przy użyciu atrybutu required (125)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Pisanie wÅ‚asnych reguÅ‚ walidacji (126)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. NakÅ‚adanie ograniczeÅ„ na wprowadzane dane (126)
    • step (126)
    • min i max (127)
    • formnovalidate i novalidate (127)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Dostosowywanie formularza i nadawanie mu stylu (128)
  • Komunikaty bÅ‚Ä™dów (129)
  • PRZEPIS DLA ZAAWANSOWANYCH. Wszystko razem - tworzenie formularza rejestracyjnego (130)
  • Podsumowanie (132)

RozdziaÅ‚ 6 Rysowanie na pÅ‚ótnie (133)

  • Element canvas - informacje ogólne (133)
    • PoczÄ…tki (134)
    • WspóÅ‚rzÄ™dne x i y (135)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. NaÅ‚ożenie siatki na pÅ‚ótno (135)
  • NarzÄ™dzia pÅ‚ótna (139)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie prostych ksztaÅ‚tów i linii (139)
    • Rysowanie i formatowanie prostokÄ…ta lub kwadratu (139)
    • Stosowanie gradientów w ksztaÅ‚tach (141)
    • Rysowanie linii i Å›cieżek (142)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Rysowanie wielokÄ…tów za pomocÄ… Å›cieżki (144)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Rysowanie Å‚uków i okrÄ™gów (146)
    • Rysowanie krzywych (147)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Dodawanie tekstu (147)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Wstawianie obrazka (148)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Przycinanie obrazka (149)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Animacja mapy sprite'ów (150)
  • PrzeksztaÅ‚cenia pÅ‚ótna (153)
  • PRZEPIS DLA ZAAWANSOWANYCH. Animowanie obrazka (154)
  • PRZEPIS DLA ZAAWANSOWANYCH. Animacja pionowego wykresu sÅ‚upkowego (157)
  • Podsumowanie (162)

Rozdział 7 Osadzanie wideo w HTML5 (163)

  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. DoÅ‚Ä…czanie filmów za pomocÄ… elementu video (163)
    • ObsÅ‚uga w przeglÄ…darkach i urzÄ…dzeniach (164)
    • HTML5 i kodeki wideo (164)
    • Dlaczego kodeki powinny CiÄ™ interesować? (165)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. WÅ‚Ä…czanie wideo we wszystkich przeglÄ…darkach (166)
    • Dodawanie zastÄ™pczej treÅ›ci dla starszych przeglÄ…darek (166)
    • Nowe atrybuty wideo (169)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Tworzenie wideo z napisami (172)
    • Inne możliwoÅ›ci formatowania napisów (174)
  • API mediów (175)
  • PRZEPIS DLA ZAAWANSOWANYCH. Tworzenie niestandardowych kontrolek (176)
  • Podsumowanie (183)

Rozdział 8 Osadzanie dźwięku w HTML5 (185)

  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Umieszczanie dźwiÄ™ku za pomocÄ… elementu audio (185)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Umieszczanie dźwiÄ™ku we wszystkich przeglÄ…darkach (186)
    • Dodawanie zastÄ™pczej treÅ›ci dla starszych przeglÄ…darek (186)
  • Nowe atrybuty elementu audio (187)
  • API mediów (189)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Tworzenie miksera (190)
  • PRZEPIS DLA ZAAWANSOWANYCH. Dodawanie internetowego radia (194)
  • Podsumowanie (201)

Rozdział 9 Dokonywanie zmian w historii przeglądarki (203)

  • Podstawy historii (203)
    • Kompatybilność przeglÄ…darek (204)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Dodawanie do historii wpisów za pomocÄ… pushState (204)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie przeglÄ…darki obrazków (207)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Pobieranie stanu w przeglÄ…darce obrazków (209)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Zmiana historii za pomocÄ… replaceState (211)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Zmiana historii strony (213)
  • PRZEPIS DLA ZAAWANSOWANYCH. Używanie zaawansowanych obiektów danych stanu do przenoszenia informacji pomiÄ™dzy stronami (215)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Testowanie bezpieczeÅ„stwa historii (218)
  • Pomocne biblioteki (220)
  • Podsumowanie (221)

Rozdział 10 Wykorzystanie Geolocation API do uzyskania informacji o położeniu geograficznym (223)

  • Omówienie Geolocation API (223)
    • Kompatybilność przeglÄ…darek (224)
    • Gdzie na Å›wiecie siÄ™ znajdujesz - getCurrentPosition (224)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Ustalanie poÅ‚ożenia geograficznego za pomocÄ… zwykÅ‚ego wywoÅ‚ania getCurrentPosition (225)
    • Poufność informacji o poÅ‚ożeniu (228)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. WyÅ›wietlanie na mapie informacji o lokalizacji przy użyciu getCurrentPosition (228)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. OkreÅ›lanie odlegÅ‚oÅ›ci za pomocÄ… opcji lokalizacji (233)
  • PRZEPIS DLA ZAAWANSOWANYCH. Podążanie za poruszajÄ…cym siÄ™ obiektem dziÄ™ki watchPosition (239)
  • Podsumowanie (245)

Rozdział 11 Przechowywanie danych po stronie klienta (247)

  • Przechowywanie danych po stronie klienta - przeglÄ…d (247)
    • BezpieczeÅ„stwo danych (248)
    • Klucze i wartoÅ›ci - sessionStorage i localStorage (249)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Pobieranie i ustawianie danych w pamiÄ™ci sesji (250)
    • NarzÄ™dzia dla programistów Chrome sÅ‚użące do oglÄ…dania zawartoÅ›ci pamiÄ™ci (252)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Nadawanie stylów z pamiÄ™ci sesji (253)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Zapisywanie formularzy za pomocÄ… lokalnego przechowywania danych (257)
  • PRZEPIS DLA ZAAWANSOWANYCH. Przechwytywanie zdarzeÅ„ w pamiÄ™ci lokalnej (261)
  • Web SQL Database API (267)
  • PRZEPIS DLA ZAAWANSOWANYCH. Użycie sieciowej bazy danych do stworzenia listy zakupów (270)
  • Podsumowanie (277)

Rozdział 12 Komunikacja i wątki (279)

  • PrzeglÄ…d WebSocket API (279)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Rozmawianie przez gniazda sieciowe (280)
  • Realizacja wielowÄ…tkowoÅ›ci za pomocÄ… wÄ…tków roboczych (283)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie wÄ…tku roboczego (285)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Dodawanie dwukierunkowej komunikacji (288)
  • PRZEPIS DLA ZAAWANSOWANYCH. Wykorzystywanie wspóÅ‚dzielonych wÄ…tków roboczych (291)
  • Podsumowanie (296)

Rozdział 13 Zachowanie przeglądarek w HTML5 (297)

  • Drag and Drop API (297)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. PrzeciÄ…ganie i upuszczanie pomiÄ™dzy elementami div (299)
  • PRZEPIS DLA ZAAWANSOWANYCH. Wykorzystanie zdarzeÅ„ i obiektu dataTransfer (302)
  • Pamięć podrÄ™czna aplikacji i jej API (309)
    • Pamięć podrÄ™czna przeglÄ…darki a bezpieczeÅ„stwo (310)
    • OdwoÅ‚ania do pliku manifestu (310)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Tworzenie pliku manifestu (310)
    • CACHE (311)
    • FALLBACK (311)
    • NETWORK (312)
    • Aktualizacja pamiÄ™ci podrÄ™cznej poprzez manifest (312)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Korzystanie ze stron internetowych offline (312)
  • API pamiÄ™ci podrÄ™cznej aplikacji (315)
  • Notification API (316)
    • Uprawnienia dotyczÄ…ce powiadomieÅ„ (317)
    • Kompatybilność przeglÄ…darek (318)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. WyÅ›wietlanie prostego powiadomienia (318)
  • PRZEPIS DLA ZAAWANSOWANYCH. Tworzenie strony powiadomieÅ„ o tweetach (322)
  • Podsumowanie (329)

Rozdział 14 Praca z plikami lokalnymi (331)

  • PrzeglÄ…d File API (331)
    • BezpieczeÅ„stwo File API (331)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Odczyt atrybutów pliku (332)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Przetwarzanie wielu plików za pomocÄ… przeciÄ…gania i upuszczania (334)
  • Interfejs FileReader (337)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. PodglÄ…d obrazków przy użyciu readAsDataURL (338)
  • PRZEPIS DLA ZAAWANSOWANYCH. Parsowanie pliku CSV za pomocÄ… readAsText (342)
  • Rozszerzone specyfikacje File API (349)
  • PRZEPIS DLA ZAAWANSOWANYCH. Tworzenie lokalnego pliku (350)
  • Podsumowanie (355)

Rozdział 15 Integracja z urządzeniami przenośnymi (357)

  • Krótka historia API urzÄ…dzeÅ„ (357)
  • Contacts API (359)
  • PRZEPIS DLA POCZÄ„TKUJÄ„CYCH. Pobieranie wszystkich kontaktów i numerów telefonu (360)
  • Messaging API (363)
  • Network Information API (364)
  • HTML Media Capture (365)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Przechwytywanie obrazu za pomocÄ… elementu input typu file (365)
  • DeviceOrientation Event Specification (368)
  • PRZEPIS DLA ÅšREDNIO ZAAWANSOWANYCH. Tworzenie poziomicy (369)
  • Podsumowanie (373)

Przepisy (375)

Skorowidz (379)

Dodaj do koszyka HTML5. Podręcznik programisty

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.