Cargando…

Elixir in Action, Second Edition /

Elixir in Action, Second Edition teaches you how to build production-quality distributed applications using the Elixir programming language. Author Saša Juric introduces this powerful language using examples that highlight the benefits of Elixir's functional and concurrent programming. You...

Descripción completa

Detalles Bibliográficos
Clasificación:Libro Electrónico
Autor principal: Juric, Sasa (Autor)
Autor Corporativo: Safari, an O'Reilly Media Company
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Manning Publications, 2019.
Edición:2nd edition.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)

MARC

LEADER 00000cam a2200000Ma 4500
001 OR_on1099553153
003 OCoLC
005 20231017213018.0
006 m o d
007 cr cnu||||||||
008 190219s2019 xx o 000 0 eng
040 |a AU@  |b eng  |e pn  |c AU@  |d OCLCQ  |d VT2  |d TOH  |d OCLCO  |d YDX  |d CZL  |d DST  |d UKAHL  |d OCLCO  |d OCLCQ 
019 |a 1256806005 
020 |z 9781617295027 
020 |a 9781638351658  |q (electronic bk.) 
020 |a 1638351651  |q (electronic bk.) 
020 |z 1617295027 
024 8 |a 9781617295027 
029 0 |a AU@  |b 000065066187 
029 1 |a AU@  |b 000073549501 
035 |a (OCoLC)1099553153  |z (OCoLC)1256806005 
050 4 |a QA76.62  |b .J875 2019 
082 0 4 |a 005.133  |2 23 
049 |a UAMI 
100 1 |a Juric, Sasa,  |e author. 
245 1 0 |a Elixir in Action, Second Edition /  |c Juric, Sasa. 
250 |a 2nd edition. 
264 1 |b Manning Publications,  |c 2019. 
300 |a 1 online resource (384 pages) 
336 |a text  |b txt  |2 rdacontent 
337 |a computer  |b c  |2 rdamedia 
338 |a online resource  |b cr  |2 rdacarrier 
347 |a text file 
520 |a Elixir in Action, Second Edition teaches you how to build production-quality distributed applications using the Elixir programming language. Author Saša Juric introduces this powerful language using examples that highlight the benefits of Elixir's functional and concurrent programming. You'll discover how the OTP framework can radically reduce tedious low-level coding tasks. You'll also explore practical approaches to concurrency as you learn to distribute a production system over multiple machines. 
542 |f Copyright © Manning Publications 2019  |g 2019 
550 |a Made available through: Safari, an O'Reilly Media Company. 
505 0 |a Intro -- Elixir in Action -- Copyright -- brief contents -- contents -- praise for the first edition -- front matter -- preface -- acknowledgments -- about this book -- Who should read this book -- How this book is organized -- About the code -- Book Forum -- about the author -- about the cover illustration -- 1 First steps -- 1.1 About Erlang -- 1.1.1 High availability -- 1.1.2 Erlang concurrency -- 1.1.3 Server-side systems -- 1.1.4 The development platform -- 1.2 About Elixir -- 1.2.1 Code simplification -- 1.2.2 Composing functions -- 1.2.3 The big picture -- 1.3 Disadvantages -- 1.3.1 Speed -- 1.3.2 Ecosystem -- Summary -- 2 Building blocks -- 2.1 The interactive shell -- 2.2 Working with variables -- 2.3 Organizing your code -- 2.3.1 Modules -- 2.3.2 Functions -- 2.3.3 Function arity -- 2.3.4 Function visibility -- 2.3.5 Imports and aliases -- 2.3.6 Module attributes -- 2.3.7 Comments -- 2.4 Understanding the type system -- 2.4.1 Numbers -- 2.4.2 Atoms -- 2.4.3 Tuples -- 2.4.4 Lists -- 2.4.5 Immutability -- 2.4.6 Maps -- 2.4.7 Binaries and bitstrings -- 2.4.8 Strings -- 2.4.9 First-class functions -- 2.4.10 Other built-in types -- 2.4.11 Higher-level types -- 2.4.12 IO lists -- 2.5 Operators -- 2.6 Macros -- 2.7 Understanding the runtime -- 2.7.1 Modules and functions in the runtime -- 2.7.2 Starting the runtime -- Summary -- 3 Control flow -- 3.1 Pattern matching -- 3.1.1 The match operator -- 3.1.2 Matching tuples -- 3.1.3 Matching constants -- 3.1.4 Variables in patterns -- 3.1.5 Matching lists -- 3.1.6 Matching maps -- 3.1.7 Matching bitstrings and binaries -- 3.1.8 Compound matches -- 3.1.9 General behavior -- 3.2 Matching with functions -- 3.2.1 Multiclause functions -- 3.2.2 Guards -- 3.2.3 Multiclause lambdas -- 3.3 Conditionals -- 3.3.1 Branching with multiclause functions -- 3.3.2 Classical branching constructs. 
505 8 |a 3.3.3 The with special form -- 3.4 Loops and iterations -- 3.4.1 Iterating with recursion -- 3.4.2 Tail function calls -- 3.4.3 Higher-order functions -- 3.4.4 Comprehensions -- 3.4.5 Streams -- Summary -- 4 Data abstractions -- 4.1 Abstracting with modules -- 4.1.1 Basic abstraction -- 4.1.2 Composing abstractions -- 4.1.3 Structuring data with maps -- 4.1.4 Abstracting with structs -- 4.1.5 Data transparency -- 4.2 Working with hierarchical data -- 4.2.1 Generating IDs -- 4.2.2 Updating entries -- 4.2.3 Immutable hierarchical updates -- 4.2.4 Iterative updates -- 4.2.5 Exercise: importing from a file -- 4.3 Polymorphism with protocols -- 4.3.1 Protocol basics -- 4.3.2 Implementing a protocol -- 4.3.3 Built-in protocols -- Summary -- 5 Concurrency primitives -- 5.1 Concurrency in BEAM -- 5.2 Working with processes -- 5.2.1 Creating processes -- 5.2.2 Message passing -- 5.3 Stateful server processes -- 5.3.1 Server processes -- 5.3.2 Keeping a process state -- 5.3.3 Mutable state -- 5.3.4 Complex states -- 5.3.5 Registered processes -- 5.4 Runtime considerations -- 5.4.1 A process is sequential -- 5.4.2 Unlimited process mailboxes -- 5.4.3 Shared-nothing concurrency -- 5.4.4 Scheduler inner workings -- Summary -- 6 Generic server processes -- 6.1 Building a generic server process -- 6.1.1 Plugging in with modules -- 6.1.2 Implementing the generic code -- 6.1.3 Using the generic abstraction -- 6.1.4 Supporting asynchronous requests -- 6.1.5 Exercise: refactoring the to-do server -- 6.2 Using GenServer -- 6.2.1 OTP behaviours -- 6.2.2 Plugging into GenServer -- 6.2.3 Handling requests -- 6.2.4 Handling plain messages -- 6.2.5 Other GenServer features -- 6.2.6 Process lifecycle -- 6.2.7 OTP-compliant processes -- 6.2.8 Exercise: GenServer-powered to-do server -- Summary -- 7 Building a concurrent system -- 7.1 Working with the mix project. 
505 8 |a 7.2 Managing multiple to-do lists -- 7.2.1 Implementing a cache -- 7.2.2 Writing tests -- 7.2.3 Analyzing process dependencies -- 7.3 Persisting data -- 7.3.1 Encoding and persisting -- 7.3.2 Using the database -- 7.3.3 Analyzing the system -- 7.3.4 Addressing the process bottleneck -- 7.3.5 Exercise: pooling and synchronizing -- 7.4 Reasoning with processes -- Summary -- 8 Fault-tolerance basics -- 8.1 Runtime errors -- 8.1.1 Error types -- 8.1.2 Handling errors -- 8.2 Errors in concurrent systems -- 8.2.1 Linking processes -- 8.2.2 Monitors -- 8.3 Supervisors -- 8.3.1 Preparing the existing code -- 8.3.2 Starting the supervisor process -- 8.3.3 Child specification -- 8.3.4 Wrapping the supervisor -- 8.3.5 Using a callback module -- 8.3.6 Linking all processes -- 8.3.7 Restart frequency -- Summary -- 9 Isolating error effects -- 9.1 Supervision trees -- 9.1.1 Separating loosely dependent parts -- 9.1.2 Rich process discovery -- 9.1.3 Via tuples -- 9.1.4 Registering database workers -- 9.1.5 Supervising database workers -- 9.1.6 Organizing the supervision tree -- 9.2 Starting processes dynamically -- 9.2.1 Registering to-do servers -- 9.2.2 Dynamic supervision -- 9.2.3 Finding to-do servers -- 9.2.4 Using temporary restart strategy -- 9.2.5 Testing the system -- 9.3 "Let it crash" -- 9.3.1 Processes that shouldn't crash -- 9.3.2 Handling expected errors -- 9.3.3 Preserving the state -- Summary -- 10 Beyond GenServer -- 10.1 Tasks -- 10.1.1 Awaited tasks -- 10.1.2 Non-awaited tasks -- 10.2 Agents -- 10.2.1 Basic use -- 10.2.2 Agents and concurrency -- 10.2.3 Agent-powered to-do server -- 10.2.4 Limitations of agents -- 10.3 ETS tables -- 10.3.1 Basic operations -- 10.3.2 ETS powered key/value store -- 10.3.3 Other ETS operations -- 10.3.4 Exercise: process registry -- Summary -- 11 Working with components -- 11.1 OTP applications. 
505 8 |a 11.1.1 Creating applications with the mix tool -- 11.1.2 The application behavior -- 11.1.3 Starting the application -- 11.1.4 Library applications -- 11.1.5 Creating a to-do application -- 11.1.6 The application folder structure -- 11.2 Working with dependencies -- 11.2.1 Adding a dependency -- 11.2.2 Adapting the pool -- 11.2.3 Visualizing the system -- 11.3 Building a web server -- 11.3.1 Choosing dependencies -- 11.3.2 Starting the server -- 11.3.3 Handling requests -- 11.3.4 Reasoning about the system -- 11.4 Configuring applications -- 11.4.1 Application environment -- 11.4.2 Varying configuration -- 11.4.3 Config script considerations -- Summary -- 12 Building a distributed system -- 12.1 Distribution primitives -- 12.1.1 Starting a cluster -- 12.1.2 Communicating between nodes -- 12.1.3 Process discovery -- 12.1.4 Links and monitors -- 12.1.5 Other distribution services -- 12.2 Building a fault-tolerant cluster -- 12.2.1 Cluster design -- 12.2.2 The distributed to-do cache -- 12.2.3 Implementing a replicated database -- 12.2.4 Testing the system -- 12.2.5 Detecting partitions -- 12.2.6 Highly available systems -- 12.3 Network considerations -- 12.3.1 Node names -- 12.3.2 Cookies -- 12.3.3 Hidden nodes -- 12.3.4 Firewalls -- Summary -- 13 Running the system -- 13.1 Running a system with Elixir tools -- 13.1.1 Using the mix and elixir commands -- 13.1.2 Running scripts -- 13.1.3 Compiling for production -- 13.2 OTP releases -- 13.2.1 Building a release with distillery -- 13.2.2 Using a release -- 13.2.3 Release contents -- 13.3 Analyzing system behavior -- 13.3.1 Debugging -- 13.3.2 Logging -- 13.3.3 Interacting with the system -- 13.3.4 Tracing -- Summary -- Index -- Lists of Figures, Tables and Listings -- List of Illustrations -- List of Tables -- List of Listings. 
590 |a O'Reilly  |b O'Reilly Online Learning: Academic/Public Library Edition 
650 0 |a Elixir (Computer program language) 
650 0 |a Programming languages (Electronic computers) 
650 4 |a Programming Languages (Electronic Computers) 
650 4 |a Parallel Programming (Computer Science) 
650 4 |a Computers  |x Languages  |x General. 
650 4 |a Computers  |x Programming  |x Parallel. 
650 6 |a Elixir (Langage de programmation) 
650 7 |a Programming languages (Electronic computers)  |2 fast  |0 (OCoLC)fst01078704 
650 7 |a Elixir (Computer program language)  |2 fast  |0 (OCoLC)fst01921039 
710 2 |a Safari, an O'Reilly Media Company. 
776 0 8 |c Original  |z 9781617295027  |z 1617295027  |w (OCoLC)1027193404 
856 4 0 |u https://learning.oreilly.com/library/view/~/9781617295027/?ar  |z Texto completo (Requiere registro previo con correo institucional) 
938 |a Askews and Holts Library Services  |b ASKH  |n AH39609108 
938 |a YBP Library Services  |b YANK  |n 302274293 
994 |a 92  |b IZTAP