Facebook - konwersja
  • promocja

Apache. Receptury. Wydanie II - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
16 października 2012
Format ebooka:
MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Apache. Receptury. Wydanie II - ebook

Czy wiesz, jaki serwer HTTP jest najpopularniejszy w sieci? Właśnie tak, jest to Apache! W lipcu 2008 roku jego udział w rynku wynosił blisko 50% (według Netcraft). Historia tego serwera sięga roku 1995, kiedy ukazała się jego pierwsza oficjalna wersja, oznaczona numerem 0.6.2. Cechy, które zadecydowały o sukcesie tego rozwiązania, to bezpieczeństwo, skalowalność, wielowątkowość i obsługa różnorodnych języków skryptowych.

Dzięki książce "Apache. Receptury" zapoznasz się z gotowymi przepisami na rozwiązanie ciekawych, specyficznych oraz intrygujących problemów. Nauczysz się instalować serwer z różnych źródeł oraz na różnych platformach. Dowiesz się, w jaki sposób zwiększyć jego bezpieczeństwo, jak uruchomić serwery wirtualne oraz poprawić wydajność Apache. Autorzy książki pokażą Ci, jak uruchomić obsługę języków skryptowych, tak aby serwowane strony stały się dynamiczne. Cała wiedza zostanie przedstawiona w sprawdzony w tej serii sposób: problem - rozwiązanie - analiza.

  • Sposoby instalacji serwera Apache
  • Dodawanie funkcjonalności dzięki modułom
  • Możliwości rejestracji zdarzeń
  • Konfiguracja serwerów wirtualnych
  • Wykorzystanie aliasów, przekierowań oraz przepisań (mod_rewrite)
  • Zarządzanie dostępem do serwowanych zasobów
  • Bezpieczeństwo serwera Apache
  • Wykorzystanie szyfrowanej transmisji - protokół SSL
  • Zapewnienie wydajności
  • Wykorzystanie języków skryptowych

Oto książka z najlepszymi przepisami na Apache!

Spis treści

Przedmowa (11)

1. Instalacja serwera (19)

  • 1.1. Instalacja serwera z pakietów dystrybucji Red Hat Linux (20)
  • 1.2. Instalacja serwera z pakietów dystrybucji Debian (21)
  • 1.3. Instalacja serwera Apache w systemie Windows (22)
  • 1.4. Pobieranie plików źródłowych serwera Apache (27)
  • 1.5. Budowa serwera Apache z kodu źródłowego (29)
  • 1.6. Instalacja serwera Apache za pomocą programu ApacheToolbox (30)
  • 1.7. Uruchamianie, zatrzymywanie oraz ponowne uruchamianie serwera Apache (32)
  • 1.8. Usunięcie serwera Apache (34)
  • 1.9. Której wersji serwera Apache użyć (35)
  • 1.10. Uaktualnienie serwera przy użyciu config.nice (37)
  • 1.11. Uruchamianie serwera Apache w momencie startu systemu operacyjnego (38)
  • 1.12. Przydatne opcje konfiguracyjne (39)
  • 1.13. Odnajdywanie plików serwera Apache (41)

2. Instalacja modułów (43)

  • 2.1. Instalacja typowego modułu (44)
  • 2.2. Instalacja modułu mod_dav w systemie uniksowym (45)
  • 2.3. Instalacja modułu mod_dav w systemie Windows (47)
  • 2.4. Instalacja modułu mod_perl w systemie uniksowym (49)
  • 2.5. Instalacja modułu mod_php w systemie uniksowym (51)
  • 2.6. Instalacja modułu mod_php w systemie Windows (52)
  • 2.7. Instalacja modułu mod_ssl (53)
  • 2.8. Wyszukiwanie modułów na witrynie modules.apache.org (54)
  • 2.9. Instalacja modułu mod_security (55)
  • 2.10. Dlaczego ten moduł nie działa? (57)

