Index
A
- abstract syntax tree (AST) / The abstract syntax tree
- application
- containerizing / Containerizing our application
- development containers, creating / Creating a development container
- container, orchestrating / Orchestrating more than one container
- deployment containers, composing / Composing the deployment containers
- deployment containers, creating / Composing the deployment containers
- application behavior
- inspecting / Inspecting application behavior
- fprof profiler, profiling with / Profiling with the fprof profiler
- dbg module, tracing with / Tracing with the :dbg module
- Application Module Callback / Elixir applications
- assigns / Handling requests in a controller
B
- BEAM
- about / Inside the BEAM
- processes, working with / Working with processes
- processes, creating / Creating processes
- message-passing, between processes / Message passing between processes
- cache worker, building / Building a cache worker
- behaviours / Typespecs and behaviours, Behaviours
C
- changesets
- about / Changesets
- media / Media
- users / Users
- media ownership / Media ownership
- constraints / Constraints
- channels
- used, in interactive applications / Interactive applications using channels
- server, preparing / Preparing the server
- joining, on client / Joining channels on the client
- events, exchanging / Exchanging events
- socket connections, authenticating / Authenticating socket connections
- users statuses, tracking presence used / Tracking users statuses using Presence
- cluster groups / Deploying to Kubernetes
- coding style / Adopting a consistent coding style
- collections
- working with / Working with collections
- looping, through recursion / Looping through recursion
- eager processing, with Enum module / Eager processing with the Enum module
- lazy processing, with Stream module / Lazy processing with the stream module
- Conflict-Free Replicated Data Types (CRDT) / Tracking users statuses using Presence
- containerized node
- connecting to / Connecting to a containerized node
- continuous deployment
- with Travis CI / Continuous deployment with Travis CI
- control-flow
- if and unless / if and unless
- cond / cond
- case / case
- with / with
- exceptions / Exceptions
- Cross-Site Request Forgery (CSRF) / Routing requests
D
- database
- connecting / Connecting to the database
- deployment controller / Deploying to Kubernetes
- Disk-based ETS
- using / Using (D)ETS
- about / Disk-based ETS
- distillery
- about / ElixirDrip – our showcase application
- releasing with / Releasing with Distillery
- release, configuring / Configuring the release
- environment variables, interpolating / Interpolating environment variables
- release, creating / Creating the release
- custom release task, creating / Creating a custom release task
- domain-specific language (DSL)
- about / ElixirDrip – our showcase application, Creating a domain-specific language
- creating / Creating a domain-specific language
- module attributes, registering / Registering module attributes
- pipeline steps, collecting / Collecting a list of pipeline steps
- subscription options, generating / Generating worker specs and subscription options
- worker specs, generating / Generating worker specs and subscription options
- GenStage modules, streamlining / Streamlining GenStage modules
- download pipeline
- about / The download pipeline
- Notifier stage / The Notifier stage
- Encryption stage / The Encryption stage
- RemoteStorage stage / The RemoteStorage stage
- Starter stage / The Starter stage
- Final remarks / Final remarks
E
- Ecto / Umbrella projects
- Elixir
- about / Elixir and Erlang
- data types / Elixir's data types
- integers /
- floats / Floats
- atoms / Atoms
- booleans / Booleans
- tuples / Tuples
- lists / Lists
- maps / Maps
- binaries / Binaries
- strings / Strings and charlists
- charlists / Strings and charlists
- other types / Other types
- keyword lists / Keyword lists
- ranges / Ranges
- MapSets / MapSets
- Elixir applications / Elixir applications
- ElixirDrip
- about / ElixirDrip – our showcase application
- behaviours, using / Using behaviours
- cross references, viewing with Xref / Viewing cross references with xref
- Elixir node
- connecting / Connecting the deployed Elixir nodes
- testing / Testing the connected nodes
- Elixir project structure
- about / Elixir project structure
- project dependencies / Project dependencies
- Embedded Elixir (EEx) / Configuring the release
- Enum module
- eager processing with / Eager processing with the Enum module
- comprehensions / Comprehensions
- Erlang / Elixir and Erlang
- Erlang node
- connecting to, in Kubernetes / Connecting to an Erlang node running in Kubernetes
- remote shell, using / Using a remote shell
- Erlang Port Mapper Daemon (EPMD) / A window to your nodes
- Erlang runtime (ERTS) / Releasing with Distillery
- Erlang VM
- errors
- detecting, by linking / Detecting errors by linking and monitoring processes, Using links
- detecting, by monitoring processes / Detecting errors by linking and monitoring processes, Using monitors
- recovering, with supervisor / Recovering from errors with supervisors and supervision trees
- recovering, with supervision trees / Recovering from errors with supervisors and supervision trees
F
- flow module
- about / Flow
- sample data / Sample data
- lazy queries / Lazy queries
- disk-usage rank query / Disk-usage rank query
- functional programming / Why functional programming?
- function plug
- creating / Creating a function plug
- functions
- about / Functions and Modules
- anonymous functions / Anonymous functions
- named functions / Modules and Named Functions
G
- GenServer
- about / GenServer
- at service / GenServer at your service
- used, for implementing CacheWorker / Implementing a CacheWorker with GenServer
- Agent / Agent
- GenStage
- about / ElixirDrip – our showcase application, GenStage
- upload pipeline / The upload pipeline
- download pipeline / The download pipeline
- GenStage modules
- streamlining / Streamlining GenStage modules
- pipeline producers / Simpler pipeline producers
- pipeline consumers / Simpler pipeline (producer) consumers
- GenStage Pipelines / Using the use and __using__/1 macros
- Google Kubernetes Engine (GKE)
- about / Deploying to Kubernetes
- reference link / Deploying to Kubernetes
H
- HTTP request
- routing / Routing requests
- handling, in controller / Handling requests in a controller
I
- integration testing / Integration testing
- interactive applications
- channels, using / Interactive applications using channels
- Interactive Elixir (IEx)
- about / Elixir's data types, IEx
- ecosystems / Tooling and ecosystems
- tooling / Tooling and ecosystems
- mix / Mix
- ExUnit / ExUnit
- Erlang interoperability / Erlang interoperability
J
- JSON API
- implementing / Implementing a JSON API
- users, authenticating / Authenticating users in the API
K
- Kubernetes / ElixirDrip – our showcase application
- Kubernetes (K8s)
- about / Deploying to Kubernetes
- deploying / Deploying to Kubernetes
- cloud database, configuring / Configuring the cloud database
- namespace, creating / Creating a namespace
- secrets, creating / Creating secrets
- production image, publishing / Publishing the production image
- pod, deploying / Deploying your first pod
- job, creating / Creating a Kubernetes job
- pod, exposing / Exposing your pods to the world
M
- macros
- tinkering / Tinkering with macros
- Hygienic accesses / Hygienic accesses
- unquote / Famous (un)quotes
- about / Macros – a silver bullet?
- cheat sheet / Macros cheat sheet
- testing / Testing macros
- metrics
- collecting / Collecting metrics
- Prometheus metrics, exposing / Exposing Prometheus metrics
- Prometheus metrics, creating / Creating custom Prometheus metrics
- Prometheus server / Local Prometheus server
- Prometheus, deploying in Kubernetes / Deploying Prometheus in Kubernetes
- percentiles, calculating / Calculating percentiles
- metrics, types
- counter / Collecting metrics
- gauge / Collecting metrics
- histogram / Collecting metrics
- summary / Collecting metrics
- migrations / Schemas and migrations, Migrations
- module
- about / Functions and Modules, Modules and Named Functions
- attributes / Module attributes, directives, and uses
- directives / Module attributes, directives, and uses
- usage / Module attributes, directives, and uses
- module plug
- creating / Creating a module plug
- modules
- extending / Extending modules
- use and __using__/1 macros, using / Using the use and __using__/1 macros
- Mox library / Creating mocks with Mox
N
- namespaces / Deploying to Kubernetes
- nodes / Deploying to Kubernetes
P
- path helper / Handling requests in a controller
- pattern-matching
- about / Pattern matching
- on tuples / Pattern matching on tuples
- on lists / Pattern matching on lists
- on maps / Pattern matching on maps
- on binaries / Pattern matching on binaries and strings
- on strings / Pattern matching on binaries and strings
- percentiles
- calculating / Calculating percentiles
- Grafana variables, setting / Setting Grafana variables
- Phoenix Channels
- testing / Testing Phoenix Channels
- plug specification
- about / The Plug specification
- module plug, creating / Creating a module plug
- function plug, creating / Creating a function plug
- pods / Deploying to Kubernetes
- process registry / Registry
- property-based testing / Property-based testing
- protocols
- about / Protocols
- structs / Structs
- implementing / Bringing structs and protocols together
Q
- queries
- about / Queries
- media folder query / Media folder queries
- schemas, loading / Loading schemas and their associations
- associations, loading / Loading schemas and their associations
- with raw SQL / Queries with raw SQL
- users, finding with aggregates / Finding top users with aggregates
S
- schemas
- about / Schemas and migrations, Schemas, Schema or not – that is the question
- custom field type / Custom field types
- users or media owners / Users or media owners?
- relationships / Relationships
- Stream module
- lazy processing with / Lazy processing with the stream module
- structs
- implementing / Structs, Bringing structs and protocols together
- supervision trees
- error effects, minimizing with / Minimizing error effects with supervision trees
- supervisor
- used, for recovering errors / Recovering from errors with supervisors and supervision trees
- initiating / Defining and starting a supervisor
- defining / Defining and starting a supervisor
- streamlined child specs / Streamlined child specs
- children defining, dynamic supervisor used / Starting children at runtime using dynamic supervisors
T
- Task module
- about / Task
- parallel tasks / Parallel tasks
- top-level supervisor / Elixir applications
- Travis CI
- used, for continuous deployment / Continuous deployment with Travis CI
- URL / Continuous deployment with Travis CI
- typespecs
- about / Typespecs and behaviours, Typespecs
- dialyzer / Dialyzer
U
- umbrella projects / Umbrella projects
- unit testing
- about / Unit testing
- functions, testing without side-effects / Testing functions without side-effects
- functions, testing with side effects / Testing functions with side-effects
- mocks, creating with Mox library / Creating mocks with Mox
- interactions, testing with repository / Testing interactions with the repository separately
- documentation, testing / Testing the documentation
- upload pipeline
- about / The upload pipeline
- notifier stage / The notifier stage
- RemoteStorage stage / The RemoteStorage stage
- Encryption stage / The Encryption stage
- Starter stage / The Starter stage
- users
- authenticating / Authenticating users
V
- views
- rendering / Rendering views
- layouts / Layouts
W
- window
- to nodes / A window to your nodes
- containerized node, connecting to / Connecting to a containerized node
- Erlang node, connecting to in Kubernetes / Connecting to an Erlang node running in Kubernetes
- worker specs
- producer stage / Producer stage
- ProducerConsumer / ProducerConsumer and Consumer stages
- Consumer stages / ProducerConsumer and Consumer stages
- pipeline worker specs, collecting / Collecting the pipeline worker specs
- supervisor functions, defining / Defining the supervisor functions