Как можно применить аспектно ориентированное программирование к шаблонам проектирования. Какие из них становится легче использовать? Какие полностью выносятся в шаблон и больше не являются частью вашей бизнес-логики.
Как создать более чистый код?
- на эти вопросы ответ в презентации.
Использование аспектов в реализации PostSharp к рефакторингу кода, к шаблонам банды четырех.
Большую часть инфраструктурного кода можно выделить и переиспользовать в других проектах.
На встрече мы поговорим о том, как не бояться изменений и как быть к ним готовым. Дадим определение АОП. Рассмотрим проблемы, хорошо решаемые инструментами АОП. Построим модульную систему, применяя АОП. Сравним динамический и статический подходы в АОП. Дадим рекомендации по применению АОП.
Вас ждет река теории впадающая в море практики.
29-я встреча IT talk Spb.
23 апреля 2015 г.
Тема: «Особенности Agile-разработки интернет-проектов на PHP/Yii, Python/Djangо и Java/Spring»
Спикер: Петр Курышев, «ИнфоСреда»
Опросный лист оценки знаний по соревновательной робототехникеAlexander Kolotov
Опросный лист оценки знаний по соревновательной робототехнике, содержащий матрицу компетенций, которыми рекомендуется овладеть потенциальным участникам робототехнических состязаний уровня World Robot Olympiad.
Как можно применить аспектно ориентированное программирование к шаблонам проектирования. Какие из них становится легче использовать? Какие полностью выносятся в шаблон и больше не являются частью вашей бизнес-логики.
Как создать более чистый код?
- на эти вопросы ответ в презентации.
Использование аспектов в реализации PostSharp к рефакторингу кода, к шаблонам банды четырех.
Большую часть инфраструктурного кода можно выделить и переиспользовать в других проектах.
На встрече мы поговорим о том, как не бояться изменений и как быть к ним готовым. Дадим определение АОП. Рассмотрим проблемы, хорошо решаемые инструментами АОП. Построим модульную систему, применяя АОП. Сравним динамический и статический подходы в АОП. Дадим рекомендации по применению АОП.
Вас ждет река теории впадающая в море практики.
29-я встреча IT talk Spb.
23 апреля 2015 г.
Тема: «Особенности Agile-разработки интернет-проектов на PHP/Yii, Python/Djangо и Java/Spring»
Спикер: Петр Курышев, «ИнфоСреда»
Опросный лист оценки знаний по соревновательной робототехникеAlexander Kolotov
Опросный лист оценки знаний по соревновательной робототехнике, содержащий матрицу компетенций, которыми рекомендуется овладеть потенциальным участникам робототехнических состязаний уровня World Robot Olympiad.
Слайды для лекции о паттернах, что я давал в Aller Media Norge в 2019.
Ссылка на исходник на GDocs:
https://docs.google.com/presentation/d/1CL2umKOcEeBehJ_hFlaD7P5pdoey_trCTeSnd5TiBSI/edit?usp=sharing
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной моделиScrumTrek
Используя имитационную модель на докладе мы проверим, что лучше работает:
Что делать если команда не сбалансирована
Может ли сбалансированная команда работать без ограничения WIP
Как подобрать оптимальные ограничения WIP
Помогает ли приоритезация бизнесу
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
Этот документ рекламирует статический анализатор PVS-Studio. Описывается, как использование PVS-Studio уменьшит количество ошибок в коде проекта на языке C/C++/C++11 и сократит затраты на тестирование, отладку и сопровождение кода. Приводится большое количество примеров ошибок, найденных анализатором в различных Open-Source проектах. Документ описывает PVS-Studio на момент версии 4.38 от 12 октября 2011 и, как следствие, не отражает возможности следующих версий. Чтобы познакомиться с новыми возможностями, предлагаем посетить сайт продукта <a>http://www.viva64.com</a> или поискать обновленный вариант этой статьи.
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
Иногда единственным методом отладки является использование протоколирования событий приложения. К недостаткам протоколирования (логирования) можно отнести большой объем кода, который приходится писать вручную для сохранения всей необходимой информации. В статье рассматривается методика, позволяющая построить систему автоматического протоколирования кода на языке Си/Си++.
Архитектурные решения при создании облачного сервиса на Asp.NetGoSharp
На конференциях часто рассказывают, как хорошо и удобно разрабатывать облачные приложения на той или иной платформе. Однако при реальной разработке возникают вопросы, которые обычно обходят стороной. В докладе я расскажу с какими неочевидными проблемами столкнулся при разработке сервиса под Microsoft Azure, и каким образом эти проблемы были решены.
Когда проект делает один разработчик — все просто. Когда над ним работает небольшая команда, можно синхронизироваться и договориться. А вот когда проектов (сайтов и приложений) становится много, и над ними трудится множество команд с перекрестной функциональностью и смежными зонами ответственности, все становится сложным и запутанным.
Я расскажу о своем виденье архитектуры фронтенда, какой она должна быть, чтобы обеспечить её масштабируемость. На основе своего опыта и проблем, с которыми сталкиваются большие проекты.
Видео: https://www.youtube.com/watch?list=PLknJ4Vr6efQFtZmsXmGG64Rz_PHrcXCBL&v=z9y6PNC2FL0
Слайды для лекции о паттернах, что я давал в Aller Media Norge в 2019.
Ссылка на исходник на GDocs:
https://docs.google.com/presentation/d/1CL2umKOcEeBehJ_hFlaD7P5pdoey_trCTeSnd5TiBSI/edit?usp=sharing
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной моделиScrumTrek
Используя имитационную модель на докладе мы проверим, что лучше работает:
Что делать если команда не сбалансирована
Может ли сбалансированная команда работать без ограничения WIP
Как подобрать оптимальные ограничения WIP
Помогает ли приоритезация бизнесу
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
Этот документ рекламирует статический анализатор PVS-Studio. Описывается, как использование PVS-Studio уменьшит количество ошибок в коде проекта на языке C/C++/C++11 и сократит затраты на тестирование, отладку и сопровождение кода. Приводится большое количество примеров ошибок, найденных анализатором в различных Open-Source проектах. Документ описывает PVS-Studio на момент версии 4.38 от 12 октября 2011 и, как следствие, не отражает возможности следующих версий. Чтобы познакомиться с новыми возможностями, предлагаем посетить сайт продукта <a>http://www.viva64.com</a> или поискать обновленный вариант этой статьи.
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
Иногда единственным методом отладки является использование протоколирования событий приложения. К недостаткам протоколирования (логирования) можно отнести большой объем кода, который приходится писать вручную для сохранения всей необходимой информации. В статье рассматривается методика, позволяющая построить систему автоматического протоколирования кода на языке Си/Си++.
Архитектурные решения при создании облачного сервиса на Asp.NetGoSharp
На конференциях часто рассказывают, как хорошо и удобно разрабатывать облачные приложения на той или иной платформе. Однако при реальной разработке возникают вопросы, которые обычно обходят стороной. В докладе я расскажу с какими неочевидными проблемами столкнулся при разработке сервиса под Microsoft Azure, и каким образом эти проблемы были решены.
Когда проект делает один разработчик — все просто. Когда над ним работает небольшая команда, можно синхронизироваться и договориться. А вот когда проектов (сайтов и приложений) становится много, и над ними трудится множество команд с перекрестной функциональностью и смежными зонами ответственности, все становится сложным и запутанным.
Я расскажу о своем виденье архитектуры фронтенда, какой она должна быть, чтобы обеспечить её масштабируемость. На основе своего опыта и проблем, с которыми сталкиваются большие проекты.
Видео: https://www.youtube.com/watch?list=PLknJ4Vr6efQFtZmsXmGG64Rz_PHrcXCBL&v=z9y6PNC2FL0
Domain Driven Design (DDD) — подход, предложенный Эриком Эвансом для эффективного проектирования и реализации приложений в сложных предметных областях. Основой его является создание модели будущей системы на едином языке (ubiquitous launguage), разрабатываемом для проекта и обеспечивающим надежные коммуникации между всеми участниками проекта. Модель, описанная на этом языке, согласуется с бизнес-заказчиком и верифицируется им, а затем отражается в реализацию системы с использованием типовых шаблонов, так что элементы и конструкции модели могут быть прослежены в коде. Таким образом обеспечивается соответствие поведения готовой системы потребностям заказчика, без чего сложные IT-проекты едва ли могут стать успешными.
В докладе будет дан общий обзор DDD на основе многолетнего успешного опыта его применения для разработки приложений — от построения модели с формированием единого языка до выработки шаблонов реализации типовых элементов модели.
Serghei Iakovlev "Chaos engineering in action"Fwdays
Let's talk about what chaos engineering is and how this discipline can be applied in projects where PHP is used as the main language.
Among other things, we will cover the following topics:
What problems does chaos engineering solve?
What are the solutions exist?
How to develop your own solution?
What is a controlled failover?
A little about ZendEngine and what tools are out of the box?
A bit about chaos design.
A bit about the code leading to chaos.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.
О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
HighLoad++ 2017
Зал «Кейптаун», 7 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2897.html
Нашей группе было поручено создать новый самостоятельный “регион” для всех продуктов New Relic, предназначенный для обслуживания европейских клиентов, подпадающих под ограничения GDPR. Здесь следует отметить, что так как наша компания предоставляла свои услуги исключительно через “облако” (SaaS), то хорошо выработанных процессов для настройки всей инфраструктуры “с нуля” у нас не было.
...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Similar to Автоматизация design patterns и компактный код вместе с PostSharp (20)
Какие проблемы решают инструменты статического анализа. Обзор фич и как они помогают писать код быстрее и лучше. Рассказ о перспективах развития Решарпера и разработки в целом.
"За" и "против" дополнений для VisualStudio.
Обзор возможностей CodeRush.
Как использовать Шаблоны для ускорения разработки.
Рефакторинг, статический анализ.
Roslyn, VS 2014 и CodeRush.
Как попасть на следующий уровень карьеры и зарплаты в C#geekfamilyrussia
Есть ли потолок заработной платы? Что делать, если Вы уперлись в него. Как преодолевать уровни сопротивления и избегать в ловушек в карьере .net разработчика. Результат анализа более 6.000 резюме C# разработчиков в Москве.
Как попасть в лучшие 5% при прохождении собеседования на удаленную работу в T...geekfamilyrussia
Почему TopTal берет только верхние 5%, кто это люди и какими качествами они обладают. По каким критериям проходит оценка .Net разработчика на техническом собеседовании и как к нему подготовиться.
Какие навыки наиболее востребованы и перспективны для разработчика? Давайте посмотрим, что компании ценят уже сейчас и как научиться всегда быть в тренде. Результаты исследования рынка труда техническими специалистами. Детализация анализа с уровня языков программирования до отдельных технологий и навыков.
2. 2
Luxoft Training & GoSharp Conference 2014
Обо мне
Фанат программирования и рассказов о
программировании
Ведет свой блог 5+ года: статьи и видео
АОП евангелист
Очень ленив, поэтому ищет пути как писать меньше, а
делать больше
3. 3
Luxoft Training & GoSharp Conference 2014
Что такое АОП?
Аспе́ ктно-ориенти́ рованное программи́ рование (в дальнейшем АОП)
— это методика программирования в рамках классовой парадигмы,
основанная на понятии аспекта — блока кода, инкапсулирующего
сквозное поведение в составе классов и повторно используемых
модулей.
Wikibooks
Все средства АОП предоставляют средства для выделения сквозной
функциональности в отдельную сущность.
4. 4
Luxoft Training & GoSharp Conference 2014
Шаблоны банды четырех
Мировой бестселлер вышел в 1994 году
23 шаблона были разделены на 3 группы:
Создание объектов
Композиция объектов
Поведение объектов
Облегчают понимание и модификацию, но несколько усложняют
код
5. 5
Luxoft Training & GoSharp Conference 2014
Применимость АОП
Логирование
Трассировка
Но:
– банальные случаи
Применимость гораздо шире!
Например, шаблоны проектирования
Обеспечение уровня доступа к данным
6. 6
Luxoft Training & GoSharp Conference 2014
Применимость АОП – не банальные случаи
Автоматизация инструментирования
Например, расставить другие атрибуты для классов
Реализация GoF шаблонов с помощью АОП
Многие шаблоны можно отделить и применять декларативно
Безопасная работа с многопоточностью
Обработка исключений
Контракты на использование типов данных
UndoRedo
Большая часть примеров использования есть на postsharp.net
7. 7
Luxoft Training & GoSharp Conference 2014
Аспекты не применимы
Façade – не выигрывает от применения аспектов.
Цель шаблона предоставить более удобное API для подсистемы
8. 8
Luxoft Training & GoSharp Conference 2014
Аспекты не играют особенной роли
Неочевидный выигрыш для шаблонов:
State
Interpreter
Аспекты позволяют чуть сильнее локализировать код шаблона.
9. 9
Luxoft Training & GoSharp Conference 2014
Аспекты могут помочь при определенных условиях
Следующие шаблоны используют мощь наследования для
достижения целей
Abstract Factory
Factory Method
Template Method
Builder
Bridge
Аспекты могут нести в себе код из абстрактных классов,
освобождая место для явного наследования
10. 10
Luxoft Training & GoSharp Conference 2014
Аспекты могут облегчить жизнь
Большая часть поведения, может быть выделена в аспект для
следующих шаблонов:
Composite
Command
Mediator
Chain of Responsibilities
[Node]
public class TopLevel : IComposite {
private readonly List<IComponent> items = new List<IComponent>();
public void Add(IComponent component) {
items.Add(component);
}
public int Count() {
return items.Count;
}
}
[Node(Parent = typeof (TopLevel))]
public class LowLevel2 : IComponent {}
11. 11
Luxoft Training & GoSharp Conference 2014
Аспекты кардинально меняют картину
Для следующих шаблонов аспекты могут полностью изменить
процесс использования шаблона:
Adapter
Decorator
Strategy
Visitor
Proxy
Код шаблона выносится в аспект и применяется для всего
семейства участвующих классов
12. 12
Luxoft Training & GoSharp Conference 2014
Аспекты полностью реализуют шаблон
Для следующих шаблонов реализация в участниках полностью
исчезает
Observer
Для случая INotifyPropertyChange реализация в PostSharp из коробки
Memento
Реализация в PostSharp из коробки
Singleton
Prototype
Реализация шаблона становится универсальной
[SingletonClass]
public class MyClass {
public int Counter;
public static MyClass Instance { get; private set; }
private MyClass() {}
}
}
13. 13
Luxoft Training & GoSharp Conference 2014
Основные выводы
Для 17 из 23 шаблонов возможно применить АОП с
локализацией кода.
Для 12 из 17 можно ядро шаблона выделить в отдельные
повторно используемые классы.
Для 14 из 17 появляется более прозрачная компоновка
участников шаблона.
Знания о применении шаблона не теряется благодаря подсветке
синтаксиса
14. 14
Luxoft Training & GoSharp Conference 2014
Шаблон Локальность Повторное
использование
Прозрачность
компоновки
Отключаемость
Façade - - - -
Abstract Factory Нет Нет Нет Нет
Bridge Нет Нет Нет Нет
Builder Нет Нет Нет Нет
Factory Method Нет Нет Нет Нет
Interpreter Нет Нет но Нет
Template Method (Да) Нет Нет (Да)
Adapter Да Нет Да Да
State (Да) Нет но (Да)
Decorator Да Нет Да Да
Proxy (Да) Нет (Да) (Да)
Visitor (Да) Да Да (Да)
Command (Да) Да Да Да
Composite Да Да Да (Да)
Iterator Да Да Да Да
Flyweight Да Да Да Да
Memento Да Да Да Да
Strategy Да Да Да Да
Mediator Да Да Да Да
Chain of Responsibility Да Да Да Да
Prototype Да Да (Да) Да
Singleton Да Да но Да
Observer Да Да Да Да
15. 15
Luxoft Training & GoSharp Conference 2014
Вопросы
Приходилось ли использовать в продакшене?
Да, приходилось
Для чего?
Как раз таки для детального трейса фин.операций в системе для этого не
приспособленной изначально.
Тяжело ли его продавить руководству и коллегам?
Да, очень тяжело
Почему?
Сопротивление всему новому в природе человека
16. 16
Luxoft Training & GoSharp Conference 2014
Ссылки для самостоятельного изучения
Пишем АОП сами http://habrahabr.ru/post/199378/ - для
самостоятельных
Пользуемся готовым – http://www.postsharp.net/ – есть бесплатная
версия, которая хороша
Теория
https://www.cs.ubc.ca/labs/spl/papers/2002/oopsla02-patterns.pdf
ftp://cs.joensuu.fi/pub/Theses/2008_MSc_Oprisan_Andrei.pdf
Мифы и реальность АОП (ажно 15 штук)
https://www.ibm.com/developerworks/ru/library/j-aopwork15/
Методология АОП была предложена группой инженеров исследовательского центра Xerox PARC под руководством Грегора Кичалеса (Gregor Kiczales). Ими же было разработано аспектно-ориентированное расширение для языка Java, получившее название AspectJ[en] — (2001 год).
Схема шаблонов, сводная
Например, используя советы по смене состояния при определенных действиях
Структурно они все в целом одинаковы. Наследование используется для различения разных, но родственных компонентов. Это уже хорошо сделано в ООП само по себе. Только если вдруг приспичило множественное наследование.
Роли в шаблоне определяются самим шаблоном и полностью отделены от клиентского кода. Это дает больше поле для деятельности в целом.
Опираются на ограничения языка, языковые конструкции. Именно поэтому эти шаблоны могут совсем исчезнуть при возникновении новых технологий или фич языка. АОП как раз такая фича =) тут может быть время для маленького демо.
(**) Locality: “(yes)” means that the pattern is localized in terms of its superimposed roles but the implementation of the remaining defining role is still done using multiple classes (e.g. State classes for the State pattern). In general, (yes) for a desirable property means that some restrictions apply