— Что делать, если у вас много асинхронного кода и он выглядит как лапша?
— Как делать системы проще, используя подходы и принципы из мира функционального программирования.
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...solit
Виктор Русакович, Минск, Web-developer c 6-ти летним опытом разработки, компания GP Software.travel
«Реактивный JavaScript. Победа над асинхронностью и вложенностью». Development секция. Для разработчиков. Высокий уровень подготовки.
«Непрерывная интеграция сложного проекта. Кто всё сломал?». IT секция. Agile отделение. Для всех уровней подготовки.
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...solit
Виктор Русакович, Минск, Web-developer c 6-ти летним опытом разработки, компания GP Software.travel
«Реактивный JavaScript. Победа над асинхронностью и вложенностью». Development секция. Для разработчиков. Высокий уровень подготовки.
«Непрерывная интеграция сложного проекта. Кто всё сломал?». IT секция. Agile отделение. Для всех уровней подготовки.
MongoDB - About Performance Optimization, Ivan Griga - Smart GammaEvgeniy Kuzmin
- For which data types MongoDB is more suitable.
- Basic tips for optimizing performance.
- How to quickly and easily speed up a high-load project that uses MongoDB as the main data repository.
- How to build queries and use indexes.
Доклад о дизайне кода в функциональном стиле на C++, представленный вниманию плюсовиков на C++ User Group Novosibirsk 2014.
В качестве демонстрационного проекта была реализована игра "Амбер" по мотивам "Хроник Амбера" Р. Желязны.
https://github.com/graninas/Amber
Презентация со встречи сообщества SPb Python Interest Group рассказывающая об устройстве словарей в Python.
В презентации рассмотрена работа словаря в CPython 2.x, словаря в CPython 3.x, а также рассмотрены изменения в CPython 3.6.
Помимо CPython рассмотрены версии словаря в альтернативных реализациях Python, таких как PyPy, IronPython и Jython.
Что требуется бизнесу от программиста? Количество LOC? Нет. Производительность в условных попугаях по типу KPI? Не в первую очередь. Бизнесу нужен результат в виде улучшения благосостояния за счёт программного продукта. Поэтому я хочу рассказать о библиотеках и приёмах, которые позволят максимально эффективно создавать программы под Android с минимальными трудозатратами на обход неудобств платформы и языка.
Август 2014, IT-летник, Новосибирск
Александр Щепановский «Почему каждому языку нужен свой _»DevDay
Такие библиотеки как funcy и underscore часто связывают с функциональным программированием, но настоящий их фокус - это практичность. Задача их - упростить манипулирование данными, коллекциями, функциями и даже потоком управления, а также абстрагировать часто встречащиеся полезные поведения. В своём докладе я приведу жизненные примеры использования всего этого, а также расскажу об идеях заложенных в и продвигаемых funcy.
Slides for my PyCon and DevDay talk about the idea of Underscore spread onto other languages.
Video (in russian) is available here http://www.youtube.com/watch?v=lGAC6ftYUS0#t=12100
MongoDB - About Performance Optimization, Ivan Griga - Smart GammaEvgeniy Kuzmin
- For which data types MongoDB is more suitable.
- Basic tips for optimizing performance.
- How to quickly and easily speed up a high-load project that uses MongoDB as the main data repository.
- How to build queries and use indexes.
Доклад о дизайне кода в функциональном стиле на C++, представленный вниманию плюсовиков на C++ User Group Novosibirsk 2014.
В качестве демонстрационного проекта была реализована игра "Амбер" по мотивам "Хроник Амбера" Р. Желязны.
https://github.com/graninas/Amber
Презентация со встречи сообщества SPb Python Interest Group рассказывающая об устройстве словарей в Python.
В презентации рассмотрена работа словаря в CPython 2.x, словаря в CPython 3.x, а также рассмотрены изменения в CPython 3.6.
Помимо CPython рассмотрены версии словаря в альтернативных реализациях Python, таких как PyPy, IronPython и Jython.
Что требуется бизнесу от программиста? Количество LOC? Нет. Производительность в условных попугаях по типу KPI? Не в первую очередь. Бизнесу нужен результат в виде улучшения благосостояния за счёт программного продукта. Поэтому я хочу рассказать о библиотеках и приёмах, которые позволят максимально эффективно создавать программы под Android с минимальными трудозатратами на обход неудобств платформы и языка.
Август 2014, IT-летник, Новосибирск
Александр Щепановский «Почему каждому языку нужен свой _»DevDay
Такие библиотеки как funcy и underscore часто связывают с функциональным программированием, но настоящий их фокус - это практичность. Задача их - упростить манипулирование данными, коллекциями, функциями и даже потоком управления, а также абстрагировать часто встречащиеся полезные поведения. В своём докладе я приведу жизненные примеры использования всего этого, а также расскажу об идеях заложенных в и продвигаемых funcy.
Slides for my PyCon and DevDay talk about the idea of Underscore spread onto other languages.
Video (in russian) is available here http://www.youtube.com/watch?v=lGAC6ftYUS0#t=12100
«Облачный» сервис интеллектуального анализа данных. графический интерфейс пос...Анастасия Вязьмина
Презентация к диплому бакалавра
Выполнила: студентка
4 курса, 481 группы
А.Н. Вязьмина
Научный руководитель:
к.ф.-м.н., доцент,
С.И. Жилин
Барнаул, Алтайский государственный университет
2012 год
Видео примера работы с интерфейсом можно скачать тут: https://yadi.sk/i/DlZqdKFPgLCry
Презентация подготовлена по материалам выступления Ярослава Савченко на витебском Весеннем MiniQ (https://vk.com/spring_miniq), который был проведен 23 марта 2017.
— Ярослав, пару слов о себе.
— Я UI-разработчик в компании EPAM. Соответственно, большую часть своего времени любуюсь на JavaScript-код. Люблю красивые интерфейсы. Митапы и прочие подобные события посещаю достаточно редко и предпочитаю смотреть выступления в записи, но в этот раз решил даже выступить сам.
— Откуда желание рассказать про ES2015?
— Веб-приложения растут, требования к ним увеличиваются, инструменты для разработки совершенствуются. Взрослеет и основной для фронтенда язык - JavaScript. Недавно в нем появился ряд новых возможностей, призванных упростить жизнь разработчика. Однако не все разработчики поспевают за изменениями: кто-то только изучает JS, у кого-то все не доходят руки, а кто-то вообще редко заплывает в гавань фронтенда и не следит за положением дел. Мой доклад рассчитан именно на популяризацию нового стандарта JS.
16. • Одинаковые аргументы — одинаковый результат
• Отсутствуют наблюдаемые сайд-эффекты
Чистые функции
17. // Конкатенация строк — чистая функция
NSString *CombineStrings(NSString *l, NSString *r);
// Любая математическая операция тоже чистая
int sum(int a, int b);
@interface Collection : NSObject
// Нечистая функция — нет аргументов и
// возвращаемое значение каждый раз разное.
- (id)next;
@end
Чистые функции
21. • Набор неизменяемых значений
одного типа во времени
• Может закончится успешно или с
ошибкой
• Может и вовсе не иметь значений
Поток
22. • Создание потоков
• Преобразования одних в другие
• Подписка на значения
FRP Frameworks
23. UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
24. @“H”
Current text: H
UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
25. @“H”
@“He”
Current text: H
Current text: He
UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
26. @“H”
@“He”
@“Hel”
Current text: H
Current text: He
Current text: Hel
UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
27. @“H”
@“He”
@“Hel”
@“Hell”Current text: H
Current text: He
Current text: Hel
Current text: Hell
UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
28. @“H”
@“He”
@“Hel”
@“Hell”
@“Hello”
Current text: H
Current text: He
Current text: Hel
Current text: Hell
Current text: Hello
UITextField *field = [UITextField new];
[field.rac_textSignal
subscribeNext:^(NSString *text) {
NSLog(@"Current text: %@", text);
}];
Text Field как поток
49. Реактивное присваивание
//Неважно, как именно начался поиск, но после его
//начала фокус с поисковой строки надо убрать.
RAC(self, topBarVM.textFieldVM.focused) =
[self.searchVM.searchDidStartSignal mapReplace:@NO];
50. • В четыре раза лучше коллбэков
• В два раза лучше промисов
• Способствуют локальности кода
• Упрощают обработку ошибок в цепочках
• Избавляют от Callback Hell
Потоки — это монады
54. • Неизменяемые объекты — значения в потоке
• Потоки изолируют состояние
• Операторы — чистые функции
• Операторы изолируют взаимосвязи
Functional Reactive Programming
55. • Прозрачность кода
• Единообразие в работе с разными сущностями
• Простота асинхронного программирования
• Описание “что” надо сделать, вместо “как”
FRP на практике