Do you want to pick up from where you left of?
Take me there

Lessons: Advanced

Taking our knowledge to the next level, these lessons get cover the advanced topics of Elixir and the BEAM.

Параллелизм в OTP

Мы уже рассматривали абстракции языка Elixir для параллельного выполнения, но иногда нужна более широкая функциональность, и тогда мы обращаемся к поведениям OTP.

В этом уроке мы сосредоточимся на GenServer

OTP Супервизоры

Супервизоры это специальные процессы с единственной целью: мониторинг других процессов. Супервизоры позволяют нам создавать отказоустойчивые приложения при помощи автоматического перезапуска дочерних процессов в случае их отказа.

Распределение OTP

Мы можем запускать наши приложения Elixir на множестве различных узлов, распределенных по одному или по нескольким хостам. Elixir позволяет нам взаимодействовать между этими узлами с помощью нескольких различных механизмов, которые мы опишем в этом уроке.

Метапрограммирование

Метапрограммирование — процесс написания кода с помощью другого кода. В Elixir это дает нам возможность расширять возможности языка для большего соответствия нуждам приложения. Мы начнем этот урок с рассмотрения внутреннего представления Elixir кода, а потом узнаем, как его модифицировать. И, в итоге, мы применим эти знания для создания собственных расширений языка.

Предупреждение: метапрограммирование это сложно и оно должно использоваться только, когда абсолютно необходимо Злоупотребление этим инструментом приведет к нечитабельности и сложностям в отладке кода.

Зонтичные проекты

Со временем ваш проект может вырасти до очень больших размеров. Для таких случаев инструмент Mix позволяет разделить код проекта на несколько приложений и сделать ваши проекты на Elixir более управляемыми по мере развития.

Спецификации и типы

В этом уроке мы узнаем о директивах @spec и @type. Первая — скорее дополнение синтаксиса языка для написания документации, которая может быть проанализирована специальными инструментами. Вторая — помогает нам писать более читаемый и понятный код.

Поведения

В предыдущем уроке мы познакомились со спецификациями, теперь мы узнаем, как можно потребовать от модуля реализовывать определённые спецификации. В Elixir такая функциональность называется поведением.

Протоколы

В этом уроке мы рассмотрим протоколы, что это такое и как мы их используем в Elixir.