3. Rejestracja zdarzeń (59)

  • 3.1. Zwiększenie szczegółowości zapisów dziennika zdarzeń (62)
  • 3.2. Zwiększenie liczby komunikatów o błędach (63)
  • 3.3. Rejestracja zawartości POST (65)
  • 3.4. Rejestracja adresu IP klienta łączącego się poprzez serwer proxy (66)
  • 3.5. Rejestracja adresu MAC klienta (67)
  • 3.6. Rejestracja Cookies (67)
  • 3.7. Zaniechanie rejestracji żądań pobierania obrazów pochodzących ze stron lokalnych (69)
  • 3.8. Zmiana pliku dziennika zdarzeń o określonej porze (70)
  • 3.9. Zmiana pliku dziennika zdarzeń pierwszego dnia miesiąca (71)
  • 3.10. Rejestracja nazw komputerów zamiast ich adresów IP (72)
  • 3.11. Oddzielne pliki dzienników zdarzeń serwerów wirtualnych (73)
  • 3.12. Rejestracja żądań proxy (75)
  • 3.13. Rejestracja komunikatów o błędach różnych serwerów wirtualnych w różnych plikach (76)
  • 3.14. Rejestracja adresu IP serwera (77)
  • 3.15. Rejestracja stron, z których nadchodzą żądania (78)
  • 3.16. Rejestracja nazw używanych przeglądarek (79)
  • 3.17. Rejestracja dowolnych pól nagłówka żądania (79)
  • 3.18. Rejestracja dowolnych pól nagłówka odpowiedzi (80)
  • 3.19. Rejestracja aktywności serwera w bazie danych MySQL (81)
  • 3.20. Rejestracja zdarzeń w dzienniku systemowym (82)
  • 3.21. Rejestracja katalogów użytkowników (84)

4. Serwery wirtualne (87)

  • 4.1. Konfiguracja serwerów wirtualnych opartych na nazwach (88)
  • 4.2. Konfiguracja jednego z serwerów wirtualnych opartych na nazwach jako serwera domyślnego (90)
  • 4.3. Konfiguracja serwerów wirtualnych opartych na adresach (91)
  • 4.4. Konfiguracja jednego z serwerów wirtualnych opartych na adresach jako serwera domyślnego (92)
  • 4.5. Jednoczesne użycie serwerów wirtualnych opartych na adresach oraz na nazwach (93)
  • 4.6. Liczne serwery wirtualne obsługiwane za pomocą modułu mod_vhost_alias (94)
  • 4.7. Liczne serwery wirtualne obsługiwane za pomocą reguł przepisania (96)
  • 4.8. Rejestracja zdarzeń wszystkich serwerów wirtualnych (97)
  • 4.9. Podział pliku dziennika zdarzeń (98)
  • 4.10. Serwery wirtualne oparte na portach (98)
  • 4.11. Ta sama zawartość dostępna pod kilkoma adresami IP (99)
  • 4.12. Definiowanie serwerów wirtualnych w bazie danych (100)

5. Aliasy, przekierowania oraz przepisania (103)

  • 5.1. Przyporządkowanie adresu URL do katalogu (103)
  • 5.2. Tworzenie dodatkowego adresu URL dla istniejącej zawartości (105)
  • 5.3. Przydzielenie użytkownikom ich własnych adresów URL (106)
  • 5.4. Utożsamienie kilku adresów URL za pomocą pojedynczej dyrektywy (109)
  • 5.5. Przyporządkowanie kilku adresów URL do tego samego katalogu CGI (110)
  • 5.6. Tworzenie katalogów CGI dla każdego użytkownika (110)
  • 5.7. Przekierowanie do innego miejsca (111)
  • 5.8. Przekierowanie kilku adresów URL w to samo miejsce (113)
  • 5.9. Nierozróżnianie wielkości liter w adresach URL (114)
  • 5.10. Wyróżnianie składni kodu źródłowego PHP bez użycia dowiązań symbolicznych (115)
  • 5.11. Wymiana ciągów znaków w żądanych adresach URL (117)
  • 5.12. Zamiana informacji o ścieżce na argumenty CGI (117)
  • 5.13. Odmowa dostępu żądaniom pochodzącym z obcych stron (118)
  • 5.14. Przekierowanie żądań pochodzących z obcych stron do strony z informacjami (119)
  • 5.15. Przepisanie na podstawie łańcucha zapytania (120)
  • 5.16. Przekierowanie całego lub części serwera do SSL (121)
  • 5.17. Zamiana nazw katalogów na nazwy serwerów (122)
  • 5.18. Przekierowanie wszystkich żądań do jednego serwera (123)
  • 5.19. Zamiana nazw dokumentów na argumenty programu (123)
  • 5.20. Przepisywanie elementów ścieżki do ciągu zapytania i odwrotnie (124)
  • 5.21. Przepisywanie nazwy serwera na nazwę katalogu (125)
  • 5.22. Przekształcanie segmentów adresu URL w argumenty zapytania (126)
  • 5.23. Używanie dyrektyw AliasMatch, ScriptAliasMatch i RedirectMatch (126)

