contents
foreword
preface
acknowledgments
about this book
introduction
Part 1 Getting past pure Erlang: the OTP basics
- Chapter 1 The Erlang/OTP platform
- Concurrent programming with processes
- Erlang s fault tolerance infrastructure
- Distributed Erlang
- The Erlang runtime system and virtual machine
- Functional programming: Erlang s face to the world
- Summary
- Chapter 2 Erlang language essentials
- The Erlang shell
- Data types in Erlang
- Modules and functions
- Variables and pattern matching
- Functions and clauses
- Case and if expressions
- Funs
- Exceptions, try, and catch
- List comprehensions
- Bit syntax and bitstring comprehensions
- Record syntax
- Preprocessing and include files
- Processes
- ETS tables
- Recursion: it s how you loop
- Erlang programming resources
- Summary
- Chapter 3 Writing a TCP-based RPC service
- What you re creating
- Implementing the RPC server
- Running the RPC server
- A few words on testing
- Summary
- Chapter 4 OTP applications and supervision
- OTP applications
- Adding fault tolerance with supervisors
- Starting the application
- Generating documentation with EDoc
- Summary
- Chapter 5 Using the main graphical introspection tools
- Appmon
- Pman
- Debugger
- TV, the Table Viewer
- Toolbar
- Summary
Part 2 Building a production system
- Chapter 6 Implementing a caching system
- The background story
- The design of your cache
- Creating the basic OTP application skeleton
- From application skeleton to a working cache
- Summary
- Chapter 7 Logging and event handling the Erlang/OTP way
- Logging in Erlang/OTP
- A custom event handler with gen_event
- Adding a custom event stream to the Simple Cache
- Summary
- Chapter 8 Introducing distributed Erlang/OTP
- The fundamentals of Erlang distribution
- Nodes and clustering
- The nuts and bolts of resource discovery
- Summary
- Chapter 9 Adding distribution to the cache with Mnesia
- Distributing the cache
- Distributed data storage with Mnesia
- Distributing the cache with Mnesia
- Summary
- Chapter 10 Packaging, services, and deployment
- Applications from a system viewpoint
- Making a release
- Release packaging
- Installing a release
- Summary
Part 3 Integrating and refining
- Chapter 11 Adding an HTTP interface to the cache
- Implementing a TCP server
- Building a web service from the ground up
- Summary
- Chapter 12 Integrating with foreign code using ports and NIFs
- Ports and NIFs
- Integrating with the parser through a port
- Making a linked-in driver
- Implementing the parser as a NIF
- Summary
- Chapter 13 Communication between Erlang and Java via Jinterface
- Integrating Erlang with Java using Jinterface
- Installing and configuring HBase
- Building the bridge between Simple Cache and HBase
- Integrating HBase with Simple Cache
- Running the integrated system
- Summary
- Chapter 14 Optimization and performance
- How to approach performance tuning
- Profiling Erlang code
- Erlang programming language caveats
- Summary
-
appendix A Installing Erlang
appendix B Lists and referential transparency
index