Erlang Programming

- Autorzy:
- Francesco Cesarini, Simon Thompson
- Promocja Przejdź


- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 498
- Dostępne formaty:
-
ePubMobi
Opis książki: Erlang Programming
This book is an in-depth introduction to Erlang, a programming language ideal for any situation where concurrency, fault tolerance, and fast response is essential. Erlang is gaining widespread adoption with the advent of multi-core processors and their new scalable approach to concurrency. With this guide you'll learn how to write complex concurrent programs in Erlang, regardless of your programming background or experience.
Written by leaders of the international Erlang community -- and based on their training material -- Erlang Programming focuses on the language's syntax and semantics, and explains pattern matching, proper lists, recursion, debugging, networking, and concurrency.
This book helps you:
- Understand the strengths of Erlang and why its designers included specific features
- Learn the concepts behind concurrency and Erlang's way of handling it
- Write efficient Erlang programs while keeping code neat and readable
- Discover how Erlang fills the requirements for distributed systems
- Add simple graphical user interfaces with little effort
- Learn Erlang's tracing mechanisms for debugging concurrent and distributed systems
- Use the built-in Mnesia database and other table storage features
Erlang Programming provides exercises at the end of each chapter and simple examples throughout the book.
Wybrane bestsellery
-
If you need to build a scalable, fault tolerant system with requirements for high availability, discover why the Erlang/OTP platform stands out for the breadth, depth, and consistency of its features. This hands-on guide demonstrates how to use the Erlang programming language and its OTP framewor...
Designing for Scalability with Erlang/OTP. Implement Robust, Fault-Tolerant Systems Designing for Scalability with Erlang/OTP. Implement Robust, Fault-Tolerant Systems
(0,00 zł najniższa cena z 30 dni)169.15 zł
199.00 zł(-15%) -
Oto znakomity przewodnik po Kubernetesie. Dzięki niemu w ciągu 22 godzinnych lekcji poznasz najważniejsze możliwości Kubernetesa. Od początku będziesz się koncentrować na praktyce: dzięki codziennym ćwiczeniom, przykładom i laboratoriom zdobędziesz biegłość w używaniu najlepszych narzędzi Kuberne...(0,00 zł najniższa cena z 30 dni)
83.85 zł
129.00 zł(-35%) -
The ability to administer and monitor a Kubernetes cluster is in high demand today. To meet this need, the Cloud Native Computing Foundation developed a certification exam to establish an administrator's credibility and value in the job market to confidently work in a Kubernetes environment.The C...
Certified Kubernetes Administrator (CKA) Study Guide Certified Kubernetes Administrator (CKA) Study Guide
(0,00 zł najniższa cena z 30 dni)203.15 zł
239.00 zł(-15%) -
Oto praktyczne wprowadzenie do Azure. Wyjaśniono tu wiele pojęć potrzebnych w pracy administratora, takich jak sieci wirtualne oraz koncepcja IaaS. Omówiono zasady pracy z Azure oraz pokazano, jak można przygotować platformę do wdrożenia własnego systemu. Od strony praktycznej przedstawiono tworz...
Chmura Azure. Praktyczne wprowadzenie dla administratora. Implementacja, monitorowanie i zarządzanie ważnymi usługami i komponentami IaaS/PaaS Chmura Azure. Praktyczne wprowadzenie dla administratora. Implementacja, monitorowanie i zarządzanie ważnymi usługami i komponentami IaaS/PaaS
-
Developers with the ability to operate, troubleshoot, and monitor applications in Kubernetes are in high demand today. To meet this need, the Cloud Native Computing Foundation created a certification exam to establish a developer's credibility and value in the job market to work in a Kubernetes e...
Certified Kubernetes Application Developer (CKAD) Study Guide Certified Kubernetes Application Developer (CKAD) Study Guide
(0,00 zł najniższa cena z 30 dni)169.15 zł
199.00 zł(-15%) -
Kubernetes has become an essential part of the daily work for most system, network, and cluster administrators today. But to work effectively together on a production-scale Kubernetes system, they must be able to speak the same language. This book provides a clear guide to the layers of complexit...(0,00 zł najniższa cena z 30 dni)
203.15 zł
239.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%) -
In just five years, Kubernetes has radically changed the way developers and ops personnel build, deploy, and maintain applications in the cloud. With this book's updated third edition, you'll learn how this popular container orchestrator can help your company achieve new levels of velocity, agili...(0,00 zł najniższa cena z 30 dni)
237.15 zł
279.00 zł(-15%) -
O tym, że wirtualizacja wcale nie musi być problematyczna i może znacznie ułatwić pracę, przekona Cię lektura książki „Wirtualizacja w praktyce”. Poznasz korzyści płynące z zastosowania najbardziej popularnych rozwiązań, sposoby instalacji odpowiedniego oprogramowania oraz tworzenia i...(0,00 zł najniższa cena z 30 dni)
32.94 zł
54.90 zł(-40%) -
NGINX is one of the most widely used web servers available today, in part because of itscapabilities as a load balancer and reverse proxy server for HTTP and other network protocols. This revised cookbook provides easy-to-follow examples of real-world problems in application delivery. The practic...(0,00 zł najniższa cena z 30 dni)
169.15 zł
199.00 zł(-15%)
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-05-965-5585-6, 9780596555856
- Data wydania ebooka:
-
2009-06-11
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.4MB
- Rozmiar pliku Mobi:
- 8.1MB
- Kategorie:
Serwery internetowe » Inne
Spis treści książki
- Erlang Programming
- SPECIAL OFFER: Upgrade this ebook with OReilly
- Foreword
- Preface
- Francesco: Why Erlang?
- Simon: Why Erlang?
- Who Should Read This Book?
- How to Read This Book
- Conventions Used in This Book
- Using Code Examples
- Safari Books Online
- How to Contact Us
- Acknowledgments
- 1. Introduction
- Why Should I Use Erlang?
- The History of Erlang
- Erlangs Characteristics
- High-Level Constructs
- Concurrent Processes and Message Passing
- Scalable, Safe, and Efficient Concurrency
- Soft Real-Time Properties
- Robustness
- Distributed Computation
- Integration and Openness
- Erlang and Multicore
- Case Studies
- The AXD301 ATM Switch
- CouchDB
- Comparing Erlang to C++
- How Should I Use Erlang?
- 2. Basic Erlang
- Integers
- The Erlang Shell
- Floats
- Mathematical Operators
- Atoms
- Booleans
- Tuples
- Lists
- Characters and Strings
- Atoms and Strings
- Building and Processing Lists
- List Functions and Operations
- Term Comparison
- Variables
- Complex Data Structures
- Pattern Matching
- Functions
- Modules
- Compilation and the Erlang Virtual Machine
- Module Directives
- Exercises
- Exercise 2-1: The Shell
- A. Erlang expressions
- B. Assigning through pattern matching
- C. Recursive list definitions
- D. Flow of execution through pattern matching
- E. Extracting values in composite data types through pattern matching
- Exercise 2-1: The Shell
- Exercise 2-2: Modules and Functions
- Exercise 2-3: Simple Pattern Matching
- 3. Sequential Erlang
- Conditional Evaluations
- The case Construct
- Variable Scope
- The if Construct
- Conditional Evaluations
- Guards
- Built-in Functions
- Object Access and Examination
- Type Conversion
- Process Dictionary
- Meta Programming
- Process, Port, Distribution, and System Information
- Input and Output
- Recursion
- Tail-Recursive Functions
- Tail-Call Recursion Optimization
- Two accumulators example
- Iterations Versus Recursive Functions
- Runtime Errors
- Handling Errors
- Using try ... catch
- Using catch
- Library Modules
- Documentation
- Useful Modules
- The Debugger
- Exercises
- Exercise 3-1: Evaluating Expressions
- Exercise 3-2: Creating Lists
- Exercise 3-3: Side Effects
- Exercise 3-4: Database Handling Using Lists
- Exercise 3-5: Manipulating Lists
- Exercise 3-6: Sorting Lists
- Exercise 3-7: Using Library Modules
- Exercise 3-8: Evaluating and Compiling Expressions
- Exercise 3-9: Indexing
- Exercise 3-10: Text Processing
- 4. Concurrent Programming
- Creating Processes
- Message Passing
- Receiving Messages
- Selective and Nonselective Receives
- An Echo Example
- Registered Processes
- Timeouts
- Benchmarking
- Process Skeletons
- Tail Recursion and Memory Leaks
- A Case Study on Concurrency-Oriented Programming
- Race Conditions, Deadlocks, and Process Starvation
- The Process Manager
- Exercises
- Exercise 4-1: An Echo Server
- Exercise 4-2: The Process Ring
- 5. Process Design Patterns
- Client/Server Models
- A Client/Server Example
- Client/Server Models
- A Process Pattern Example
- Finite State Machines
- An FSM Example
- A Mutex Semaphore
- Event Managers and Handlers
- A Generic Event Manager Example
- Event Handlers
- Exercises
- Exercise 5-1: A Database Server
- Exercise 5-2: Changing the Frequency Server
- Exercise 5-3: Swapping Handlers
- Exercise 5-4: Event Statistics
- Exercise 5-5: Phone FSM
- 6. Process Error Handling
- Process Links and Exit Signals
- Trapping Exits
- The monitor BIFs
- The exit BIFs
- BIFs and Terminology
- Propagation Semantics
- Process Links and Exit Signals
- Robust Systems
- Monitoring Clients
- A Supervisor Example
- Exercises
- Exercise 6-1: The Linked Ping Pong Server
- Exercise 6-2: A Reliable Mutex Semaphore
- Exercise 6-3: A Supervisor Process
- 7. Records and Macros
- Records
- Introducing Records
- Working with Records
- Functions and Pattern Matching over Records
- Records in the Shell
- Record Implementation
- Record BIFs
- Records
- Macros
- Simple Macros
- Parameterized Macros
- Debugging and Macros
- Include Files
- Exercises
- Exercise 7-1: Extending Records
- Exercise 7-2: Record Guards
- Exercise 7-3: The db.erl Exercise Revisited
- Exercise 7-4: Records and Shapes
- Exercise 7-5: Binary Tree Records
- Exercise 7-6: Parameterized Macros
- Exercise 7-7: Counting Calls
- Exercise 7-8: Enumerated Types
- Exercise 7-9: Debugging the db.erl Exercise
- 8. Software Upgrade
- Upgrading Modules
- Behind the Scenes
- Loading Code
- The Code Server
- Loading modules
- Manipulating the code search path
- Purging Modules
- Upgrading Processes
- The .erlang File
- Exercise
- Exercise 8-1: Software Upgrade During Runtime
- 9. More Data Types and High-Level Constructs
- Functional Programming for Real
- Funs and Higher-Order Functions
- Functions As Arguments
- Writing Down Functions: fun Expressions
- Functions As Results
- Using Already Defined Functions
- Functions and Variables
- Predefined, Higher-Order Functions
- Lazy Evaluation and Lists
- List Comprehensions
- A First Example
- General List Comprehensions
- Multiple Generators
- Standard Functions
- Binaries and Serialization
- Binaries
- The Bit Syntax
- Sizes
- Types
- Pattern-Matching Bits
- Bitstring Comprehensions
- Bit Syntax Example: Decoding TCP Segments
- Bitwise Operators
- Serialization
- References
- Exercises
- Exercise 9-1: Higher-Order Functions
- Exercise 9-2: List Comprehensions
- Exercise 9-3: Zip Functions
- Exercise 9-4: Existing Higher-Order Functions
- Exercise 9-5: Length Specifications in List Comprehensions
- Exercise 9-6: Bitstrings
- 10. ETS and Dets Tables
- ETS Tables
- Implementations and Trade-offs
- Creating Tables
- Handling Table Elements
- Example: Building an Index, Act I
- Traversing Tables
- Example: Building an Index, Act II
- Extracting Table Information: match
- Extracting Table Information: select
- Other Operations on Tables
- Records and ETS Tables
- Visualizing Tables
- ETS Tables
- Dets Tables
- A Mobile Subscriber Database Example
- The Database Backend Operations
- The Database Server
- Exercises
- Exercise 10-1: Pretty-Printing
- Exercise 10-2: Indexing Revisited
- Exercise 10-3: ETS Tables for System Logging
- 11. Distributed Programming in Erlang
- Distributed Systems in Erlang
- Distributed Computing in Erlang: The Basics
- Node Names and Visibility
- Communication and Security
- Distributing the Erlang code: A warning
- Communication and Messages
- Node Connections
- Hidden nodes
- Remote Procedure Calls
- The rpc Module
- Essential Distributed Programming Modules
- The epmd Process
- Distributed Erlang Behind Firewalls
- Exercises
- Exercise 11-1: Distributed Associative Store
- Exercise 11-2: System Monitoring
- 12. OTP Behaviors
- Introduction to OTP Behaviors
- Generic Servers
- Starting Your Server
- Passing Messages
- Stopping the Server
- The Example in Full
- Running gen_server
- Supervisors
- Supervisor Specifications
- Child Specifications
- Supervisor Example
- Dynamic Children
- Applications
- Directory Structure
- The Application Resource File
- Starting and Stopping Applications
- The Application Monitor
- Release Handling
- Other Behaviors and Further Reading
- Exercises
- Exercise 12-1: Database Server Revisited
- Exercise 12-2: Supervising the Database Server
- Exercise 12-3: The Database Server As an Application
- 13. Introducing Mnesia
- When to Use Mnesia
- Configuring Mnesia
- Setting Up the Schema
- Starting Mnesia
- Mnesia Tables
- Transactions
- Writing
- Reading and Deleting
- Indexing
- Dirty Operations
- Partitioned Networks
- Further Reading
- Exercises
- Exercise 13-1: Setting Up Mnesia
- Exercise 13-2: Transactions
- Exercise 13-3: Dirty Mnesia Operations
- 14. GUI Programming with wxErlang
- wxWidgets
- wxErlang: An Erlang Binding for wxWidgets
- Objects and Types
- Event Handling, Object Identifiers, and Event Types
- Putting It All Together
- A First Example: MicroBlog
- The MiniBlog Example
- Obtaining and Running wxErlang
- Exercises
- Exercise 14-1: Selecting the Blog File
- Exercise 14-2: Saving Blog Items Separately
- Exercise 14-3: Multiple Blogs in Separate Tabs
- Exercise 14-4: Extending the EntriesRich Text
- Exercise 14-5: Tagging Entries
- Exercise 14-6: Multiple Users and Comments
- Exercise 14-7: Layout and wxErlang Sizers
- 15. Socket Programming
- User Datagram Protocol
- Transmission Control Protocol
- A TCP Example
- The inet Module
- Further Reading
- Exercises
- Exercise 15-1: Snooping an HTTP Request
- Exercise 15-2: A Simple HTTP Proxy
- Exercise 15-3: Peer to Peer
- 16. Interfacing Erlang with Other Programming Languages
- An Overview of Interworking
- Interworking with Java
- Nodes and Mailboxes
- Representing Erlang Types
- Communication
- Putting It Together: RPC Revisited
- Interaction
- The Small Print
- Taking It Further
- C Nodes
- Going Further
- Erlang from the Unix Shell: erl_call
- Port Programs
- Erlang Port Commands
- Communicating Data to and from a Port
- Library Support for Communication
- Working in Ruby: erlectricity
- An example using erlectricity
- Working in Ruby: erlectricity
- Linked-in Drivers and the FFI
- Exercises
- Exercise 16-1: C Factorial via a Port
- Exercise 16-2: Factorial Server in Another Language
- 17. Trace BIFs, the dbg Tracer, and Match Specifications
- Introduction
- The Trace BIFs
- Process Trace Flags
- Inheritance Flags
- Garbage Collection and Timestamps
- Tracing Calls with the trace_pattern BIF
- The dbg Tracer
- Getting Started with dbg
- Tracing and Profiling Functions
- Tracing Local and Global Function Calls
- Distributed Environments
- Redirecting the Output
- Redirecting to sockets and binary files
- Match Specifications: The fun Syntax
- Generating Specifications Using fun2ms
- Odds and ends with fun2ms
- Generating Specifications Using fun2ms
- Difference Between ets and dbg Match Specifications
- Match Specifications: The Nuts and Bolts
- The Head
- Conditions
- The Specification Body
- Saving Match Specifications
- Further Reading
- Exercises
- Exercise 17-1: Measuring Garbage Collection Times
- Exercise 17-2: Garbage Collection Using dbg
- Exercise 17-3: Tracing ETS Table Entries
- Exercise 17-4: Who Is the Culprit?
- 18. Types and Documentation
- Types in Erlang
- An Example: Records with Typed Fields
- Erlang Type Notation
- Types in Erlang
- TypEr: Success Types and Type Inference
- Dialyzer: A DIscrepancy AnaLYZer for ERlang Programs
- Documentation with EDoc
- Documenting usr_db.erl
- Module tags
- Function tags
- Generic tags
- Documenting usr_db.erl
- Running EDoc
- Module pages
- Overview page
- Types in EDoc
- Going Further with EDoc
- Exercises
- 19. EUnit and Test-Driven Development
- Test-Driven Development
- EUnit
- How to Use EUnit
- Functional Testing, an Example: Tree Serialization
- The EUnit Infrastructure
- Assert Macros
- Test-Generating Functions
- EUnit Test Representation
- Testing State-Based Systems
- Fixtures: Setup and Cleanup
- Testing Concurrent Programs in Erlang
- Exercises
- Exercise 19-1: Testing Sequential Functions
- Exercise 19-2: Testing Concurrent Systems
- Exercise 19-3: Software Upgrade
- Exercise 19-4: Testing OTP Behaviors
- Exercise 19-5: Devising Tests for OTP Behaviors
- 20. Style and Efficiency
- Applications and Modules
- Libraries
- Dirty Code
- Interfaces
- Return Values
- Internal Data Structures
- Applications and Modules
- Processes and Concurrency
- Stylistic Conventions
- Coding Strategies
- Efficiency
- Sequential Programming
- Lists
- Tail Recursion and Non-tail Recursion
- Concurrency
- And Finally...
- A. Using Erlang
- Getting Started with Erlang
- Installing the System
- Running the Erlang Shell
- Getting Started with Erlang
- Tools for Erlang
- Editors
- Other Tools
- Where to Learn More
- Index
- About the Authors
- Colophon
- SPECIAL OFFER: Upgrade this ebook with OReilly
O'Reilly Media - inne książki
-
FinOps brings financial accountability to the variable spend model of cloud. Used by the majority of global enterprises, this management practice has grown from a fringe activity to the de facto discipline managing cloud spend. In this book, authors J.R. Storment and Mike Fuller outline the proce...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Edge AI is transforming the way computers interact with the real world, allowing IoT devices to make decisions using the 99% of sensor data that was previously discarded due to cost, bandwidth, or power limitations. With techniques like embedded machine learning, developers can capture human intu...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Why is it difficult for so many companies to get digital identity right? If you're still wrestling with even simple identity problems like modern website authentication, this practical book has the answers you need. Author Phil Windley provides conceptual frameworks to help you make sense of all ...(0,00 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
Python was recently ranked as today's most popular programming language on the TIOBE index, thanks to its broad applicability to design and prototyping to testing, deployment, and maintenance. With this updated fourth edition, you'll learn how to get the most out of Python, whether you're a profe...(0,00 zł najniższa cena z 30 dni)
296.65 zł
349.00 zł(-15%) -
With the accelerating speed of business and the increasing dependence on technology, companies today are significantly changing the way they build in-house business solutions. Many now use low-code and no code technologies to help them deal with specific issues, but that's just the beginning. Wit...
Building Solutions with the Microsoft Power Platform Building Solutions with the Microsoft Power Platform
(0,00 zł najniższa cena z 30 dni)262.65 zł
309.00 zł(-15%) -
Companies are scrambling to integrate AI into their systems and operations. But to build truly successful solutions, you need a firm grasp of the underlying mathematics. This accessible guide walks you through the math necessary to thrive in the AI field such as focusing on real-world application...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
DevOps engineers, developers, and security engineers have ever-changing roles to play in today's cloud native world. In order to build secure and resilient applications, you have to be equipped with security knowledge. Enter security as code.In this book, authors BK Sarthak Das and Virginia Chu d...(0,00 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
With the increasing use of AI in high-stakes domains such as medicine, law, and defense, organizations spend a lot of time and money to make ML models trustworthy. Many books on the subject offer deep dives into theories and concepts. This guide provides a practical starting point to help develop...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
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)
262.65 zł
309.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)
220.15 zł
259.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: Erlang Programming Francesco Cesarini, Simon Thompson (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.