6. Bezpieczeństwo (129)

  • 6.1. Wykorzystanie kont użytkowników do uwierzytelnienia dostępu do zasobów WWW (130)
  • 6.2. Konfiguracja haseł jednorazowych (132)
  • 6.3. Wygasające hasła (133)
  • 6.4. Ograniczanie wielkości umieszczanych na serwerze plików (135)
  • 6.5. Ograniczenie pobierania obrazków ze stron znajdujących się na innych serwerach (137)
  • 6.6. Żądanie zarówno słabego, jak i silnego uwierzytelnienia (138)
  • 6.7. Zarządzanie plikami .htpasswd (139)
  • 6.8. Przygotowanie plików haseł uwierzytelniania typu Digest (141)
  • 6.9. Rozluźnienie ochrony w podkatalogu (142)
  • 6.10. Wybiórcze zniesienie ochrony (144)
  • 6.11. Autoryzacja za pomocą informacji o właścicielu pliku (146)
  • 6.12. Przechowywanie poświadczeń użytkownika w bazie danych MySQL (147)
  • 6.13. Dostęp do nazwy użytkownika uwierzytelnionego (148)
  • 6.14. Uzyskanie hasła użytego do uwierzytelnienia (149)
  • 6.15. Ochrona przed atakami na hasła typu brute-force (150)
  • 6.16. Uwierzytelnianie typu Digest i uwierzytelnianie typu Basic (151)
  • 6.17. Dostęp do poświadczeń osadzonych w adresach URL (153)
  • 6.18. Zabezpieczenie usługi WebDAV (153)
  • 6.19. Uruchomienie usługi WebDAV bez udzielenia zezwolenia na zapisywanie do plików użytkownikowi, z uprawnieniami którego działa serwer (154)
  • 6.20. Ograniczanie dostępu poprzez proxy do określonych adresów URL (156)
  • 6.21. Ochrona plików za pomocą osłony (157)
  • 6.22. Ochrona plików serwera przed złośliwymi skryptami (159)
  • 6.23. Nadanie prawidłowych uprawnień do plików (160)
  • 6.24. Uruchomienie serwera z minimalną liczbą modułów (163)
  • 6.25. Ograniczenie dostępu do plików znajdujących się poza katalogiem głównym WWW (165)
  • 6.26. Ograniczenie metod dostępnych dla użytkowników (166)
  • 6.27. Ograniczanie żądań zakresów (167)
  • 6.28. Obrona przed atakami DoS przy użyciu modułu mod_evasive (168)
  • 6.29. Zmiana katalogu głównego serwera Apache przy użyciu modułu mod_security (170)
  • 6.30. Migracja do mechanizmów uwierzytelniania w wersji 2.2 (171)
  • 6.31. Blokowanie działania robaków przy użyciu modułu mod_security (172)
  • 6.32. Uprawnienia tylko do odczytu i do zapisu w repozytorium Subversion (173)
  • 6.33. Używanie stałych przekierowań do ukrywania zablokowanych adresów URL (174)

7. SSL (177)

  • 7.1. Instalacja SSL (177)
  • 7.2. Instalacja SSL w systemie Windows (179)
  • 7.3. Tworzenie samodzielnie podpisanych certyfikatów SSL (179)
  • 7.4. Tworzenie zaufanego ośrodka certyfikacyjnego (183)
  • 7.5. Udostępnianie części witryny WWW poprzez SSL (185)
  • 7.6. Uwierzytelnianie za pomocą certyfikatów klientów (187)
  • 7.7. Wirtualne serwery SSL (188)
  • 7.8. Certyfikaty wieloznaczne (189)

8. Treść dynamiczna (191)

  • 8.1. Uaktywnienie katalogu CGI (191)
  • 8.2. Uaktywnienie skryptów CGI w katalogach niewyznaczonych za pomocą dyrektywy ScriptAlias (193)
  • 8.3. Wskazywanie dokumentu domyślnego w katalogu CGI (194)
  • 8.4. Wykorzystanie rozszerzeń plików systemu Windows do uruchamiana skryptów CGI (195)
  • 8.5. Identyfikacja skryptów CGI na podstawie ich rozszerzeń (197)
  • 8.6. Sprawdzenie, czy obsługa programów CGI jest skonfigurowana poprawnie (198)
  • 8.7. Odczyt wartości z formularza (200)
  • 8.8. Uruchamianie programu CGI dla pewnych rodzajów treści (203)
  • 8.9. Użycie SSI (204)
  • 8.10. Przedstawienie daty ostatniej modyfikacji (206)
  • 8.11. Dołączenie standardowego nagłówka (207)
  • 8.12. Dołączanie wyniku działania programu CGI (208)
  • 8.13. Uruchamianie za pomocą programu suexec skryptów CGI z uprawnieniami innego użytkownika (208)
  • 8.14. Instalacja programu obsługi modułu mod_perl z serwisu CPAN (210)
  • 8.15. Pisanie programów obsługi modułu mod_perl (212)
  • 8.16. Uruchomienie obsługi skryptów PHP (213)
  • 8.17. Weryfikacja instalacji PHP (214)
  • 8.18. Parsowanie danych wynikowych CGI z uwzględnieniem dyrektyw Server Side Includes (215)
  • 8.19. Parsowanie danych wynikowych skryptów ScriptAlias z uwzględnieniem dyrektyw Server Side Includes (216)
  • 8.20. Wyznaczenie mod_perl do obsługi wszystkich skryptów w języku Perl (216)
  • 8.21. Włączenie obsługi skryptów języka Python (217)

9. Obsługa błędów (219)

  • 9.1. Obsługa przypadku brakującego pola Host (219)
  • 9.2. Zmiana kodu stanu odpowiedzi za pomocą skryptu CGI (220)
  • 9.3. Własne komunikaty o błędach (221)
  • 9.4. Komunikaty o błędach w różnych językach (222)
  • 9.5. Przekierowanie odwołań do niepoprawnych adresów URL do innych stron (223)
  • 9.6. Prawidłowa strona komunikatu o błędzie w programie Internet Explorer (224)
  • 9.7. Powiadamianie o błędach (225)

10. Proxy (227)

  • 10.1. Zabezpieczenie serwera proxy (227)
  • 10.2. Zabezpieczenie serwera proxy przed użyciem go jako otwartego przekaźnika poczty (229)
  • 10.3. Przekazywanie żądań do innego serwera (230)
  • 10.4. Blokowanie żądań proxy do określonych miejsc (231)
  • 10.5. Przeniesienie żądań obsługiwanych przez mod_perl na inny serwer (232)
  • 10.6. Konfiguracja buforującego serwera proxy (233)
  • 10.7. Filtrowanie treści przekazywanych przez serwer proxy (234)
  • 10.8. Wymaganie uwierzytelnienia się na serwerze dostępnym poprzez proxy (235)
  • 10.9. Równoważenie obciążenia przy użyciu mod_proxy_balancer (235)
  • 10.10. Przekazywanie wywołań z serwera wirtualnego (237)
  • 10.11. Blokowanie przekazywania wywołań FTP (237)

11. Wydajność (239)

  • 11.1. Określenie ilości potrzebnej pamięci RAM (239)
  • 11.2. Testowanie wydajności serwera Apache za pomocą programu ab (240)
  • 11.3. Dobór ustawień dostępu keepalive (242)
  • 11.4. Określenie stanu aktywności witryny WWW (243)
  • 11.5. Unikanie wyszukiwania w DNS (244)
  • 11.6. Optymalizacja dowiązań symbolicznych (246)
  • 11.7. Ograniczanie wpływu użycia plików .htaccess na wydajność serwera (247)
  • 11.8. Wyłączenie negocjacji treści (249)
  • 11.9. Optymalizacja tworzenia procesów (250)
  • 11.10. Dobór parametrów tworzenia wątków (251)
  • 11.11. Buforowanie najczęściej przeglądanych plików (253)
  • 11.12. Równomierne rozłożenie obciążenia między kilka serwerów (254)
  • 11.13. Buforowanie list zawartości katalogu (256)
  • 11.14. Przyśpieszenie pracy programów Perl CGI za pomocą modułu mod_perl (257)
  • 11.15. Buforowanie treści dynamicznych (258)

12. Zawartość katalogów (261)

  • 12.1. Generowanie listy zawartości katalogu lub folderu (261)
  • 12.2. Wyświetlanie standardowego nagłówka i stopki dla listy zawartości katalogu (263)
  • 12.3. Wykorzystanie arkusza stylów (263)
  • 12.4. Ukrywanie wybranych elementów na liście zawartości (264)
  • 12.5. Wyszukiwanie konkretnych plików na liście zawartości katalogu (265)
  • 12.6. Sortowanie listy zawartości (265)
  • 12.7. Sortowanie listy zawartości w sposób wskazany przez klienta (266)
  • 12.8. Definiowanie sposobu formatowania listy zawartości (268)
  • 12.9. Definiowanie sposobu formatowania przez klienta (268)
  • 12.10. Dodawanie opisów plików (269)
  • 12.11. Automatyczne generowanie tytułów dokumentów (270)
  • 12.12. Zmiana ikon listy zawartości (270)
  • 12.13. Wyświetlanie katalogów na początku listy (271)
  • 12.14. Porządkowanie względem numeru wersji (272)
  • 12.15. Włączanie sortowania względem numeru wersji przez użytkownika (273)
  • 12.16. Przydzielenie użytkownikowi pełnej kontroli nad formatem listy zawartości (273)
  • 12.17. Wyłączenie możliwości modyfikowania listy zawartości przez użytkownika (274)
  • 12.18. Pomijanie wybranych kolumn na liście zawartości (275)
  • 12.19. Wyświetlanie plików chronionych hasłem (276)
  • 12.20. Wyświetlanie aliasów na liście zawartości (277)

13. Pozostałe zagadnienia (279)

  • 13.1. Poprawne umieszczanie dyrektyw (279)
  • 13.2. Zmiana nazw plików .htaccess (281)
  • 13.3. Tworzenie listy zawartości katalogu (282)
  • 13.4. Rozwiązanie "problemu końcowego ukośnika" (283)
  • 13.5. Ustalenie zawartości pola Content-Type w zależności od możliwości przeglądarki (285)
  • 13.6. Obsługa brakującego pola Host nagłówka (285)
  • 13.7. Inny domyślny dokument (286)
  • 13.8. Konfiguracja domyślnej "ulubionej ikony" (287)
  • 13.9. Wyświetlanie listy zawartości katalogów ScriptAlias (287)
  • 13.10. Włączanie obsługi plików .htaccess (289)
  • 13.11. Przekształcanie dyrektyw Server Side Includes z serwerów IBM lub Lotus do serwera Apache (290)

A: Użycie wyrażeń regularnych (291)

B: Rozwiązywanie problemów (297)

Skorowidz (307)

Kategoria: Serwery internetowe
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-246-5960-9
Rozmiar pliku: 4,5 MB

BESTSELLERY

Kategorie: