Lessons: Advanced
Taking our knowledge to the next level, these lessons get cover the advanced topics of Elixir and the BEAM.
Мы уже рассматривали абстракции языка Elixir для параллельного выполнения, но иногда нужна более широкая функциональность, и тогда мы обращаемся к поведениям OTP.
В этом уроке мы сосредоточимся на GenServer
Супервизоры это специальные процессы с единственной целью: мониторинг других процессов. Супервизоры позволяют нам создавать отказоустойчивые приложения при помощи автоматического перезапуска дочерних процессов в случае их отказа.
Мы можем запускать наши приложения Elixir на множестве различных узлов, распределенных по одному или по нескольким хостам. Elixir позволяет нам взаимодействовать между этими узлами с помощью нескольких различных механизмов, которые мы опишем в этом уроке.
Метапрограммирование — процесс написания кода с помощью другого кода. В Elixir это дает нам возможность расширять возможности языка для большего соответствия нуждам приложения. Мы начнем этот урок с рассмотрения внутреннего представления Elixir кода, а потом узнаем, как его модифицировать. И, в итоге, мы применим эти знания для создания собственных расширений языка.
Предупреждение: метапрограммирование это сложно и оно должно использоваться только, когда абсолютно необходимо Злоупотребление этим инструментом приведет к нечитабельности и сложностям в отладке кода.
Со временем ваш проект может вырасти до очень больших размеров.
Для таких случаев инструмент Mix
позволяет разделить код проекта на несколько приложений и сделать ваши проекты на Elixir
более управляемыми по мере развития.
В этом уроке мы узнаем о директивах @spec
и @type
. Первая — скорее дополнение синтаксиса языка для написания документации, которая может быть проанализирована специальными инструментами. Вторая — помогает нам писать более читаемый и понятный код.
В предыдущем уроке мы познакомились со спецификациями, теперь мы узнаем, как можно потребовать от модуля реализовывать определённые спецификации. В Elixir такая функциональность называется поведением.
В этом уроке мы рассмотрим протоколы, что это такое и как мы их используем в Elixir.