DiaVol
Премиум
- 15 Сен 2015
- 15.296
- 24.198
[Thinknetica] Артем Нистратов - Метапрограммирование на Ruby (2023)
Онлайн-воркшоп для Ruby-разработчиков, которые хотят освоить искусство метапрограммирования и понять, где, как и зачем его стоит применять
Программа воркшопа
День 1. Метапрограммирование в Ruby и не только
Рассмотрим само понятие "метапрограммирование" в примерах на разных языках. Повторим наиболее распространенные техники и методы.
Научиться использовать основной набор средств метапрограммирования в Ruby. Закрепить полученные сведения в небольшой библиотеке с самописным DSL в качестве домашнего задания.
День 2. Динамический Ruby
Рассмотрим вблизи динамическую природу Ruby и научимся создавать объекты с поведением, зависимым от окружения, будь то переменные из контекста выполнения или настройки запуска программы.
Научиться динамически создавать расширения для классов и объектов из набора опций и параметров. Закрепить новые знания на практике путем улучшения API библиотеки из первой домашней работы.
День 3. Метапрограммирование в реальных проектах
Изучим код крупных проектов на ruby, использующих метапрограммирование. Сравним их слабые и сильные стороны с изученными на прошлых занятиях подходами.
Закроете оставшиеся пробелы по теме метапрограммирования в Ruby. Посмотрите на типичное применение метапрограммирования в известных проектах через призму полученного на занятиях опыта.
За время воркшкопа вы:
СКАЧАТЬ МАТЕРИАЛ ПО ССЫЛКЕ НИЖЕ
Онлайн-воркшоп для Ruby-разработчиков, которые хотят освоить искусство метапрограммирования и понять, где, как и зачем его стоит применять
Программа воркшопа
День 1. Метапрограммирование в Ruby и не только
Рассмотрим само понятие "метапрограммирование" в примерах на разных языках. Повторим наиболее распространенные техники и методы.
- Сравним метапрограммирование в разных языках
- Разберем базовые приемы метапрограммирования в Ruby:
- method declarations (define_method & def)
- code execution (eval & exec)
- variable access (instance_variable_get/set, const_get/set)
- class & module callbacks (included & extended)
- Обсудим принципы применения метапрограммирования
- Создадим небольшую библиотеку с DSL
Научиться использовать основной набор средств метапрограммирования в Ruby. Закрепить полученные сведения в небольшой библиотеке с самописным DSL в качестве домашнего задания.
День 2. Динамический Ruby
Рассмотрим вблизи динамическую природу Ruby и научимся создавать объекты с поведением, зависимым от окружения, будь то переменные из контекста выполнения или настройки запуска программы.
- Рассмотрим разницу ключевых слов и методов на примерах:
- def vs define_method
- class/module vs Class.new/Module.new
- Изучим способы создания "чистого" DSL
- Применим объект binding на практике
- Научимся создавать подклассы встроенных типов и разберем ситуации, когда это может быть полезно
Научиться динамически создавать расширения для классов и объектов из набора опций и параметров. Закрепить новые знания на практике путем улучшения API библиотеки из первой домашней работы.
День 3. Метапрограммирование в реальных проектах
Изучим код крупных проектов на ruby, использующих метапрограммирование. Сравним их слабые и сильные стороны с изученными на прошлых занятиях подходами.
- Рассмотрим внутренности Ruby on Rails, Dry.rb, Rspec
- Разберемся в нюансах вещей, оставшихся в стороне предыдущих тем:
- Использование method_missing
- method_added callback
- Связь методов initialize и new
- Подведем итоги по вопросам применения метапрограммирования
Закроете оставшиеся пробелы по теме метапрограммирования в Ruby. Посмотрите на типичное применение метапрограммирования в известных проектах через призму полученного на занятиях опыта.
За время воркшкопа вы:
- Научитесь правильно использовать основные средства метапрограммирования в Ruby
- Посмотрите на привычные ruby-разработчику идиомы новым взглядом
- Научитесь писать DSL и библиотеки с гибко настраивающимися функциями
- Разберетесь с применением метапрограммирования на примере Ruby on Rails, Rspec, Dry.rb
Вам необходимо зарегистрироваться на сайте для просмотра скрытых ссылок
СКАЧАТЬ МАТЕРИАЛ ПО ССЫЛКЕ НИЖЕ
Для просмотра скрытого содержимого вы должны зарегистрироваться
Возможно, Вас ещё заинтересует:
- [Андрей Кобец] [kobezzza] IndexedDB в действии. Тариф Расширенный (2025)
- [Инфоурок] Базовая компьютерная подготовка с изучением Windows, Word, Excel, интернета
- [Product University] Blockchain Developer c нуля
- [Venator Browser] Закладки, каталог и статьи из OSINT браузера Venator Red 2.0
- Linux для разработчиков [2024] [Слёрм] [Павел Калашников]
- [plc-edu] Дмитрий Громов - HMI Язык C++ в среде Qt Creator
- Чиним сломанные процессы [Podlodka.io, Михаил Дружинин, Дмитрий Константинов и др.]
- [Глеб Учитель] [Stepik] Проектирование архитектуры и интеграций (API / брокеры) сервисов
- Все про базы данных [Podlodka.io, Дмитрий Константинов, Константин Евтеев и т.д]
- Терминал Linux. Основы работы в командной строке [Stepik]