Facebook - konwersja
  • promocja

Big Data. Najlepsze praktyki budowy skalowalnych systemów obsługi danych w czasie rzeczywistym - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
18 lutego 2016
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.

Big Data. Najlepsze praktyki budowy skalowalnych systemów obsługi danych w czasie rzeczywistym - ebook

Obsługa aplikacji, które operują na ogromnych zbiorach danych, czyli na przykład portali społecznościowych, przekracza możliwości zwykłych relacyjnych baz. Praca ze złożonymi zbiorami danych wymaga architektury obejmującej wielomaszynowe klastry, dzięki którym możliwe jest przechowywanie i przesyłanie informacji praktycznie dowolnej wielkości. Architektura taka powinna dodatkowo być prosta w użyciu, niezawodna i skalowalna.

Dzięki tej książce nauczysz się budować tego rodzaju architekturę. Zapoznasz się z technologią wykorzystywania klastrów maszyn. Dowiesz się, jak działają narzędzia przeznaczone specjalnie do przechwytywania i analizy danych na wielką skalę. W książce zaprezentowano łatwe do zrozumienia podejście do obsługi systemów wielkich zbiorów danych, które mogą być budowane i uruchamiane przez niewielki zespół. Nie zabrakło też wyczerpującego opisu praktycznej implementacji systemu Big Data z wykorzystaniem rzeczywistego przykładu.

W tej książce znajdziesz:
  • teoretyczne podstawy koncepcji systemów Big Data
  • wskazówki umożliwiające optymalne wykorzystanie zasobów do obsługi danych
  • wybór technik przetwarzania i obsługi wielkich ilości danych w czasie rzeczywistym
  • zagadnienia dotyczące baz danych NoSQL, przetwarzania strumieniowego i zarządzania złożonością obliczeń przyrostowych
  • informacje o praktycznym stosowaniu takich narzędzi jak Hadoop, Cassandra i Storm
  • wskazówki umożliwiające poszerzenie wiedzy o zwykłych bazach danych

Big Data — to skalowalność i prostota obsługi wielkich ilości danych!

Spis treści

Przedmowa (11)

Podziękowania (13)

O książce (17)

Rozdział 1. Nowy paradygmat dla Big Data (19)

  • 1.1. Zawartość książki (20)
  • 1.2. Skalowanie tradycyjnej bazy danych (21)
    • 1.2.1. Skalowanie za pomocą kolejki (22)
    • 1.2.2. Skalowanie przez sharding bazy danych (22)
    • 1.2.3. Rozpoczynają się problemy z odpornością na błędy (23)
    • 1.2.4. Problemy z uszkodzeniem danych (24)
    • 1.2.5. Co poszło nie tak? (24)
    • 1.2.6. W jaki sposób techniki Big Data mogą pomóc? (24)
  • 1.3. NoSQL nie jest panaceum (25)
  • 1.4. Pierwsze zasady (25)
  • 1.5. Wymagane właściwości systemu Big Data (26)
    • 1.5.1. Niezawodność i odporność na błędy (26)
    • 1.5.2. Odczytywanie i aktualizowanie z niską latencją (27)
    • 1.5.3. Skalowalność (27)
    • 1.5.4. Uogólnienie (27)
    • 1.5.5. Rozszerzalność (27)
    • 1.5.6. Zapytania ad hoc (28)
    • 1.5.7. Minimalna konserwacja (28)
    • 1.5.8. Debugowalność (28)
  • 1.6. Problemy z architekturami w pełni przyrostowymi (29)
    • 1.6.1. Złożoność operacyjna (29)
    • 1.6.2. Ekstremalna złożoność osiągania spójności ostatecznej (30)
    • 1.6.3. Brak odporności na ludzkie błędy (32)
    • 1.6.4. Rozwiązanie w pełni przyrostowe w porównaniu z architekturą lambda (32)
  • 1.7. Architektura lambda (34)
    • 1.7.1. Warstwa przetwarzania wsadowego (36)
    • 1.7.2. Warstwa obsługująca (37)
    • 1.7.3. Warstwy przetwarzania wsadowego i obsługująca zapewniają niemal wszystkie właściwości (37)
    • 1.7.4. Warstwa przetwarzania czasu rzeczywistego (39)
  • 1.8. Najnowsze trendy w technologii (41)
    • 1.8.1. Procesory nie stają się coraz szybsze (42)
    • 1.8.2. Elastyczne chmury (42)
    • 1.8.3. Dynamiczny ekosystem open source dla Big Data (42)
  • 1.9. Przykładowa aplikacja: SuperWebAnalytics.com (44)
  • 1.10. Podsumowanie (44)

CZĘŚĆ I. WARSTWA PRZETWARZANIA WSADOWEGO (47)

Rozdział 2. Model danych dla Big Data (49)

  • 2.1. Właściwości danych (51)
    • 2.1.1. Dane są surowe (53)
    • 2.1.2. Dane są niemutowalne (56)
    • 2.1.3. Dane są wiecznie prawdziwe (59)
  • 2.2. Reprezentacja danych za pomocą modelu opartego na faktach (60)
    • 2.2.1. Przykładowe fakty i ich właściwości (60)
    • 2.2.2. Korzyści ze stosowania modelu opartego na faktach (62)
  • 2.3. Schematy graficzne (66)
    • 2.3.1. Elementy schematu graficznego (66)
    • 2.3.2. Potrzeba zapewnienia egzekwowalności schematu (67)
  • 2.4. Kompletny model danych dla aplikacji SuperWebAnalytics.com (68)
  • 2.5. Podsumowanie (70)

Rozdział 3. Model danych dla Big Data: ilustracja (71)

  • 3.1. Dlaczego framework serializacji? (72)
  • 3.2. Apache Thrift (72)
    • 3.2.1. Węzły (73)
    • 3.2.2. Krawędzie (73)
    • 3.2.3. Właściwości (74)
    • 3.2.4. Połączenie wszystkich elementów w obiekty danych (75)
    • 3.2.5. Ewolucja schematu (75)
  • 3.3. Ograniczenia frameworku serializacji (76)
  • 3.4. Podsumowanie (78)

Rozdział 4. Przechowywanie danych w warstwie przetwarzania wsadowego (79)

  • 4.1. Wymagania dotyczące przechowywania głównego zbioru danych (80)
  • 4.2. Wybór rozwiązania pamięci masowej dla warstwy przetwarzania wsadowego (81)
    • 4.2.1. Użycie magazynu danych klucz-wartość dla głównego zbioru danych (82)
    • 4.2.2. Rozproszone systemy plików (82)
  • 4.3. Sposób działania rozproszonych systemów plików (83)
  • 4.4. Przechowywanie głównego zbioru danych z wykorzystaniem rozproszonego systemu plików (85)
  • 4.5. Partycjonowanie pionowe (86)
  • 4.6. Niskopoziomowy charakter rozproszonych systemów plików (87)
  • 4.7. Przechowywanie głównego zbioru danych aplikacji SuperWebAnalytics.com w rozproszonym systemie plików (89)
  • 4.8. Podsumowanie (90)

Rozdział 5. Przechowywanie danych w warstwie przetwarzania wsadowego: ilustracja (91)

  • 5.1. Korzystanie z Hadoop Distributed File System (92)
    • 5.1.1. Problem małych plików (93)
    • 5.1.2. Dążenie do wyższego poziomu abstrakcji (93)
  • 5.2. Przechowywanie danych w warstwie przetwarzania wsadowego z wykorzystaniem biblioteki Pail (94)
    • 5.2.1. Podstawowe operacje biblioteki Pail (95)
    • 5.2.2. Serializacja i umieszczanie obiektów w wiaderkach (96)
    • 5.2.3. Operacje przetwarzania wsadowego z wykorzystaniem biblioteki Pail (98)
    • 5.2.4. Partycjonowanie pionowe z wykorzystaniem biblioteki Pail (99)
    • 5.2.5. Formaty plików i kompresja biblioteki Pail (100)
    • 5.2.6. Podsumowanie zalet biblioteki Pail (101)
  • 5.3. Przechowywanie głównego zbioru danych dla aplikacji SuperWebAnalytics.com (102)
    • 5.3.1. Ustrukturyzowane wiaderko dla obiektów Thrift (103)
    • 5.3.2. Podstawowe wiaderko dla aplikacji SuperWebAnalytics.com (104)
    • 5.3.3. Podział wiaderka w celu pionowego partycjonowania zbioru danych (104)
  • 5.4. Podsumowanie (107)

Rozdział 6. Warstwa przetwarzania wsadowego (109)

  • 6.1. Przykłady do rozważenia (110)
    • 6.1.1. Liczba odsłon w czasie (110)
    • 6.1.2. Inferencja płci (111)
    • 6.1.3. Punkty wpływu (111)
  • 6.2. Obliczenia w warstwie przetwarzania wsadowego (112)
  • 6.3. Porównanie algorytmów ponownego obliczania z algorytmami przyrostowymi (114)
    • 6.3.1. Wydajność (116)
    • 6.3.2. Odporność na ludzkie błędy (117)
    • 6.3.3. Ogólność algorytmów (117)
    • 6.3.4. Wybór stylu algorytmu (118)
  • 6.4. Skalowalność w warstwie przetwarzania wsadowego (119)
  • 6.5. MapReduce: paradygmat dla obliczeń Big Data (119)
    • 6.5.1. Skalowalność (121)
    • 6.5.2. Odporność na błędy (123)
    • 6.5.3. Ogólność MapReduce (123)
  • 6.6. Niskopoziomowy charakter MapReduce (125)
    • 6.6.1. Wieloetapowe obliczenia są nienaturalne (125)
    • 6.6.2. Operacje łączenia są bardzo skomplikowane do ręcznej implementacji (126)
    • 6.6.3. Wykonywanie logiczne jest ściśle powiązane z fizycznym (128)
  • 6.7. Diagramy potokowe: wyższy poziom sposobu myślenia na temat obliczeń wsadowych (129)
    • 6.7.1. Koncepcje diagramów potokowych (129)
    • 6.7.2. Wykonywanie diagramów potokowych poprzez MapReduce (134)
    • 6.7.3. Agregator łączący (134)
    • 6.7.4. Przykłady diagramów potokowych (136)
  • 6.8. Podsumowanie (136)

Rozdział 7. Warstwa przetwarzania wsadowego: ilustracja (139)

  • 7.1. Przykład ilustracyjny (140)
  • 7.2. Typowe pułapki narzędzi do przetwarzania danych (142)
    • 7.2.1. Języki niestandardowe (142)
    • 7.2.2. Słabo komponowalne abstrakcje (143)
  • 7.3. Wprowadzenie do JCascalog (144)
    • 7.3.1. Model danych JCascalog (144)
    • 7.3.2. Struktura zapytania JCascalog (145)
    • 7.3.3. Kwerendowanie wielu zbiorów danych (147)
    • 7.3.4. Grupowanie i agregatory (150)
    • 7.3.5. Analiza przykładowego zapytania (150)
    • 7.3.6. Niestandardowe operacje predykatów (153)
  • 7.4. Kompozycja (158)
    • 7.4.1. Łączenie podzapytań (158)
    • 7.4.2. Podzapytania tworzone dynamicznie (159)
    • 7.4.3. Makra predykatów (162)
    • 7.4.4. Makra predykatów tworzone dynamicznie (164)
  • 7.5. Podsumowanie (166)

Rozdział 8. Przykładowa warstwa przetwarzania wsadowego: architektura i algorytmy (167)

  • 8.1. Projekt warstwy przetwarzania wsadowego aplikacji SuperWebAnalytics.com (168)
    • 8.1.1. Obsługiwane zapytania (168)
    • 8.1.2. Obrazy wsadowe (169)
  • 8.2. Przegląd przepływu pracy (172)
  • 8.3. Przyjmowanie nowych danych (174)
  • 8.4. Normalizacja adresów URL (174)
  • 8.5. Normalizacja identyfikatorów użytkowników (175)
  • 8.6. Usuwanie zduplikowanych odsłon (180)
  • 8.7. Obliczanie obrazów wsadowych (180)
    • 8.7.1. Liczba odsłon w czasie (180)
    • 8.7.2. Liczba unikatowych użytkowników w czasie (181)
    • 8.7.3. Analiza współczynnika odrzuceń (182)
  • 8.8. Podsumowanie (183)

