Java. Techniki zaawansowane. Wydanie IX (ebook)(audiobook)(audiobook)
- Autorzy:
- Cay S. Horstmann, Gary Cornell
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 5.6/6 Opinie: 31
- Stron:
- 992
- Druk:
- oprawa twarda
- 3w1 w pakiecie:
-
PDFePubMobi
Opis książki
Czytaj fragment
Tajniki języka Java 7!
Zastanawiasz się, dlaczego język Java zdobył taką popularność? Przyczyn jest co najmniej kilka: automatyczne zarządzanie pamięcią, możliwość uruchamiania kodu na różnych platformach, ogrom dodatkowych narzędzi oraz wyjątkowo aktywna społeczność. Nie bez znaczenia jest również świetna dokumentacja, wsparcie dla usług sieciowych oraz aktywny rozwój, którego dowodem są kolejne wersje tego języka.
Dziewiąte wydanie bestsellerowej pozycji Java. Techniki zaawansowane zostało zaktualizowane i uzupełnione o nowinki z najnowszej wersji języka Java oznaczonej numerem 7. W trakcie lektury dowiesz się, jak wydajnie korzystać ze strumieni, wyrażeń regularnych oraz baz danych.
Java 7 to całkowicie nowy, mocno rozbudowany dostęp do plików - opis wszystkich niuansów znajdziesz w tej publikacji. Co jeszcze? Tworzenie aplikacji dla różnych języków i lokalizacji, zaawansowane wykorzystanie biblioteki Swing oraz dystrybucja stworzonych aplikacji. To tylko niektóre z zagadnień poruszonych w tej wyjątkowej książce, która musi się znaleźć na półce każdego programisty języka Java.
Poznaj:
- nowości języka Java 7
- zaawansowane techniki korzystania ze strumieni
- całkowicie nowe metody dostępu do plików
- techniki łączenia się z bazą danych
- potencjał języka Java
Wykorzystaj w pełni możliwości języka Java 7!
O autorze książki
1 Cay S. Horstmann, Gary CornellCay S. Horstmann jest głównym autorem książek Java. Podstawy. Wydanie IX i Java. Techniki zaawansowane. Wydanie IX - najpopularniejszych w Polsce podręczników do nauki Javy. Cay jest profesorem informatyki na Uniwersytecie Stanowym w San José, ma tytuł Java Champion i często wygłasza odczyty na konferencjach związanych z branżą komputerową.
Podobne produkty
-
Refaktoryzacja. Ulepszanie struktury istniejące... Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Wydanie II
Martin Fowler
-
Czysta architektura. Struktura i design oprogra... Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów
Robert C. Martin
-
Czysty kod. Podręcznik dobrego programisty Czysty kod. Podręcznik dobrego programisty
Robert C. Martin
-
Algorytmy. Ilustrowany przewodnik Algorytmy. Ilustrowany przewodnik
Aditya Bhargava
-
Wielkie umysły programowania. Jak myślą i pracu... Wielkie umysły programowania. Jak myślą i pracują twórcy najważniejszych języków
Federico Biancuzzi, Shane Warden
-
Ciągłe dostarczanie oprogramowania w języku Jav... Ciągłe dostarczanie oprogramowania w języku Java. Najlepsze narzędzia i praktyki wdrażania kodu
Daniel Bryant, Abraham Marín-Pérez
Ebooka przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video zobaczysz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP4 (pliki spakowane w ZIP)
Szczegóły książki
- Tytuł oryginału:
- Core Java, Volume II--Advanced Features (9th Edition)
- Tłumaczenie:
- Jaromir Senczyk
- ISBN Książki drukowanej:
- 978-83-246-7762-7, 9788324677627
- Data wydania książki drukowanej:
- 2013-12-09
- ISBN Ebooka:
- 978-83-246-7763-4, 9788324677634
- Data wydania ebooka:
-
2013-12-09
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Format:
- 164x239
- Numer z katalogu:
- 15689
- Rozmiar pliku Pdf:
- 7.7MB
- Rozmiar pliku ePub:
- 7.4MB
- Rozmiar pliku Mobi:
- 7.4MB
- Pobierz przykładowy rozdział PDF
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
- Erraty / Zgłoś erratę
- Kategorie:
Programowanie » Java - Programowanie
Spis treści książki
- 1.1. Strumienie (17)
- 1.1.1. Odczyt i zapis bajtów (18)
- 1.1.2. Zoo pełne strumieni (20)
- 1.1.3. Łączenie filtrów strumieni (24)
- 1.2. Strumienie tekstowe (28)
- 1.2.1. Zapisywanie tekstu (28)
- 1.2.2. Wczytywanie tekstu (31)
- 1.2.3. Zapis obiektów w formacie tekstowym (31)
- 1.2.4. Zbiory znaków (34)
- 1.3. Odczyt i zapis danych binarnych (39)
- 1.3.1. Strumienie plików o swobodnym dostępie (42)
- 1.4. Archiwa ZIP (46)
- 1.5. Strumienie obiektów i serializacja (49)
- 1.5.1. Format pliku serializacji obiektów (54)
- 1.5.2. Modyfikowanie domyślnego mechanizmu serializacji (60)
- 1.5.3. Serializacja singletonów i wyliczeń (62)
- 1.5.4. Wersje (63)
- 1.5.5. Serializacja w roli klonowania (65)
- 1.6. Zarządzanie plikami (68)
- 1.6.1. Ścieżki dostępu (68)
- 1.6.2. Odczyt i zapis plików (70)
- 1.6.3. Kopiowanie, przenoszenie i usuwanie plików (72)
- 1.6.4. Tworzenie plików i katalogów (72)
- 1.6.5. Informacje o plikach (74)
- 1.6.6. Przeglądanie plików w katalogu (75)
- 1.6.7. Systemy plików ZIP (78)
- 1.7. Mapowanie plików w pamięci (79)
- 1.7.1. Struktura bufora danych (86)
- 1.7.2. Blokowanie plików (88)
- 1.8. Wyrażenia regularne (90)
- 2.1. Wprowadzenie do języka XML (102)
- 2.1.1. Struktura dokumentu XML (104)
- 2.2. Parsowanie dokumentów XML (107)
- 2.3. Kontrola poprawności dokumentów XML (118)
- 2.3.1. Definicje typów dokumentów (119)
- 2.3.2. XML Schema (126)
- 2.3.3. Praktyczny przykład (129)
- 2.4. Wyszukiwanie informacji i XPath (142)
- 2.5. Przestrzenie nazw (148)
- 2.6. Parsery strumieniowe (150)
- 2.6.1. Wykorzystanie parsera SAX (151)
- 2.6.2. Wykorzystanie parsera StAX (156)
- 2.7. Tworzenie dokumentów XML (160)
- 2.7.1. Dokumenty bez przestrzeni nazw (160)
- 2.7.2. Dokumenty z przestrzenią nazw (160)
- 2.7.3. Zapisywanie dokumentu (161)
- 2.7.4. Przykład: tworzenie pliku SVG (162)
- 2.7.5. Tworzenie dokumentu XML za pomocą parsera StAX (165)
- 2.8. Przekształcenia XSL (172)
- 3.1. Połączenia z serwerem (183)
- 3.1.1. Limity czasu gniazd (187)
- 3.1.2. Adresy internetowe (189)
- 3.2. Implementacja serwerów (191)
- 3.2.1. Obsługa wielu klientów (194)
- 3.2.2. Połączenia częściowo zamknięte (196)
- 3.3. Przerywanie działania gniazd sieciowych (198)
- 3.4. Połączenia wykorzystujące URL (204)
- 3.4.1. URL i URI (205)
- 3.4.2. Zastosowanie klasy URLConnection do pobierania informacji (207)
- 3.4.3. Wysyłanie danych do formularzy (216)
- 3.5. Wysyłanie poczty elektronicznej (222)
- 4.1. Architektura JDBC (228)
- 4.1.1. Typy sterowników JDBC (228)
- 4.1.2. Typowe zastosowania JDBC (229)
- 4.2. Język SQL (231)
- 4.3. Instalacja JDBC (235)
- 4.3.1. Adresy URL baz danych (237)
- 4.3.2. Pliki JAR zawierające sterownik (237)
- 4.3.3. Uruchamianie bazy danych (237)
- 4.3.4. Rejestracja klasy sterownika (238)
- 4.3.5. Nawiązywanie połączenia z bazą danych (239)
- 4.4. Wykonywanie poleceń języka SQL (242)
- 4.4.1. Zarządzanie połączeniami, poleceniami i zbiorami wyników (245)
- 4.4.2. Analiza wyjątków SQL (246)
- 4.4.3. Wypełnianie bazy danych (248)
- 4.5. Wykonywanie zapytań (252)
- 4.5.1. Polecenia przygotowane (252)
- 4.5.2. Odczyt i zapis dużych obiektów (258)
- 4.5.3. Sekwencje sterujące (260)
- 4.5.4. Zapytania o wielu zbiorach wyników (261)
- 4.5.5. Pobieranie wartości kluczy wygenerowanych automatycznie (262)
- 4.6. Przewijalne i aktualizowalne zbiory wyników zapytań (263)
- 4.6.1. Przewijalne zbiory wyników (263)
- 4.6.2. Aktualizowalne zbiory rekordów (265)
- 4.7. Zbiory rekordów (270)
- 4.7.1. Tworzenie zbiorów rekordów (270)
- 4.7.2. Buforowane zbiory rekordów (271)
- 4.8. Metadane (274)
- 4.9. Transakcje (283)
- 4.9.1. Punkty kontrolne (284)
- 4.9.2. Aktualizacje wsadowe (284)
- 4.9.3. Zaawansowane typy języka SQL (287)
- 4.10. Zaawansowane zarządzanie połączeniami (288)
- 5.1. Lokalizatory (292)
- 5.2. Formaty liczb (297)
- 5.2.1. Waluty (302)
- 5.3. Data i czas (304)
- 5.4. Porządek alfabetyczny (311)
- 5.4.1. Moc uporządkowania (312)
- 5.4.2. Rozkład (313)
- 5.5. Formatowanie komunikatów (318)
- 5.5.1. Formatowanie z wariantami (320)
- 5.6. Pliki tekstowe i zbiory znaków (322)
- 5.6.1. Internacjonalizacja a pliki źródłowe programów (322)
- 5.7. Komplety zasobów (324)
- 5.7.1. Wyszukiwanie kompletów zasobów (324)
- 5.7.2. Pliki właściwości (325)
- 5.7.3. Klasy kompletów zasobów (326)
- 5.8. Kompletny przykład (328)
- 6.1. Listy (343)
- 6.1.1. Komponent JList (344)
- 6.1.2. Modele list (349)
- 6.1.3. Wstawianie i usuwanie (354)
- 6.1.4. Odrysowywanie zawartości listy (355)
- 6.2. Tabele (359)
- 6.2.1. Najprostsze tabele (359)
- 6.2.2. Modele tabel (363)
- 6.2.3. Wiersze i kolumny (367)
- 6.2.4. Rysowanie i edycja komórek (383)
- 6.3. Drzewa (394)
- 6.3.1. Najprostsze drzewa (395)
- 6.3.2. Przeglądanie węzłów (410)
- 6.3.3. Rysowanie węzłów (412)
- 6.3.4. Nasłuchiwanie zdarzeń w drzewach (415)
- 6.3.5. Własne modele drzew (421)
- 6.4. Komponenty tekstowe (429)
- 6.4.1. Śledzenie zmian zawartości komponentów tekstowych (430)
- 6.4.2. Sformatowane pola wejściowe (433)
- 6.4.3. Komponent JSpinner (449)
- 6.4.4. Prezentacja HTML za pomocą JEditorPane (457)
- 6.5. Wskaźniki postępu (463)
- 6.5.1. Paski postępu (463)
- 6.5.2. Monitory postępu (466)
- 6.5.3. Monitorowanie postępu strumieni wejścia (469)
- 6.6. Organizatory komponentów i dekoratory (474)
- 6.6.1. Panele dzielone (475)
- 6.6.2. Panele z zakładkami (478)
- 6.6.3. Panele pulpitu i ramki wewnętrzne (483)
- 6.6.4. Rozmieszczenie kaskadowe i sąsiadujące (487)
- 6.6.5. Zgłaszanie weta do zmiany właściwości (495)
- 7.1. Potokowe tworzenie grafiki (506)
- 7.2. Figury (508)
- 7.2.1. Wykorzystanie klas obiektów graficznych (511)
- 7.3. Pola (523)
- 7.4. Ślad pędzla (524)
- 7.5. Wypełnienia (532)
- 7.6. Przekształcenia układu współrzędnych (534)
- 7.7. Przycinanie (539)
- 7.8. Przezroczystość i składanie obrazów (541)
- 7.9. Wskazówki operacji graficznych (549)
- 7.10. Czytanie i zapisywanie plików graficznych (555)
- 7.10.1. Wykorzystanie obiektów zapisu i odczytu plików graficznych (555)
- 7.10.2. Odczyt i zapis plików zawierających sekwencje obrazów (560)
- 7.11. Operacje na obrazach (565)
- 7.11.1. Dostęp do danych obrazu (565)
- 7.11.2. Filtrowanie obrazów (571)
- 7.12. Drukowanie (580)
- 7.12.1. Drukowanie grafiki (580)
- 7.12.2. Drukowanie wielu stron (589)
- 7.12.3. Podgląd wydruku (591)
- 7.12.4. Usługi drukowania (599)
- 7.12.5. Usługi drukowania za pośrednictwem strumieni (603)
- 7.12.6. Atrybuty drukowania (604)
- 7.13. Schowek (610)
- 7.13.1. Klasy i interfejsy umożliwiające przekazywanie danych (611)
- 7.13.2. Przekazywanie tekstu (612)
- 7.13.3. Interfejs Transferable i formaty danych (615)
- 7.13.4. Przekazywanie obrazów za pomocą schowka (617)
- 7.13.5. Wykorzystanie schowka systemowego do przekazywania obiektów Java (621)
- 7.13.6. Zastosowanie lokalnego schowka do przekazywania referencji obiektów (624)
- 7.14. Mechanizm "przeciągnij i upuść" (625)
- 7.14.1. Przekazywanie danych pomiędzy komponentami Swing (627)
- 7.14.2. Źródła przeciąganych danych (631)
- 7.14.3. Cele upuszczanych danych (633)
- 7.15. Integracja z macierzystą platformą (641)
- 7.15.1. Ekran powitalny (641)
- 7.15.2. Uruchamianie macierzystych aplikacji pulpitu (646)
- 7.15.3. Zasobnik systemowy (651)
- 8.1. Dlaczego ziarnka? (658)
- 8.2. Proces tworzenia ziarnek JavaBeans (660)
- 8.3. Wykorzystanie ziarnek do tworzenia aplikacji (662)
- 8.3.1. Umieszczanie ziarnek w plikach JAR (663)
- 8.3.2. Korzystanie z ziarnek (664)
- 8.4. Wzorce nazw właściwości ziarnek i zdarzeń (669)
- 8.5. Typy właściwości ziarnek (673)
- 8.5.1. Właściwości proste (673)
- 8.5.2. Właściwości indeksowane (674)
- 8.5.3. Właściwości powiązane (674)
- 8.5.4. Właściwości ograniczone (676)
- 8.6. Klasa informacyjna ziarnka (683)
- 8.7. Edytory właściwości (687)
- 8.7.1. Implementacja edytora właściwości (690)
- 8.8. Indywidualizacja ziarnka (697)
- 8.8.1. Implementacja klasy indywidualizacji (699)
- 8.9. Trwałość ziarnek JavaBeans (705)
- 8.9.1. Zastosowanie mechanizmu trwałości JavaBeans dla dowolnych danych (709)
- 8.9.2. Kompletny przykład zastosowania trwałości JavaBeans (715)
- 9.1. Ładowanie klas (728)
- 9.1.1. Hierarchia klas ładowania (730)
- 9.1.2. Zastosowanie procedur ładujących w roli przestrzeni nazw (732)
- 9.1.3. Implementacja własnej procedury ładującej (733)
- 9.2. Weryfikacja kodu maszyny wirtualnej (738)
- 9.3. Menedżery bezpieczeństwa i pozwolenia (742)
- 9.3.1. Bezpieczeństwo na platformie Java (744)
- 9.3.2. Pliki polityki bezpieczeństwa (747)
- 9.3.3. Tworzenie własnych klas pozwoleń (755)
- 9.3.4. Implementacja klasy pozwoleń (756)
- 9.4. Uwierzytelnianie użytkowników (762)
- 9.4.1. Moduły JAAS (767)
- 9.5. Podpis cyfrowy (776)
- 9.5.1. Skróty wiadomości (777)
- 9.5.2. Podpisywanie wiadomości (779)
- 9.5.3. Weryfikacja podpisu (781)
- 9.5.4. Problem uwierzytelniania (784)
- 9.5.5. Podpisywanie certyfikatów (786)
- 9.5.6. Żądania certyfikatu (787)
- 9.6. Podpisywanie kodu (788)
- 9.6.1. Podpisywanie plików JAR (789)
- 9.6.2. Certyfikaty twórców oprogramowania (793)
- 9.7. Szyfrowanie (795)
- 9.7.1. Szyfrowanie symetryczne (795)
- 9.7.2. Generowanie klucza (797)
- 9.7.3. Strumienie szyfrujące (801)
- 9.7.4. Szyfrowanie kluczem publicznym (803)
- 10.1. Skrypty na platformie Java (807)
- 10.1.1. Wybór silnika skryptów (808)
- 10.1.2. Wykonywanie skryptów i wiązania zmiennych (809)
- 10.1.3. Przekierowanie wejścia i wyjścia (811)
- 10.1.4. Wywoływanie funkcji i metod skryptów (812)
- 10.1.5. Kompilacja skryptu (814)
- 10.1.6. Przykład: skrypty i graficzny interfejs użytkownika (815)
- 10.2. Interfejs kompilatora (819)
- 10.2.1. Kompilacja w najprostszy sposób (820)
- 10.2.2. Stosowanie zadań kompilacji (820)
- 10.2.3. Przykład: dynamiczne tworzenie kodu w języku Java (826)
- 10.3. Stosowanie adnotacji (830)
- 10.3.1. Przykład: adnotacje obsługi zdarzeń (832)
- 10.4. Składnia adnotacji (837)
- 10.5. Adnotacje standardowe (841)
- 10.5.1. Adnotacje kompilacji (842)
- 10.5.2. Adnotacje zarządzania zasobami (842)
- 10.5.3. Metaadnotacje (843)
- 10.6. Przetwarzanie adnotacji w kodzie źródłowym (845)
- 10.7. Inżynieria kodu bajtowego (851)
- 10.7.1. Modyfikacja kodu bajtowego podczas ładowania (857)
- 11.1. Role klienta i serwera (862)
- 11.2. Wywołania zdalnych metod (864)
- 11.2.1. Namiastka i szeregowanie parametrów (864)
- 11.3. Model programowania RMI (866)
- 11.3.1. Interfejsy i implementacje (866)
- 11.3.2. Rejestr RMI (868)
- 11.3.3. Przygotowanie wdrożenia (871)
- 11.3.4. Rejestrowanie aktywności RMI (874)
- 11.4. Parametry zdalnych metod i wartości zwracane (876)
- 11.4.1. Przekazywanie obiektów zdalnych (876)
- 11.4.2. Przekazywanie obiektów, które nie są zdalne (876)
- 11.4.3. Dynamiczne ładowanie klas (878)
- 11.4.4. Zdalne referencje obiektów o wielu interfejsach (883)
- 11.4.5. Zdalne obiekty i metody equals, hashCode oraz clone (884)
- 11.5. Aktywacja zdalnych obiektów (884)
- 12.1. Wywołania funkcji języka C z programów w języku Java (892)
- 12.2. Numeryczne parametry metod i wartości zwracane (898)
- 12.2.1. Wykorzystanie funkcji printf do formatowania liczb (899)
- 12.3. Łańcuchy znaków jako parametry (900)
- 12.4. Dostęp do składowych obiektu (906)
- 12.4.1. Dostęp do pól instancji (906)
- 12.4.2. Dostęp do pól statycznych (910)
- 12.5. Sygnatury (911)
- 12.6. Wywoływanie metod języka Java (912)
- 12.6.1. Wywoływanie metod obiektów (912)
- 12.6.2. Wywoływanie metod statycznych (916)
- 12.6.3. Konstruktory (917)
- 12.6.4. Alternatywne sposoby wywoływania metod (917)
- 12.7. Tablice (919)
- 12.8. Obsługa błędów (923)
- 12.9. Interfejs programowy wywołań języka Java (927)
- 12.10. Kompletny przykład: dostęp do rejestru systemu Windows (932)
- 12.10.1. Rejestr systemu Windows (933)
- 12.10.2. Interfejs dostępu do rejestru na platformie Java (934)
- 12.10.3. Implementacja dostępu do rejestru za pomocą metod macierzystych (935)
Przedmowa (11)
Podziękowania (15)
Rozdział 1. Strumienie i pliki (17)
Rozdział 2. Język XML (101)
Rozdział 3. Programowanie aplikacji sieciowych (183)
Rozdział 4. Programowanie baz danych: JDBC (227)
Rozdział 5. Internacjonalizacja (291)
Rozdział 6. Zaawansowane możliwości pakietu Swing (343)
Rozdział 7. Zaawansowane możliwości biblioteki AWT (505)
Rozdział 8. JavaBeans (657)
Rozdział 9. Bezpieczeństwo (727)
Rozdział 10. Skrypty, kompilacja i adnotacje (807)
Rozdział 11. Obiekty rozproszone (861)
Rozdział 12. Metody macierzyste (891)
Skorowidz (949)
Oceny i opinie klientów: Java. Techniki zaawansowane. Wydanie IX Cay S. Horstmann, Gary Cornell (31)
(21)
(9)
(0)
(1)
(0)
(0)
6 oceniona przez: Łukasz Podstawka, Programista 2016-09-05
6 oceniona przez: 2016-01-11
6 oceniona przez: Amadeuszx, - 2015-01-26
6 oceniona przez: 2014-09-22
6 oceniona przez: Michal, Programista 2013-10-31
5 oceniona przez: Wojtek, 2016-09-29
5 oceniona przez: Programista 2014-10-26
5 oceniona przez: Paweł, 2014-05-12
5 oceniona przez: 2014-04-14
5 oceniona przez: Łukasz Kosacki, nauczyciel 2014-04-02
5 oceniona przez: Mateusz Salach, Student 2014-02-15
5 oceniona przez: 2014-02-05
Oceny i opinie poprzednich wydań
6 oceniona przez: 2021-03-31
6 oceniona przez: 2019-03-04
6 oceniona przez: Maverick, 2019-01-02
6 oceniona przez: Michał Kozakiewicz, Teleinformatyk 2017-11-22
6 oceniona przez: Damian C., freelancer 2013-04-08
6 oceniona przez: Damian Świerzbin, Programista Java 2012-08-03
6 oceniona przez: 2012-04-23
6 oceniona przez: Mateusz Gdeczyk, Lektor angielskiego, student informatyki 2011-10-28
6 oceniona przez: 2010-03-08
6 oceniona przez: Michał, 2009-11-10
6 oceniona przez: 2009-09-09
6 oceniona przez: 2009-07-14
6 oceniona przez: 2009-04-06
6 oceniona przez: 2009-03-05
6 oceniona przez: Irek, 2009-03-05
6 oceniona przez: 2009-02-23
5 oceniona przez: Dawid, 2021-01-12
5 oceniona przez: Mikołaj, 2020-04-26
3 oceniona przez: 2011-03-29
więcej opinii