Facebook - konwersja
Pobierz fragment

Praktyki mistrza SQL. Programowanie zaawansowane - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
16 października 2016
Format ebooka:
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.
, 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.
(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.
Pobierz fragment
119,00

Praktyki mistrza SQL. Programowanie zaawansowane - ebook

SQL jest narzędziem stworzonym specjalnie na potrzeby baz danych. Nauka tego języka wymaga dogłębnego zrozumienia mechanizmów relacyjnych baz danych. Co więcej, w przypadku dużych zbiorów danych lub zbiorów danych wymagających szczególnego traktowania pozornie nieznaczne usterki kodu SQL mogą prowadzić do istotnych problemów w użytkowaniu aplikacji.

Niniejsza książka jest przeznaczona dla aktywnych programistów SQL. Przedstawia zaawansowane techniki i idiomy programistyczne z obszaru tego języka. Pokazano w niej również, w jaki sposób można rozwiązywać problemy, które często pojawiają się w bazach danych. Prezentowane tu rozwiązania można implementować we właściwie wszystkich systemach bazodanowych korzystających z SQL. To klasyczny podręcznik, systematycznie uaktualniany, który doczekał się prawdziwego uznania wśród specjalistów.

W książce omówiono między innymi:
  • transakcje i kontrolę współbieżności
  • tabele i normalizację danych oraz widoki, tabele pomocnicze i tymczasowe
  • dane, operacje na danych, w tym na adresach IP, datach, danych tekstowych
  • zaawansowane techniki tworzenia kwerend
  • hierarchię w SQL, kolejki i macierze w SQL
  • nowości w wydaniu: model z podwójnym zapisem czasu, funkcje agregujące, rozwiązywanie problemów z instrukcjami DDL i wiele innych zagadnień

Skoro znasz SQL, to stań się jego ekspertem!


Joe Celko — uznany ekspert w dziedzinie baz danych. Z jego konsultacji korzystały m.in. służby medyczne, NASA, siły zbrojne USA. Autor wysoko cenionych książek dotyczących SQL. Napisał również ponad 1200 artykułów w prasie informatycznej i akademickiej. Większość tych tekstów dotyczyła danych i baz.

Spis treści

Wprowadzenie do wydania piątego (13)

CZĘŚĆ I. MECHANIZMY ZWIĄZANE Z DEKLAROWANIEM DANYCH (15)

1. Bazy danych a systemy plików (17)

  • 1.1. Instrukcja Schema (19)
  • 1.2. Tabele jako encje (24)
  • 1.3. Tabele jako relacje (24)
  • 1.4. Wiersze a rekordy (26)
  • 1.5. Kolumny a pola (27)

2. Transakcje i kontrola współbieżności (31)

  • 2.1. Sesje (32)
  • 2.2. Transakcje i model ACID (32)
  • 2.3. Kontrola współbieżności (34)
  • 2.4. Poziomy izolacji (36)
  • 2.5. Pesymistyczna kontrola współbieżności (38)
  • 2.6. Optymistyczna kontrola współbieżności za pomocą izolacji snapshotów (39)
  • 2.7. Logiczna kontrola współbieżności (42)
  • 2.8. Twierdzenie CAP (42)
  • 2.9. Model BASE (43)
  • 2.10. Spójność po stronie serwera (45)
  • 2.11. Obsługa błędów (46)
  • 2.12. Pasywne i aktywne zakleszczenie (46)

3. Tabele (49)

  • 3.1. Instrukcja CREATE TABLE (50)
  • 3.2. Definicje kolumn (52)
  • 3.3. Kolumny obliczane (63)
  • 3.4. Ograniczenia [NOT\ DEFERRABLE (64)
  • 3.5. Instrukcje CREATE DOMAIN i CREATE SEQUENCE (65)
  • 3.6. Konstrukcje związane z zestawem znaków (72)

4. Klucze, lokalizatory i generowane wartości (75)

  • 4.1. Typy kluczy (76)
  • 4.2. Praktyczne wskazówki związane z denormalizacją (79)

5. Normalizacja (85)

  • 5.1. Zależności funkcyjne i wielowartościowe (88)
  • 5.2. Pierwsza postać normalna (1NF) (88)
  • 5.3. Druga postać normalna (2NF) (93)
  • 5.4. Trzecia postać normalna (3NF) (94)
  • 5.5. Postać normalna z kluczem podstawowym (EKNF) (95)
  • 5.6. Postać normalna Boyce'a-Codda (BCNF) (96)
  • 5.7. Czwarta postać normalna (4NF) (98)
  • 5.8. Piąta postać normalna (5NF) (99)
  • 5.9. Postać normalna z kluczem dziedziny (DKNF) (101)
  • 5.10. Praktyczne wskazówki z zakresu normalizacji (108)
  • 5.11. Nadmiarowość, gdy nie jest używana postać normalna (109)

6. Widoki, tabele pochodne i inne tabele wirtualne (115)

  • 6.1. Widoki w kwerendach (116)
  • 6.2. Widoki modyfikowalne i tylko do odczytu (117)
  • 6.3. Typy widoków (118)
  • 6.4. Obsługa widoków w silnikach bazodanowych (124)
  • 6.5. Klauzula WITH CHECK OPTION (128)
  • 6.6. Usuwanie widoków (133)
  • 6.7. Tabele ze zmaterializowanymi wynikami kwerend (134)

7. Tabele pomocnicze (137)

  • 7.1. Tabela Series (138)
  • 7.2. Pomocnicze tabele wyszukiwania (143)
  • 7.3. Zaawansowane tabele pomocnicze z funkcjami (153)
  • 7.4. Globalne tabele stałych (164)
  • 7.5. Uwagi na temat przekształcania kodu proceduralnego na tabele (171)

8. Inne obiekty schematu (177)

  • 8.1. Instrukcja CREATE SCHEMA (179)
  • 8.2. Tabele schematu (180)
  • 8.3. Tabele tymczasowe (180)
  • 8.4. Instrukcja CREATE ASSERTION (180)
  • 8.5. Instrukcja CREATE DOMAIN (181)
  • 8.6. Instrukcja CREATE COLLATION (182)
  • 8.7. Instrukcja CREATE TRANSLATION (183)
  • 8.8. Instrukcja CREATE PROCEDURE (183)
  • 8.9. Wyzwalacze (183)
  • 8.10. Model działania wyzwalaczy (184)

9. Błędy, których należy unikać w instrukcjach DDL (193)

  • 9.1. Stosowanie skrótu "tbl" i powiązane błędy (193)
  • 9.2. Podział atrybutów (196)
  • 9.3. Problemy z przeciążaniem projektu (197)
  • 9.4. Nadmiarowość wynikająca z braku postaci normalnej (201)

CZĘŚĆ II. TYPY DANYCH (205)

10. Dane liczbowe w SQL-u (207)

  • 10.1. Dokładne liczbowe typy danych (208)
  • 10.2. Przybliżone liczbowe typy danych (213)
  • 10.3. Konwersje typów liczbowych (215)
  • 10.4. Arytmetyka oparta na czterech funkcjach (217)
  • 10.5. Przekształcanie wartości na NULL i dokonywanie odwrotnych konwersji (219)
  • 10.6. Funkcje matematyczne (222)
  • 10.7. Adresy IP (226)

11. Znakowe typy danych w SQL-u (229)

  • 11.1. Problemy z łańcuchami znaków w SQL-u (230)
  • 11.2. Standardowe funkcje znakowe (232)
  • 11.3. Często dostępne rozszerzenia od producentów (234)
  • 11.4. Tablice Cuttera (242)

12. SQL-owe typy danych związane z czasem (243)

  • 12.1. Uwagi na temat standardów związanych z kalendarzem (244)
  • 12.2. Natura modeli danych związanych z czasem (247)
  • 12.3. SQL-owe typy danych związane z czasem (248)
  • 12.4. Typy danych z rodziny INTERVAL (255)
  • 12.5. Kwerendy z operacjami arytmetycznymi na datach (256)
  • 12.6. Stosowanie wartości NULL do oznaczania "wieczności" (257)
  • 12.7. Predykat OVERLAPS() (258)
  • 12.8. Ograniczenia związane ze zmianami stanu (260)
  • 12.9. Tabele z kalendarzem (265)

13. Wielokolumnowe elementy danych (269)

  • 13.1. Elementy danych w postaci wektorów i współrzędnych (269)
  • 13.2. Hierarchiczne elementy danych (276)

14. Wartości NULL - brakujące dane w SQL-u (283)

  • 14.1. Puste i brakujące tabele (285)
  • 14.2. Brakujące wartości w kolumnach (285)
  • 14.3. Kontekst i brakujące wartości (287)
  • 14.4. Porównywanie wartości NULL (288)
  • 14.5. Wartości NULL i logika (289)
  • 14.6. Wartości NULL a obliczenia matematyczne (293)
  • 14.7. Funkcje związane z wartościami NULL (294)
  • 14.8. Wartości NULL a języki główne (294)
  • 14.9. Wskazówki projektowe związane z wartościami NULL (295)
  • 14.10. Uwagi na temat różnych rodzajów wartości NULL (298)

15. Operacje na tabelach (301)

  • 15.1. Instrukcja DELETE FROM (301)
  • 15.2. Instrukcja INSERT INTO (307)
  • 15.3. Instrukcja UPDATE (309)
  • 15.4. Uwaga na temat błędów w popularnych rozszerzeniach producentów (317)
  • 15.5. Instrukcja MERGE (318)

16. Operacje na zbiorach (321)

  • 16.1. UNION i UNION ALL (322)
  • 16.2. Operatory INTERSECT i EXCEPT (325)
  • 16.3. Uwagi na temat opcji ALL i SELECT DISTINCT (330)
  • 16.4. Równość i podzbiory właściwe (331)

CZĘŚĆ III. MECHANIZMY Z POZIOMU WIERSZY I KOLUMN (333)

17. Operatory porównywania (operatory theta) (335)

  • 17.1. Konwersja typów danych (336)
  • 17.2. Porównywanie wierszy w SQL-u (338)
  • 17.3. Operator IS [NOT\ DISTINCT FROM (340)
  • 17.4. Operatory monadyczne (341)

18. Predykaty dotyczące wyników podkwerend (345)

  • 18.1. Predykat UNIQUE (345)
  • 18.2. Predykat [NOT\ IN() (347)
  • 18.3. Predykat [NOT\ EXISTS() (357)
  • 18.4. [SOME | ANY\ (365)
  • 18.5. ALL (365)

19. Predykaty BETWEEN i OVERLAPS (369)

  • 19.1. Predykat BETWEEN (369)
  • 19.2. Predykat OVERLAPS (372)

20. Rodzina wyrażeń CASE (383)

  • 20.1. Wyrażenie CASE (383)
  • 20.2. Wyrażenia w postaci podkwerend i stałe (391)

21. Predykaty LIKE i SIMILAR TO (393)

  • 21.1. Sztuczki związane ze wzorcami (394)
  • 21.2. Wyniki dla wartości NULL i pustych łańcuchów znaków (396)
  • 21.3. Operator LIKE nie oznacza równości (396)
  • 21.4. Rozbudowywanie predykatu LIKE za pomocą złączenia (396)
  • 21.5. Wyrażenia CASE i predykaty LIKE (397)
  • 21.6. Predykat SIMILAR TO (397)
  • 21.7. Sztuczki związane z łańcuchami znaków (399)

22. Podstawowa instrukcja SELECT (403)

  • 22.1. Wyrażenia CTE (404)
  • 22.2. Klauzula FROM (405)
  • 22.3. Klauzula WHERE (405)
  • 22.4. Klauzula GROUP BY (406)
  • 22.5. Klauzula HAVING (406)
  • 22.6. Klauzula SELECT (407)
  • 22.7. Klauzula ORDER BY (407)
  • 22.8. Wyrażenie z zagnieżdżonymi kwerendami a ortogonalność (407)

23. Podstawowe funkcje agregujące (409)

  • 23.1. Funkcje z rodziny COUNT() (410)
  • 23.2. Funkcja SUM() (414)
  • 23.3. Funkcja AVG() (415)
  • 23.4. Funkcje zwracające ekstrema (419)
  • 23.5. Funkcja agregująca LIST() (427)
  • 23.6. Funkcja agregująca wyznaczająca dominantę (429)
  • 23.7. Funkcja agregująca zwracająca medianę (430)
  • 23.8. Funkcja agregująca PRD() (432)

24. Zaawansowane statystyki opisowe (437)

  • 24.1. Funkcje dla tabel dwukolumnowych (437)
  • 24.2. Korelacja (439)

25. Używanie SQL-a do agregacji w systemach OLAP (441)

  • 25.1. Kwerendy a raporty (441)
  • 25.2. Operatory grupowania (442)
  • 25.3. Klauzula okna (445)
  • 25.4. Funkcje agregujące oparte na oknie (449)
  • 25.5. Funkcje porządkowe (449)
  • 25.6. Rozszerzenia udostępniane przez producentów (452)
  • 25.7. Kartka z historii (456)

26. Zaawansowane instrukcje SELECT (459)

  • 26.1. Podkwerendy skorelowane (459)
  • 26.2. Wrostkowe złączenia wewnętrzne (464)
  • 26.3. Złączenia zewnętrzne (465)
  • 26.4. Operator UNION JOIN (477)
  • 26.5. Skalarne wyrażenia SELECT (479)
  • 26.6. Dawna i nowa składnia złączeń (480)
  • 26.7. Złączenia z ograniczeniami (481)
  • 26.8. Złączenia T dr. Codda (490)
  • 26.9. Brakujące wartości w danych (496)
  • 26.10. Brakujące i mieszane dane w wierszach (501)

CZĘŚĆ IV. STRUKTURY DANYCH W SQL-U (503)

27. Grafy w SQL-u (505)

  • 27.1. Podstawowe cechy grafów (506)
  • 27.2. Ścieżki w grafie (510)
  • 27.3. Grafy acykliczne jako zbiory zagnieżdżone (517)
  • 27.4. Model wykorzystujący macierz sąsiedztwa (519)
  • 27.5. Punkty w wielokącie (520)
  • 27.6. Geometria taksówkowa (521)
  • 27.7. Klasy równoważności i kliki (524)
  • 27.8. Podsumowanie (532)

28. Drzewa i hierarchie w SQL-u (533)

  • 28.1. Listy sąsiedztwa (534)
  • 28.2. Znajdowanie korzenia (535)
  • 28.3. Znajdowanie liści (536)
  • 28.4. Określanie poziomów w drzewie (536)
  • 28.5. Operacje na drzewach (537)
  • 28.6. Model oparty na zbiorach zagnieżdżonych (538)
  • 28.7. Znajdowanie korzenia i liści (541)
  • 28.8. Wyszukiwanie poddrzew (541)
  • 28.9. Wyszukiwanie poziomów i ścieżek w drzewie (542)
  • 28.10. Funkcje w modelu wykorzystującym zbiory zagnieżdżone (545)
  • 28.11. Usuwanie wierzchołków i poddrzew (546)
  • 28.12. Przegląd funkcji dotyczących drzew (548)
  • 28.13. Wstawianie i aktualizowanie elementów drzew (554)
  • 28.14. Przekształcanie list sąsiedztwa na zbiory zagnieżdżone (558)
  • 28.15. Przekształcanie zbiorów zagnieżdżonych na listy sąsiedztwa (558)
  • 28.16. Porównywanie wierzchołków i struktur (559)

29. Kolejki (563)

  • 29.1. Podstawowe instrukcje DDL (563)
  • 29.2. Procedury Enqueue, Dequeue i Empty (564)
  • 29.3. Zmienianie uporządkowania (565)
  • 29.4. Kolejki i matematyka (566)
  • 29.5. Kolejki priorytetowe (567)
  • 29.6. Kolejki FIFO i LIFO (568)

30. Macierze w SQL-u (573)

  • 30.1. Tablice oparte na nazwanych kolumnach (574)
  • 30.2. Tablice oparte na kolumnach z indeksem (577)
  • 30.3. Operacje na macierzach w SQL-u (579)
  • 30.4. Spłaszczanie tabeli do postaci tablicy (583)
  • 30.5. Porównywanie tablic zapisanych jako tabele (585)
  • 30.6. Inne operacje na macierzach (587)

CZĘŚĆ V. TYPOWE KWERENDY (589)

31. Partycjonowanie i agregowanie danych w kwerendach (591)

  • 31.1. Pokrycie i partycje (591)
  • 31.2. Zaawansowane grupowanie, agregowanie z uwzględnieniem okien i funkcje OLAP w SQL-u (596)

32. Podsekwencje, obszary, serie, luki i wyspy (613)

  • 32.1. Znajdowanie podobszarów o wielkości (n) (614)
  • 32.2. Numerowanie obszarów (615)
  • 32.3. Wyszukiwanie obszarów o maksymalnej wielkości (617)
  • 32.4. Kwerendy z granicami (621)
  • 32.5. Kwerendy dotyczące serii i sekwencji (621)
  • 32.6. Sumowanie ręcznie generowanych sekwencji wartości (626)
  • 32.7. Przestawianie i przesuwanie wartości na liście (629)
  • 32.8. Eliminowanie luk na listach liczb (630)
  • 32.9. "Zawijanie" listy liczb (630)
  • 32.10. Pokrycia (631)
  • 32.11. Klasy równoważności i kliki (635)

33. Aukcje (645)

  • 33.1. Rodzaje ofert (645)
  • 33.2. Typy aukcji (646)
  • 33.3. Stosowanie modeli LIFO i FIFO w magazynach (648)
  • 33.4. Problem pakowania (653)

34. Dzielenie relacji (655)

  • 34.1. Dzielenie z resztą (656)
  • 34.2. Dzielenie bez reszty (658)
  • 34.3. Uwaga na temat wydajności (659)
  • 34.4. Dzielenie Todda (659)
  • 34.5. Dzielenie z użyciem złączeń (662)
  • 34.6. Dzielenie z wykorzystaniem operatorów zbiorów (662)
  • 34.7. Dzielenie Romleya (663)
  • 34.8. Wyrażenia logiczne w dzieleniu relacji (666)

35. Kwerendy związane z czasem (669)

  • 35.1. Obliczenia matematyczne na czasie (670)
  • 35.2. Kalendarze (674)
  • 35.3. Szeregi czasowe (677)
  • 35.4. Daty w formacie juliańskim (691)
  • 35.5. Inne funkcje związane z czasem (694)
  • 35.6. Okresy obejmujące wiele dni (694)
  • 35.7. Reprezentowanie czasu w tabelach (698)
  • 35.8. Funkcje LEAD() i LAG() (700)
  • 35.9. Problemy z rokiem 2000 - przegląd historyczny (701)

CZĘŚĆ VI. KWESTIE ZWIĄZANE Z IMPLEMENTACJĄ I KODOWANIEM (707)

36. Programowanie proceduralne, mieszane i deklaratywne w SQL-u (709)

  • 36.1. Słowa mają znaczenie (710)
  • 36.2. Porządkowanie kodu (711)

37. Poziomy zagnieżdżania w SQL-u (717)

  • 37.1. Tabele pochodne (718)
  • 37.2. Reguły tworzenia nazw kolumn (719)
  • 37.3. Reguły określania zasięgu (720)
  • 37.4. Dostępne nazwy tabel (722)
  • 37.5. Wyrażenia CTE (723)
  • 37.6. Tabele z klauzulą LATERAL (723)
  • 37.7. Wskazówki programistyczne (725)

38. Zagnieżdżony SQL, dynamiczny SQL z interfejsem CLI oraz SQL/PSM (727)

  • 38.1. Zagnieżdżony SQL (728)
  • 38.2. SQL/CLI (729)
  • 38.3. Dynamiczny SQL (729)
  • 38.4. Historia standardu SQL/PSM (729)
  • 38.5. Parametry w formacie CSV (738)

Skorowdz (744)

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-2531-9
Rozmiar pliku: 15 MB

BESTSELLERY

Kategorie: