Kategorie
Ebooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komputer w biurze
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Multimedialne szkolenia
- Nieruchomości
- Perswazja i NLP
- Podatki
- Polityka społeczna
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Raporty, analizy
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
E-prasa
- Architektura i wnętrza
- Biznes i Ekonomia
- Dom i ogród
- E-Biznes
- Finanse
- Finanse osobiste
- Firma
- Fotografia
- Informatyka
- Kadry i płace
- Komputery, Excel
- Księgowość
- Kultura i literatura
- Naukowe i akademickie
- Ochrona środowiska
- Opiniotwórcze
- Oświata
- Podatki
- Podróże
- Psychologia
- Religia
- Rolnictwo
- Rynek książki i prasy
- Transport i Spedycja
- Zdrowie i uroda
-
Historia
-
Informatyka
- Aplikacje biurowe
- Bazy danych
- Bioinformatyka
- Biznes IT
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronika
- Fotografia cyfrowa
- Grafika komputerowa
- Gry
- Hacking
- Hardware
- IT w ekonomii
- Pakiety naukowe
- Podręczniki szkolne
- Podstawy komputera
- Programowanie
- Programowanie mobilne
- Serwery internetowe
- Sieci komputerowe
- Start-up
- Systemy operacyjne
- Sztuczna inteligencja
- Technologia dla dzieci
- Webmasterstwo
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poemat
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Podręczniki szkolne
-
Popularnonaukowe i akademickie
- Archeologia
- Bibliotekoznawstwo
- Filmoznawstwo
- Filologia
- Filologia polska
- Filozofia
- Finanse i bankowość
- Geografia
- Gospodarka
- Handel. Gospodarka światowa
- Historia i archeologia
- Historia sztuki i architektury
- Kulturoznawstwo
- Lingwistyka
- Literaturoznawstwo
- Logistyka
- Matematyka
- Medycyna
- Nauki humanistyczne
- Pedagogika
- Pomoce naukowe
- Popularnonaukowa
- Pozostałe
- Psychologia
- Socjologia
- Teatrologia
- Teologia
- Teorie i nauki ekonomiczne
- Transport i spedycja
- Wychowanie fizyczne
- Zarządzanie i marketing
-
Poradniki
-
Poradniki do gier
-
Poradniki zawodowe i specjalistyczne
-
Prawo
- BHP
- Historia
- Kodeks drogowy. Prawo jazdy
- Nauki prawne
- Ochrona zdrowia
- Ogólne, kompendium wiedzy
- Podręczniki akademickie
- Pozostałe
- Prawo budowlane i lokalowe
- Prawo cywilne
- Prawo finansowe
- Prawo gospodarcze
- Prawo gospodarcze i handlowe
- Prawo karne
- Prawo karne. Przestępstwa karne. Kryminologia
- Prawo międzynarodowe
- Prawo międzynarodowe i zagraniczne
- Prawo ochrony zdrowia
- Prawo oświatowe
- Prawo podatkowe
- Prawo pracy i ubezpieczeń społecznych
- Prawo publiczne, konstytucyjne i administracyjne
- Prawo rodzinne i opiekuńcze
- Prawo rolne
- Prawo socjalne, prawo pracy
- Prawo Unii Europejskiej
- Przemysł
- Rolne i ochrona środowiska
- Słowniki i encyklopedie
- Zamówienia publiczne
- Zarządzanie
-
Przewodniki i podróże
- Afryka
- Albumy
- Ameryka Południowa
- Ameryka Środkowa i Północna
- Australia, Nowa Zelandia, Oceania
- Austria
- Azja
- Bałkany
- Bliski Wschód
- Bułgaria
- Chiny
- Chorwacja
- Czechy
- Dania
- Egipt
- Estonia
- Europa
- Francja
- Góry
- Grecja
- Hiszpania
- Holandia
- Islandia
- Litwa
- Łotwa
- Mapy, Plany miast, Atlasy
- Miniprzewodniki
- Niemcy
- Norwegia
- Podróże aktywne
- Polska
- Portugalia
- Pozostałe
- Rosja
- Rumunia
- Słowacja
- Słowenia
- Szwajcaria
- Szwecja
- Świat
- Turcja
- Ukraina
- Węgry
- Wielka Brytania
- Włochy
-
Psychologia
- Filozofie życiowe
- Kompetencje psychospołeczne
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Audiobooki
-
Biznes i ekonomia
- Bitcoin
- Bizneswoman
- Coaching
- Controlling
- E-biznes
- Ekonomia
- Finanse
- Giełda i inwestycje
- Kompetencje osobiste
- Komunikacja i negocjacje
- Mała firma
- Marketing
- Motywacja
- Nieruchomości
- Perswazja i NLP
- Podatki
- Poradniki
- Prezentacje
- Przywództwo
- Public Relation
- Sekret
- Social Media
- Sprzedaż
- Start-up
- Twoja kariera
- Zarządzanie
- Zarządzanie projektami
- Zasoby ludzkie (HR)
-
Dla dzieci
-
Dla młodzieży
-
Edukacja
-
Encyklopedie, słowniki
-
Historia
-
Informatyka
-
Inne
-
Języki obce
-
Kultura i sztuka
-
Lektury szkolne
-
Literatura
- Antologie
- Ballada
- Biografie i autobiografie
- Dla dorosłych
- Dramat
- Dzienniki, pamiętniki, listy
- Epos, epopeja
- Esej
- Fantastyka i science-fiction
- Felietony
- Fikcja
- Humor, satyra
- Inne
- Klasyczna
- Kryminał
- Literatura faktu
- Literatura piękna
- Mity i legendy
- Nobliści
- Nowele
- Obyczajowa
- Okultyzm i magia
- Opowiadania
- Pamiętniki
- Podróże
- Poezja
- Polityka
- Popularnonaukowa
- Powieść
- Powieść historyczna
- Proza
- Przygodowa
- Publicystyka
- Reportaż
- Romans i literatura obyczajowa
- Sensacja
- Thriller, Horror
- Wywiady i wspomnienia
-
Nauki przyrodnicze
-
Nauki społeczne
-
Popularnonaukowe i akademickie
-
Poradniki
-
Poradniki zawodowe i specjalistyczne
-
Prawo
-
Przewodniki i podróże
-
Psychologia
- Filozofie życiowe
- Komunikacja międzyludzka
- Mindfulness
- Ogólne
- Perswazja i NLP
- Psychologia akademicka
- Psychologia duszy i umysłu
- Psychologia pracy
- Relacje i związki
- Rodzicielstwo i psychologia dziecka
- Rozwiązywanie problemów
- Rozwój intelektualny
- Sekret
- Seksualność
- Uwodzenie
- Wygląd i wizerunek
- Życiowe filozofie
-
Religia
-
Sport, fitness, diety
-
Technika i mechanika
Kursy video
-
Bazy danych
-
Big Data
-
Biznes, ekonomia i marketing
-
Cyberbezpieczeństwo
-
Data Science
-
DevOps
-
Dla dzieci
-
Elektronika
-
Grafika/Wideo/CAX
-
Gry
-
Microsoft Office
-
Narzędzia programistyczne
-
Programowanie
-
Rozwój osobisty
-
Sieci komputerowe
-
Systemy operacyjne
-
Testowanie oprogramowania
-
Urządzenia mobilne
-
UX/UI
-
Web development
-
Zarządzanie
Podcasty
- Ebooki
- Programowanie
- Java
- JavaServer Faces 2.2. Mistrzowskie programowanie
Szczegóły ebooka
Niniejsza książka jest skierowana do programistów korzystających z JSF. Przedstawiono w niej wszystkie istotne zagadnienia związane z tworzeniem aplikacji za pomocą JSF 2.2. Czytelnik z pewnością doceni zarówno przejrzyste instrukcje, pozwalające na pełne wykorzystanie możliwości JSF 2.2, jak i liczne ćwiczenia, które będą stanowić doskonałą pomoc w tworzeniu imponujących aplikacji internetowych.
W książce omówiono:
- język wyrażeń (EL) z uwzględnieniem najważniejszych aspektów EL 2.2 oraz EL 3.0
- zagadnienia związane z komunikacją w JSF oraz z zasięgami JSF 2.2
- artefakty JSF i ich konfigurację
- język HTML5, technologię AJAX oraz pojęcie stanu widoku JSF
- tworzenie komponentów niestandardowych i komponentów złożonych
- tematykę technologii Facelet
JavaServer Faces 2.2 — to framework dla mistrzów programowania w Javie!
Anghel Leonard jest niekwestionowanym autorytetem w dziedzinie programowania w Javie. Posiada kilkunastoletnie doświadczenie w pracy z Javą SE, Javą EE oraz z wieloma frameworkami Javy. Jest autorem kilkudziesięciu książek i artykułów poświęconych różnym technologiom Javy. Ostatnio tworzy świetne aplikacje internetowe na potrzeby systemów GIS.
O autorze (11)
O recenzentach (13)
Wstęp (15)
Rozdział 1. Dynamiczny dostęp do danych aplikacji JSF przy użyciu Expression Language (EL 3.0) (19)
- Składnia EL (20)
- Operatory EL (20)
- Hierarchia operatorów EL (21)
- Zastrzeżone słowa EL (21)
- Przetwarzanie natychmiastowe oraz opóźnione (22)
- Wyrażenia wartościowe EL (22)
- Odwołania do komponentów zarządzanych (23)
- Odwołania do właściwości komponentów zarządzanych (24)
- Odwołania do zagnieżdżonych właściwości komponentów zarządzanych (25)
- Odwołania do typów wyliczeniowych Java SE (27)
- Odwołania do kolekcji (27)
- Niejawne obiekty EL (29)
- Wyrażenia odwołujące się do metod (31)
- Teksty warunkowe w JSF (33)
- Pisanie własnego mechanizmu przetwarzającego (37)
- Przegląd EL 3.0 (45)
- Stosowanie operatora przypisania (45)
- Stosowanie operatora konkatenacji (45)
- Stosowanie operatora średnika (46)
- Poznawanie wyrażeń lambda (46)
- Stosowanie obiektów kolekcji (47)
- Podsumowanie (49)
Rozdział 2. Komunikacja w JSF (51)
- Przekazywanie i pobieranie parametrów (52)
- Stosowanie parametrów kontekstu (52)
- Przekazywanie parametrów żądania przy użyciu znacznika (52)
- Stosowanie parametrów widoku (55)
- Wywoływanie akcji z wykorzystaniem żądań GET (62)
- Przekazywanie atrybutów przy użyciu znacznika (66)
- Ustawianie wartości właściwości przy użyciu obiektów nasłuchujących akcji (69)
- Przekazywanie parametrów przy użyciu zasięgu Flash (71)
- Zastępowanie znacznika znacznikiem JSTL (75)
- Przesyłanie danych w ciasteczkach (76)
- Stosowanie pól ukrytych (78)
- Przesyłanie haseł (79)
- Programowy dostęp do atrybutów komponentów interfejsu użytkownika (79)
- Przekazywanie parametrów przy użyciu wyrażeń odwołujących się do metod (80)
- Komunikacja przy użyciu atrybutu binding (81)
- Komunikacja pomiędzy komponentami zarządzanymi (83)
- Wstrzykiwanie jednego komponentu zarządzanego do drugiego (83)
- Komunikacja pomiędzy komponentami zarządzanymi przy użyciu mapy aplikacji lub sesji (85)
- Programowy dostęp do innych komponentów zarządzanych (86)
- Podsumowanie (87)
Rozdział 3. Zasięgi JSF - długość życia i zastosowanie w komunikacji komponentów zarządzanych (89)
- Zasięgi JSF a zasięgi CDI (90)
- Zasięg żądania (92)
- Zasięg sesji (95)
- Zasięg widoku (98)
- Zasięg aplikacji (100)
- Zasięg konwersacji (102)
- Zasięg przepływu (105)
- Prosty przepływ (108)
- Przepływy z komponentami (112)
- Przepływy zagnieżdżone (114)
- Programowe konfigurowanie przepływów (118)
- Przepływy a przypadki nawigacji (120)
- Badanie przypadków nawigacji w przepływach (123)
- Stosowanie metod initializer i finalizer (124)
- Przełączanie przepływu (126)
- Pakowanie przepływów (129)
- Programowy zasięg przepływu (130)
- Zależny pseudozasięg (133)
- Zasięg none (134)
- Zasięg niestandardowy (134)
- Implementacja klasy zasięgu niestandardowego (135)
- Wyznaczanie wyrażeń EL zasięgów niestandardowych (136)
- Kontrola czasu istnienia zasięgu przy użyciu obiektu nasłuchującego akcji (139)
- Kontrola czasu istnienia zasięgu niestandardowego z użyciem obiektów NavigationHandler (141)
- Tworzenie instancji komponentów zarządzanych (144)
- Wstrzykiwanie komponentów (144)
- Podsumowanie (147)
Rozdział 4. Konfigurowanie JSF przy użyciu plików XML i adnotacji - część 1. (149)
- Nowe przestrzenie nazw JSF 2.2 (150)
- Programowa konfiguracja w JSF 2.2 (151)
- Konfigurowanie komponentów zarządzanych w XML-u (152)
- Stosowanie wielu plików konfiguracyjnych (157)
- Konfiguracja ustawień lokalnych i wiązek zasobów (159)
- Konfiguracja walidatorów i konwerterów (161)
- Konfigurowanie nawigacji (169)
- Nawigacja niejawna (169)
- Nawigacja warunkowa (172)
- Nawigacja z wywłaszczeniem (175)
- Nawigacja programowa (177)
- Konfigurowanie obiektów nasłuchujących akcji (178)
- Obiekty nasłuchujące akcji aplikacji (180)
- Konfigurowanie metod nasłuchujących zdarzeń systemowych (183)
- Stosowanie znacznika (183)
- Implementacja interfejsu SystemEventListener (185)
- Konfigurowanie metod nasłuchujących faz (191)
- Stosowanie adnotacji @ListenerFor oraz @ListenersFor (195)
- Podsumowanie (196)
Rozdział 5. Konfigurowanie JSF przy użyciu plików XML i adnotacji - część 2. (197)
- Konfiguracja obiektów obsługi zasobów (198)
- Programowe dodawanie zasobów CSS i JS (205)
- Konfiguracja obiektu obsługi widoków (205)
- Przesłanianie mechanizmów wizualizacji JSF (209)
- Stosowanie operacji wykonywanych po stronie klienta (215)
- Klasy wytwórcze JSF (219)
- Konfiguracja globalnego obiektu obsługi wyjątków (220)
- Konfiguracja klasy wytwórczej RenderKit (223)
- Konfiguracja PartialViewContext (224)
- Konfiguracja obiektu VisitContext (227)
- Konfiguracja obiektów ExternalContext (230)
- Konfiguracja Flash (233)
- Window ID API w JSF 2.2 (235)
- Konfigurowanie cyklu życia (241)
- Konfigurowanie aplikacji (244)
- Konfigurowanie VDL (246)
- Połączone możliwości wielu klas wytwórczych (248)
- Podsumowanie (249)
Rozdział 6. Korzystanie z danych tabelarycznych (251)
- Tworzenie prostej tabeli JSF (252)
- Klasa CollectionDataModel JSF 2.2 (254)
- Sortowanie tabel (259)
- Sortowanie i DataModel - klasa CollectionDataModel (265)
- Usuwanie wiersza tabeli (267)
- Edycja i aktualizacja wierszy tabeli (269)
- Dodawanie nowych wierszy (272)
- Wyświetlanie numerów wierszy (274)
- Wybieranie pojedynczego wiersza (275)
- Wybieranie wielu wierszy (277)
- Zagnieżdżanie tabel (279)
- Podział tabel na strony (280)
- Generowanie tabel przy użyciu API JSF (286)
- Filtrowanie tabel (291)
- Określanie wyglądu tabel przy użyciu stylów (296)
- Zmiana koloru tła wierszy z użyciem atrybutu rowClasses (296)
- Podświetlanie wiersza wskazanego myszą (297)
- Podświetlanie wierszy po kliknięciu myszą (298)
- Podsumowanie (299)
Rozdział 7. JSF i AJAX (301)
- Krótki przegląd cyklu życia JSF-AJAX (302)
- Prosty przykład JSF-AJAX na dobry początek (302)
- Atrybuty JSF-AJAX (303)
- Atrybuty execute oraz render (304)
- Atrybut listener (306)
- Atrybut event (307)
- Atrybut onevent - monitorowanie stanu AJAX-a po stronie klienta (308)
- Atrybut onerror - monitorowanie błędów AJAX-a po stronie klienta (309)
- Grupowanie komponentów w znaczniku (311)
- Zastosowanie AJAX-a do aktualizacji pól formularzy po wystąpieniu błędów walidacji (312)
- Przyciski Anuluj i Wyczyść (314)
- Łączenie AJAX-a i zasięgu przepływu (318)
- Żądania zwrotne i AJAX (322)
- Warunkowe wyświetlanie i przetwarzanie żądań zwrotnych (324)
- Czy to nie jest żądanie AJAX? (327)
- AJAX i znacznik (328)
- Kontrola kolejki żądań AJAX (329)
- Jawne wczytywanie pliku jsf.js (330)
- Prezentacja wartości parametrów (331)
- Metoda jsf.ajax.request i komponenty inne niż UICommand (332)
- Dostosowywanie zawartości pliku jsf.js (335)
- Implementacja AJAX-owego paska postępów (sygnalizator działania) (338)
- Podsumowanie (340)
Rozdział 8. JSF 2.2 - HTML5 i przesyłanie plików na serwer (341)
- Korzystanie z HTML5 i JSF 2.2 (341)
- Atrybuty przekazywane (342)
- Elementy przekazywane (344)
- JSF 2.2 - HTML5 i model Bean Validation 1.1 (Java EE 7) (346)
- Mechanizm przesyłania plików w JSF 2.2 (347)
- Prosty przykład przesyłania plików z wykorzystaniem możliwości JSF 2.2 (348)
- Stosowanie wielu elementów (350)
- Pobieranie informacji o przesyłanym pliku (351)
- Zapis przesłanych danych na dysku (353)
- Walidator przesyłanych plików (355)
- Przesyłanie plików z użyciem AJAX-a (356)
- Przesyłanie plików z podglądem (357)
- Przesyłanie większej liczby plików (364)
- Przesyłanie plików i nieokreślony pasek postępów (366)
- Przesyłanie plików i określony pasek postępów (368)
- Podsumowanie (371)
Rozdział 9. Zarządzanie stanem w JSF (373)
- Zapisywanie stanu widoku w JSF (373)
- Częściowe zapisywanie stanu widoku (374)
- Częściowe zapisywanie stanu i przeglądanie drzewa (374)
- Zapisywanie stanu widoku na serwerze lub kliencie (375)
- Logiczne i fizyczne widoki JSF (378)
- Zapisywanie stanu w bazie danych - aplikacja eksperymentalna (379)
- Obsługa wyjątków ViewExpiredException (386)
- Serializacja stanu w sesji na serwerze (389)
- JSF 2.2 jest technologią bezstanową (391)
- Widoki bezstanowe oraz komponenty umieszczane w zasięgu widoku (392)
- Programowe wykrywanie widoków bezstanowych (394)
- Uwagi dotyczące bezpieczeństwa JSF (395)
- Cross-site request forgery (CSRF) (395)
- Cross-site scripting (XSS) (395)
- Wstrzykiwanie SQL (396)
- Podsumowanie (396)
Rozdział 10. Niestandardowe komponenty JSF (397)
- Tworzenie komponentów niestandardowych, które nie są komponentami złożonymi (398)
- Tworzenie własnego obiektu obsługi znacznika (401)
- Tajniki konstrukcji komponentów niestandardowych (402)
- Tworzenie komponentów złożonych (413)
- Implementacja komponentu złożonego Temperature (416)
- Przekształcanie komponentu jQuery w komponent złożony (420)
- Pisanie pola do wyboru dat HTML5 jako komponentu złożonego (425)
- Wzbogacanie obrazka o akcje (429)
- Stosowanie facet złożonych (431)
- Walidacja lub konwersja danych wejściowych w komponentach złożonych (433)
- Sprawdzanie obecności atrybutu (435)
- Niebezpieczeństwa stosowania komponentów złożonych (435)
- Ukrywanie atrybutów przekazywanych w komponentach złożonych (436)
- Rozpowszechnianie komponentów złożonych w postaci plików JAR w JSF 2.2 (439)
- Dodawanie komponentów złożonych w sposób programowy (441)
- Podsumowanie (443)
Rozdział 11. Kontrakty biblioteki zasobów JSF 2.2 - motywy (445)
- Stosowanie kontraktów (446)
- Określanie wyglądu tabel przy użyciu kontraktów (448)
- Stosowanie kontraktów do określania wyglądu komponentów interfejsu użytkownika (451)
- Kontrakty stylów stosowane na urządzeniach różnych typów (453)
- Tworzenie kontraktów dla komponentów złożonych (458)
- Implementacja przełącznika motywów (460)
- Konfiguracja kontraktów w kodzie XML (467)
- Pakowanie kontraktów w plikach JAR (468)
- Podsumowanie (468)
Rozdział 12. Szablony technologii Facelets (471)
- Krótka prezentacja znaczników technologii Facelets (471)
- Tworzenie prostego szablonu - PageLayout (474)
- Przekazywanie parametrów przy użyciu znacznika (477)
- Przekazywanie właściwości komponentów i metod akcji przy użyciu znacznika (479)
- Stosowanie znaczników oraz (481)
- Iteracja przy użyciu znacznika (484)
- Stosowanie znaczników oraz (487)
- Stosowanie znaczników oraz (489)
- Debugowanie z użyciem znacznika (491)
- Usuwanie zawartości przy użyciu znacznika (492)
- Stosowanie atrybutu jsfc (493)
- Rozszerzanie szablonu PageLayout (494)
- Programowe aspekty faceletów (499)
- Zagadnienia związane z klasą FaceletFactory (499)
- Stosowanie klasy FaceletCache (499)
- Klasa ResourceResolver zastąpiona klasą ResourceHandler (502)
- Programowe dołączanie faceletów (506)
- Tworzenie klasy TagHandler (507)
- Pisanie niestandardowych funkcji bibliotek znaczników faceletów (508)
- Pułapki stosowania faceletów (510)
- AJAX i znacznik (510)
- Przykład użycia znaczników oraz (511)
- Przykład użycia znaczników oraz (512)
- Podsumowanie (512)
Dodatek A. Cykl życia JSF (515)
Skorowidz (517)
- Tytuł: JavaServer Faces 2.2. Mistrzowskie programowanie
- Autor: Anghel Leonard
- Tytuł oryginału: Mastering JavaServer Faces 2.2
- Tłumaczenie: Piotr Rajca
- ISBN: 978-83-283-2420-6, 9788328324206
- Data wydania: 2016-11-04
- Format: Ebook
- Identyfikator pozycji: jsf22m
- Wydawca: Helion