Opis książki: Scala Cookbook. 2nd Edition
Save time and trouble building object-oriented, functional, and concurrent applications with Scala. The latest edition of this comprehensive cookbook is packed with more than 250 ready-to-use recipes and 1,000 code examples to help you solve the most common problems when working with Scala 3 and its popular libraries.
Scala changes the way you think about programming--and that's a good thing. Whether you're working on web, big data, or distributed applications, this cookbook provides recipes based on real-world scenarios for both experienced Scala developers and programmers just learning to use this JVM language. Author Alvin Alexander includes practical solutions from his experience using Scala for component-based, highly scalable applications that support concurrency and distribution.
Recipes cover:
- Strings, numbers, and control structures
- Classes, methods, objects, traits, packaging, and imports
- Functional programming techniques
- Scala's wealth of collections classes and methods
- Building and publishing Scala applications with sbt
- Actors and concurrency with Scala Future and Akka Typed
- Popular libraries, including Spark, Scala.js, Play Framework, and GraalVM
- Types, such as variance, givens, intersections, and unions
- Best practices, including pattern matching, modules, and functional error handling
Wybrane bestsellery
-
Ta książka jest kolejnym, zaktualizowanym i uzupełnionym wydaniem kultowego podręcznika dla profesjonalnych programistów Javy. To pierwszy tom, w którym opisano podstawy języka i najważniejsze zagadnienia związane z programowaniem interfejsu użytkownika, a także kolekcje, wyrażenia lambda, techni...(0,00 zł najniższa cena z 30 dni)
77.40 zł
129.00 zł(-40%) -
Język Java jest konsekwentnie udoskonalany i unowocześniany dzięki zaangażowaniu wielu ludzi. Nowoczesny język Java staje się coraz bardziej wieloparadygmatowy, co oznacza, że stosowanie najlepszych praktyk w coraz większym stopniu determinuje jakość kodu. Obecnie napisanie kodu, który prawidłowo...(0,00 zł najniższa cena z 30 dni)
59.40 zł
99.00 zł(-40%) -
Ta książka jest ósmym wydaniem znakomitego podręcznika programowania dla początkujących, starannie zaktualizowanym i uzupełnionym o informacje dotyczące edycji 11. Zawiera podstawową wiedzę o kompilacji i uruchamianiu programu w Javie oraz o słowach kluczowych i istotnych konstrukcjach w tym języ...(0,00 zł najniższa cena z 30 dni)
59.40 zł
99.00 zł(-40%) -
To dwunaste, rozszerzone wydanie znakomitego podręcznika do nauki Javy, w pełni przejrzane, poprawione i zaktualizowane (uwzględnia nowości wprowadzone w Javie SE 9, 10 i 11). Ułatwia zdobycie solidnych podstaw języka i płynne przejście do tworzenia programów służących do rozwiązywania konkretnyc...
Wprowadzenie do Javy. Programowanie i struktury danych. Wydanie XII Wprowadzenie do Javy. Programowanie i struktury danych. Wydanie XII
(0,00 zł najniższa cena z 30 dni)59.90 zł
199.00 zł(-70%) -
To kolejne, uzupełnione i zaktualizowane wydanie przewodnika po frameworku Spring. Książka jest napisana w zwięzłym, przejrzystym i jasnym stylu, dzięki czemu szybko zrozumiesz zasady pracy ze Springiem i zbudujesz nowoczesną aplikację internetową współpracującą z bazą danych. Pokazano tu technik...(0,00 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Ta książka jest jedenastym wydaniem wyczerpującego kompendium programisty Javy, w pełni zaktualizowanym, uzupełnionym o nowości wprowadzone w Java SE 11. Opisuje język kompleksowo: jego składnię, słowa kluczowe oraz najistotniejsze zasady programowania. Zawiera także informacje o najważniejszych ...(0,00 zł najniższa cena z 30 dni)
119.40 zł
199.00 zł(-40%) -
Matematyka nie jest ulubioną dziedziną wiedzy większości ludzi, a społeczność informatyczna nie stanowi tu wyjątku. Funkcje matematyczne, obliczenia statystyczne, działania na macierzach — każda z tych czynności może wywołać popłoch nawet wśród najbardziej doświadczonych programistów, z wie...(0,00 zł najniższa cena z 30 dni)
53.40 zł
89.00 zł(-40%) -
Oto kolejne, przejrzane, zaktualizowane i uzupełnione wydanie znakomitego podręcznika dla zawodowych programistów Javy. Znalazł się tu dokładny opis sposobów tworzenia interfejsu użytkownika, stosowania rozwiązań korporacyjnych, sieciowych i zabezpieczeń, a także nowości wprowadzonych w JDK 11. P...(0,00 zł najniższa cena z 30 dni)
89.40 zł
149.00 zł(-40%) -
Algorytm jest pojęciem ściśle związanym z programowaniem. Jak podaje definicja, algorytm to skończony ciąg jasno zdefiniowanych czynności koniecznych do wykonania pewnego rodzaju zadań. W efekcie ich wykonania następuje rozwiązanie postawionego problemu. Brzmi informatycznie? Oczywiście - wszak a...
Algorytmy i struktury danych. Kurs video. Java, JavaScript, Python Algorytmy i struktury danych. Kurs video. Java, JavaScript, Python
(0,00 zł najniższa cena z 30 dni)44.50 zł
89.00 zł(-50%) -
W tej książce opisano wiele funkcjonalności, narzędzi i procedur, dzięki którym można poprawić efektywność kodu napisanego w Javie 8 i 11 LTS. Główny nacisk położono na zagadnienia istotne dla środowisk produkcyjnych, ale przedstawiono również ciekawe nowe technologie, takie jak kompilacja z wypr...
Wydajność Javy. Szczegółowe porady dotyczące programowania i strojenia aplikacji w Javie. Wydanie II Wydajność Javy. Szczegółowe porady dotyczące programowania i strojenia aplikacji w Javie. Wydanie II
(0,00 zł najniższa cena z 30 dni)47.40 zł
79.00 zł(-40%)
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
- ISBN Ebooka:
- 978-14-920-5149-7, 9781492051497
- Data wydania ebooka:
-
2021-08-10
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.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 3.5MB
- Rozmiar pliku Mobi:
- 11.2MB
- Kategorie:
Programowanie » Java - Programowanie
Spis treści książki
- Preface
- Conventions Used in This Book
- Using Code Examples
- OReilly Online Learning
- How to Contact Us
- 1. Command-Line Tasks
- 1.1. Getting Started with the Scala REPL
- 1.2. Loading Source Code and JAR Files into the REPL
- 1.3. Getting Started with the Ammonite REPL
- 1.4. Compiling with scalac and Running with scala
- 1.5. Disassembling and Decompiling Scala Code
- 1.6. Running JAR Files with Scala and Java
- 2. Strings
- 2.1. Testing String Equality
- 2.2. Creating Multiline Strings
- 2.3. Splitting Strings
- 2.4. Substituting Variables into Strings
- 2.5. Formatting String Output
- 2.6. Processing a String One Character at a Time
- 2.7. Finding Patterns in Strings
- 2.8. Replacing Patterns in Strings
- 2.9. Extracting Parts of a String That Match Patterns
- 2.10. Accessing a Character in a String
- 2.11. Creating Your Own String Interpolator
- 2.12. Creating Random Strings
- 3. Numbers and Dates
- 3.1. Parsing a Number from a String
- 3.2. Converting Between Numeric Types (Casting)
- 3.3. Overriding the Default Numeric Type
- 3.4. Replacements for ++ and
- 3.5. Comparing Floating-Point Numbers
- 3.6. Handling Large Numbers
- 3.7. Generating Random Numbers
- 3.8. Formatting Numbers and Currency
- 3.9. Creating New Date and Time Instances
- 3.10. Calculating the Difference Between Two Dates
- 3.11. Formatting Dates
- 3.12. Parsing Strings into Dates
- 4. Control Structures
- for Loops and for Expressions
- if/then/else-if Expressions
- match Expressions and Pattern Matching
- try/catch/finally Blocks
- while Loops
- Control Structures as a Defining Feature of Programming Languages
- 4.1. Looping over Data Structures with for
- 4.2. Using for Loops with Multiple Counters
- 4.3. Using a for Loop with Embedded if Statements (Guards)
- 4.4. Creating a New Collection from an Existing Collection with for/yield
- 4.5. Using the if Construct Like a Ternary Operator
- 4.6. Using a Match Expression Like a switch Statement
- 4.7. Matching Multiple Conditions with One Case Statement
- 4.8. Assigning the Result of a Match Expression to a Variable
- 4.9. Accessing the Value of the Default Case in a Match Expression
- 4.10. Using Pattern Matching in Match Expressions
- 4.11. Using Enums and Case Classes in match Expressions
- 4.12. Adding if Expressions (Guards) to Case Statements
- 4.13. Using a Match Expression Instead of isInstanceOf
- 4.14. Working with a List in a Match Expression
- 4.15. Matching One or More Exceptions with try/catch
- 4.16. Declaring a Variable Before Using It in a try/catch/finally Block
- 4.17. Creating Your Own Control Structures
- 5. Classes
- Classes and Case Classes
- 5.1. Choosing from Domain Modeling Options
- 5.2. Creating a Primary Constructor
- 5.3. Controlling the Visibility of Constructor Fields
- 5.4. Defining Auxiliary Constructors for Classes
- 5.5. Defining a Private Primary Constructor
- 5.6. Providing Default Values for Constructor Parameters
- 5.7. Handling Constructor Parameters When Extending a Class
- 5.8. Calling a Superclass Constructor
- 5.9. Defining an equals Method (Object Equality)
- 5.10. Preventing Accessor and Mutator Methods from Being Generated
- 5.11. Overriding Default Accessors and Mutators
- 5.12. Assigning a Block or Function to a (lazy) Field
- 5.13. Setting Uninitialized var Field Types
- 5.14. Generating Boilerplate Code with Case Classes
- 5.15. Defining Auxiliary Constructors for Case Classes
- 6. Traits and Enums
- 6.1. Using a Trait as an Interface
- 6.2. Defining Abstract Fields in Traits
- 6.3. Using a Trait Like an Abstract Class
- 6.4. Using Traits as Mixins
- 6.5. Resolving Method Name Conflicts and Understanding super
- 6.6. Marking Traits So They Can Only Be Used by Subclasses of a Certain Type
- 6.7. Ensuring a Trait Can Only Be Added to a Type That Has a Specific Method
- 6.8. Limiting Which Classes Can Use a Trait by Inheritance
- 6.9. Working with Parameterized Traits
- 6.10. Using Trait Parameters
- 6.11. Using Traits to Create Modules
- 6.12. How to Create Sets of Named Values with Enums
- 6.13. Modeling Algebraic Data Types with Enums
- 7. Objects
- 7.1. Casting Objects
- 7.2. Passing a Class Type with the classOf Method
- 7.3. Creating Singletons with object
- 7.4. Creating Static Members with Companion Objects
- 7.5. Using apply Methods in Objects as Constructors
- 7.6. Implementing a Static Factory with apply
- 7.7. Reifying Traits as Objects
- 7.8. Implementing Pattern Matching with unapply
- 8. Methods
- 8.1. Controlling Method Scope (Access Modifiers)
- 8.2. Calling a Method on a Superclass or Trait
- 8.3. Using Parameter Names When Calling a Method
- 8.4. Setting Default Values for Method Parameters
- 8.5. Creating Methods That Take Variable-Argument Fields
- 8.6. Forcing Callers to Leave Parentheses Off Accessor Methods
- 8.7. Declaring That a Method Can Throw an Exception
- 8.8. Supporting a Fluent Style of Programming
- 8.9. Adding New Methods to Closed Classes with Extension Methods
- 9. Packaging and Imports
- 9.1. Packaging with the Curly Braces Style Notation
- 9.2. Importing One or More Members
- 9.3. Renaming Members on Import
- 9.4. Hiding a Class During the Import Process
- 9.5. Importing Static Members
- 9.6. Using Import Statements Anywhere
- 9.7. Importing Givens
- 10. Functional Programming
- 10.1. Using Function Literals (Anonymous Functions)
- 10.2. Passing Functions Around as Variables
- 10.3. Defining a Method That Accepts a Simple Function Parameter
- 10.4. Declaring More Complex Higher-Order Functions
- 10.5. Using Partially Applied Functions
- 10.6. Creating a Method That Returns a Function
- 10.7. Creating Partial Functions
- 10.8. Implementing Functional Error Handling
- 10.9. Real-World Example: Passing Functions Around in an Algorithm
- 10.10. Real-World Example: Functional Domain Modeling
- 11. Collections: Introduction
- Understanding the Collections Hierarchy
- 11.1. Choosing a Collections Class
- 11.2. Understanding the Performance of Collections
- 11.3. Understanding Mutable Variables with Immutable Collections
- 11.4. Creating a Lazy View on a Collection
- 12. Collections: Common Sequence Classes
- 12.1. Making Vector Your Go-To Immutable Sequence
- 12.2. Creating and Populating a List
- 12.3. Adding Elements to a List
- 12.4. Deleting Elements from a List (or ListBuffer)
- 12.5. Creating a Mutable List with ListBuffer
- 12.6. Using LazyList, a Lazy Version of a List
- 12.7. Making ArrayBuffer Your Go-To Mutable Sequence
- 12.8. Deleting Array and ArrayBuffer Elements
- 12.9. Creating and Updating an Array
- 12.10. Creating Multidimensional Arrays
- 12.11. Sorting Arrays
- 13. Collections: Common Sequence Methods
- Predicate
- Anonymous Functions
- Implied Loops
- Recipes in This Chapter
- 13.1. Choosing a Collection Method to Solve a Problem
- 13.2. Looping Over a Collection with foreach
- 13.3. Using Iterators
- 13.4. Using zipWithIndex or zip to Create Loop Counters
- 13.5. Transforming One Collection to Another with map
- 13.6. Flattening a List of Lists with flatten
- 13.7. Using filter to Filter a Collection
- 13.8. Extracting a Sequence of Elements from a Collection
- 13.9. Splitting Sequences into Subsets
- 13.10. Walking Through a Collection with the reduce and fold Methods
- 13.11. Finding the Unique Elements in a Sequence
- 13.12. Merging Sequential Collections
- 13.13. Randomizing a Sequence
- 13.14. Sorting a Collection
- 13.15. Converting a Collection to a String with mkString and addString
- 14. Collections: Using Maps
- 14.1. Creating and Using Maps
- 14.2. Choosing a Map Implementation
- 14.3. Adding, Updating, and Removing Immutable Map Elements
- 14.4. Adding, Updating, and Removing Elements in Mutable Maps
- 14.5. Accessing Map Values (Without Exceptions)
- 14.6. Testing for the Existence of a Key or Value in a Map
- 14.7. Getting the Keys or Values from a Map
- 14.8. Finding the Largest (or Smallest) Key or Value in a Map
- 14.9. Traversing a Map
- 14.10. Sorting an Existing Map by Key or Value
- 14.11. Filtering a Map
- 15. Collections: Tuple, Range, Set,
Stack, and Queue
- 15.1. Creating Heterogeneous Lists with Tuples
- 15.2. Creating Ranges
- 15.3. Creating a Set and Adding Elements to It
- 15.4. Deleting Elements from Sets
- 15.5. Storing Values in a Set in Sorted Order
- 15.6. Creating and Using a Stack
- 15.7. Creating and Using a Queue
- 16. Files and Processes
- 16.1. Reading Text Files
- 16.2. Writing Text Files
- 16.3. Reading and Writing Binary Files
- 16.4. Pretending That a String Is a File
- 16.5. Serializing and Deserializing Objects to Files
- 16.6. Listing Files in a Directory
- 16.7. Executing External Commands
- 16.8. Executing External Commands and Reading Their STDOUT
- 16.9. Handling Both STDOUT and STDERR of Commands
- 16.10. Building a Pipeline of External Commands
- 17. Building Projects with sbt
- 17.1. Creating a Project Directory Structure for sbt
- 17.2. Building Projects with the sbt Command
- 17.3. Understanding build.sbt Syntax Styles
- 17.4. Compiling, Running, and Packaging a Scala Project
- 17.5. Understanding Other sbt Commands
- 17.6. Continuous Compiling and Testing
- 17.7. Managing Dependencies with sbt
- 17.8. Controlling Which Version of a Managed Dependency Is Used
- 17.9. Generating Project API Documentation
- 17.10. Specifying a Main Class to Run with sbt
- 17.11. Deploying a Single Executable JAR File
- 17.12. Publishing Your Library
- 18. Concurrency with Scala Futures and Akka Actors
- 18.1. Creating a Future
- 18.2. Using Callback and Transformation Methods with Futures
- 18.3. Writing Methods That Return Futures
- 18.4. Running Multiple Futures in Parallel
- 18.5. Creating OOP-Style Actors
- 18.6. Creating FP-Style Actors
- 18.7. Sending Messages to Actors
- 18.8. Creating Actors That Have Multiple States (FSM)
- 19. Play Framework and Web Services
- 19.1. Creating a Play Framework Project
- 19.2. Creating a New Play Framework Endpoint
- 19.3. Returning JSON from a GET Request with Play
- 19.4. Serializing a Scala Object to a JSON String
- 19.5. Deserializing JSON into a Scala Object
- 19.6. Using the Play JSON Library Outside of the Play Framework
- 19.7. Using the sttp HTTP Client
- 20. Apache Spark
- 20.1. Getting Started with Spark
- 20.2. Reading a File into a Spark RDD
- 20.3. Reading a CSV File into a Spark RDD
- 20.4. Using Spark Like a Database with DataFrames
- 20.5. Reading Data Files into a Spark DataFrame
- 20.6. Using Spark SQL Queries Against Multiple Files
- 20.7. Creating a Spark Batch Application
- 21. Scala.js, GraalVM, and jpackage
- 21.1. Getting Started with Scala.js
- 21.2. Responding to Events with Scala.js
- 21.3. Building Single-Page Applications with Scala.js
- 21.4. Building Native Executables with GraalVM
- 21.5. Bundling Your Application with jpackage
- 22. Integrating Scala with Java
- 22.1. Using Java Collections in Scala
- 22.2. Using Scala Collections in Java
- 22.3. Using Java Optional Values in Scala
- 22.4. Using Scala Option Values in Java
- 22.5. Using Scala Traits in Java
- 22.6. Using Java Interfaces in Scala
- 22.7. Adding Exception Annotations to Scala Methods
- 22.8. Annotating varargs Methods to Work with Java
- 22.9. Using @SerialVersionUID and Other Annotations
- 23. Types
- 23.1. Creating a Method That Takes a Simple Generic Type
- 23.2. Creating Classes That Use Simple Generic Types
- 23.3. Making Immutable Generic Parameters Covariant
- 23.4. Creating a Class Whose Generic Elements Can Be Mutated
- 23.5. Creating a Class Whose Parameters Implement a Base Type
- 23.6. Using Duck Typing (Structural Types)
- 23.7. Creating Meaningful Type Names with Opaque Types
- 23.8. Using Term Inference with given and using
- 23.9. Simulating Dynamic Typing with Union Types
- 23.10. Declaring That a Value Is a Combination of Types
- 23.11. Controlling How Classes Can Be Compared with Multiversal Equality
- 23.12. Limiting Equality Comparisons with the CanEqual Typeclass
- 24. Best Practices
- 24.1. Writing Pure Functions
- 24.2. Using Immutable Variables and Collections
- 24.3. Writing Expressions (Instead of Statements)
- 24.4. Using Match Expressions and Pattern Matching
- 24.5. Eliminating null Values from Your Code
- 24.6. Using Scalas Error-Handling Types (Option, Try, and Either)
- 24.7. Building Modular Systems
- 24.8. Handling Option Values with Higher-Order Functions
- Index
O'Reilly Media - inne książki
-
Why are so many companies adopting GitOps for their DevOps and cloud native strategy? This reliable framework is quickly becoming the standard method for deploying apps to Kubernetes. With this practical, developer-oriented book, DevOps engineers, developers, IT architects, and SREs will learn th...(0,00 zł najniższa cena z 30 dni)
271.15 zł
319.00 zł(-15%) -
Learn the essentials of working with Flutter and Dart to build full stack applications that meet the needs of a cloud-driven world. Together, the Flutter open source UI software development kit and the Dart programming language for client development provide a unified solution to building applica...(0,00 zł najniższa cena z 30 dni)
228.65 zł
269.00 zł(-15%) -
The Rust programming language is extremely well suited for concurrency, and its ecosystem has many libraries that include lots of concurrent data structures, locks, and more. But implementing those structures correctly can be very difficult. Even in the most well-used libraries, memory ordering b...(0,00 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
More organizations than ever understand the importance of data lake architectures for deriving value from their data. Building a robust, scalable, and performant data lake remains a complex proposition, however, with a buffet of tools and options that need to work together to provide a seamless e...(0,00 zł najniższa cena z 30 dni)
228.65 zł
269.00 zł(-15%) -
The cloud promises cost savings, agility, and more. But the increasing complexity of modern IT systems often prevents businesses from realizing the outcomes they sought by moving to the cloud in the first place. At the core of this complexity is technical debt. Ad hoc decisions, traditional appro...(0,00 zł najniższa cena z 30 dni)
160.65 zł
189.00 zł(-15%) -
This philosophy-of-programming guide presents a unique and entertaining take on how to think about programming. A collection of 21 pragmatic rules, each presented in a standalone chapter, captures the essential wisdom that every freshly minted programmer needs to know and provides thought-provoki...(0,00 zł najniższa cena z 30 dni)
160.65 zł
189.00 zł(-15%) -
If you've started to work with Raspberry Pi, you know that Raspberry Pi's capabilities are continually expanding. The fourth edition of this popular cookbook provides more than 200 hands-on recipes (complete with code) that show you how to run this tiny low-cost computer with Linux, program it wi...(0,00 zł najniższa cena z 30 dni)
228.65 zł
269.00 zł(-15%) -
How do you turn raw, unprocessed, or malformed data into dynamic, interactive web visualizations? In this practical book, author Kyran Dale shows data scientists and analysts--as well as Python and JavaScript developers--how to create the ideal toolchain for the job. By providing engaging example...
Data Visualization with Python and JavaScript. 2nd Edition Data Visualization with Python and JavaScript. 2nd Edition
(0,00 zł najniższa cena z 30 dni)228.65 zł
269.00 zł(-15%) -
Python is a first-class tool for many researchers, primarily because of its libraries for storing, manipulating, and gaining insight from data. Several resources exist for individual pieces of this data science stack, but only with the new edition of Python Data Science Handbook do you get them a...(0,00 zł najniższa cena z 30 dni)
271.15 zł
319.00 zł(-15%) -
Is Kubernetes ready for stateful workloads? This open source system has become the primary platform for deploying and managing cloud native applications. But because it was originally designed for stateless workloads, working with data on Kubernetes has been challenging. If you want to avoid the ...(0,00 zł najniższa cena z 30 dni)
237.15 zł
279.00 zł(-15%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
W przypadku usługi "Druk na żądanie" termin dostarczenia przesyłki może obejmować także czas potrzebny na dodruk (do 10 dni roboczych)
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.


Oceny i opinie klientów: Scala Cookbook. 2nd Edition Alvin Alexander (0)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.