Rozdział 9. Przykładowa warstwa przetwarzania wsadowego: implementacja (185)

  • 9.1. Punkt startowy (186)
  • 9.2. Przygotowanie przepływu pracy (187)
  • 9.3. Przyjmowanie nowych danych (187)
  • 9.4. Normalizacja adresów URL (191)
  • 9.5. Normalizacja identyfikatorów użytkowników (192)
  • 9.6. Usuwanie zduplikowanych odsłon (197)
  • 9.7. Obliczanie obrazów wsadowych (197)
    • 9.7.1. Liczba odsłon w czasie (197)
    • 9.7.2. Liczba unikatowych użytkowników w czasie (200)
    • 9.7.3. Analiza współczynnika odrzuceń (201)
  • 9.8. Podsumowanie (204)

CZĘŚĆ II. WARSTWA OBSŁUGUJĄCA (205)

Rozdział 10. Warstwa obsługująca (207)

  • 10.1. Metryki wydajności dla warstwy obsługującej (209)
  • 10.2. Rozwiązanie warstwy obsługującej dotyczące problemu wyboru między normalizacją a denormalizacją (211)
  • 10.3. Wymagania względem bazy danych warstwy obsługującej (213)
  • 10.4. Projektowanie warstwy obsługującej dla aplikacji SuperWebAnalytics.com (215)
    • 10.4.1. Liczba odsłon w czasie (215)
    • 10.4.2. Liczba użytkowników w czasie (216)
    • 10.4.3. Analiza współczynnika odrzuceń (217)
  • 10.5. Porównanie z rozwiązaniem w pełni przyrostowym (217)
    • 10.5.1. W pełni przyrostowe rozwiązanie problemu liczby unikatowych użytkowników w czasie (218)
    • 10.5.2. Porównanie z rozwiązaniem opartym na architekturze lambda (224)
  • 10.6. Podsumowanie (224)

Rozdział 11. Warstwa obsługująca: ilustracja (227)

  • 11.1. Podstawy ElephantDB (228)
    • 11.1.1. Tworzenie obrazu w ElephantDB (228)
    • 11.1.2. Serwowanie obrazu w ElephantDB (229)
    • 11.1.3. Korzystanie z ElephantDB (229)
  • 11.2. Budowanie warstwy obsługującej dla aplikacji SuperWebAnalytics.com (231)
    • 11.2.1. Liczba odsłon w czasie (231)
    • 11.2.2. Liczba unikatowych użytkowników w czasie (234)
    • 11.2.3. Analiza współczynnika odrzuceń (235)
  • 11.3. Podsumowanie (236)

CZĘŚĆ III. WARSTWA PRZETWARZANIA CZASU RZECZYWISTEGO (237)

Rozdział 12. Obrazy czasu rzeczywistego (239)

  • 12.1. Obliczanie obrazów czasu rzeczywistego (241)
  • 12.2. Przechowywanie obrazów czasu rzeczywistego (242)
    • 12.2.1. Dokładność ostateczna (243)
    • 12.2.2. Ilość stanu przechowywanego w warstwie przetwarzania czasu rzeczywistego (244)
  • 12.3. Wyzwania obliczeń przyrostowych (245)
    • 12.3.1. Słuszność twierdzenia CAP (245)
    • 12.3.2. Kompleksowa interakcja między twierdzeniem CAP a algorytmami przyrostowymi (247)
  • 12.4. Porównanie aktualizacji asynchronicznych z synchronicznymi (249)
  • 12.5. Wygaszanie obrazów czasu rzeczywistego (250)
  • 12.6. Podsumowanie (253)

Rozdział 13. Obrazy czasu rzeczywistego: ilustracja (255)

  • 13.1. Model danych Cassandry (256)
  • 13.2. Korzystanie z bazy danych Cassandra (257)
    • 13.2.1. Zaawansowane funkcje Cassandry (259)
  • 13.3. Podsumowanie (259)

Rozdział 14. Kolejkowanie i przetwarzanie strumieniowe (261)

  • 14.1. Kolejkowanie (262)
    • 14.1.1. Serwery kolejek pojedynczego konsumenta (263)
    • 14.1.2. Kolejki wielu konsumentów (264)
  • 14.2. Przetwarzanie strumieniowe (265)
    • 14.2.1. Kolejki i procesy robocze (266)
    • 14.2.2. Pułapki paradygmatu "kolejki i procesy robocze" (267)
  • 14.3. Pojedyncze przetwarzanie strumieniowe wyższego poziomu (268)
    • 14.3.1. Model Storm (268)
    • 14.3.2. Zapewnianie przetwarzania komunikatów (272)
  • 14.4. Warstwa przetwarzania czasu rzeczywistego dla aplikacji SuperWebAnalytics.com (274)
    • 14.4.1. Struktura topologii (277)
  • 14.5. Podsumowanie (278)

Rozdział 15. Kolejkowanie i przetwarzanie strumieniowe: ilustracja (281)

  • 15.1. Definiowanie topologii za pomocą Apache Storm (281)
  • 15.2. Klastry Apache Storm i wdrażanie topologii (284)
  • 15.3. Gwarantowanie przetwarzania komunikatów (286)
  • 15.4. Implementacja warstwy przetwarzania czasu rzeczywistego aplikacji SuperWebAnalytics.com dla liczby unikatowych użytkowników w czasie (288)
  • 15.5. Podsumowanie (292)

Rozdział 16. Mikrowsadowe przetwarzanie strumieniowe (293)

  • 16.1. Osiąganie semantyki "dokładnie raz" (294)
    • 16.1.1. Ściśle uporządkowane przetwarzanie (294)
    • 16.1.2. Mikrowsadowe przetwarzanie strumieniowe (295)
    • 16.1.3. Topologie przetwarzania mikrowsadowego (296)
  • 16.2. Podstawowe koncepcje mikrowsadowego przetwarzania strumieniowego (299)
  • 16.3. Rozszerzanie diagramów potokowych dla przetwarzania mikrowsadowego (300)
  • 16.4. Dokończenie warstwy przetwarzania czasu rzeczywistego dla aplikacji SuperWebAnalytics.com (302)
    • 16.4.1. Liczba odsłon w czasie (302)
    • 16.4.2. Analiza współczynnika odrzuceń (302)
  • 16.5. Inne spojrzenie na przykład analizy współczynnika odrzuceń (307)
  • 16.6. Podsumowanie (308)

Rozdział 17. Mikrowsadowe przetwarzanie strumieniowe: ilustracja (309)

  • 17.1. Korzystanie z interfejsu Trident (310)
  • 17.2. Dokończenie warstwy przetwarzania czasu rzeczywistego dla aplikacji SuperWebAnalytics.com (313)
    • 17.2.1. Liczba odsłon w czasie (314)
    • 17.2.2. Analiza współczynnika odrzuceń (316)
  • 17.3. W pełni odporne na błędy przetwarzanie mikrowsadowe z utrzymywaniem stanu w pamięci (322)
  • 17.4. Podsumowanie (323)

Rozdział 18. Tajniki architektury lambda (325)

  • 18.1. Definiowanie systemów danych (325)
  • 18.2. Warstwa przetwarzania wsadowego i warstwa obsługująca (327)
    • 18.2.1. Przyrostowe przetwarzanie wsadowe (328)
    • 18.2.2. Pomiar i optymalizacja wykorzystania zasobów przez warstwę przetwarzania wsadowego (335)
  • 18.3. Warstwa przetwarzania czasu rzeczywistego (339)
  • 18.4. Warstwa zapytań (340)
  • 18.5. Podsumowanie (341)

Skorowidz (343)

Kategoria: Bazy danych
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-283-1895-3
Rozmiar pliku: 6,8 MB

BESTSELLERY

Kategorie: