Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
Cerita ini menceritakan tentang sekumpulan katak kecil yang mengikuti perlombaan mendaki menara tinggi. Para penonton meragukan kemampuan katak-katak itu untuk mencapai puncak menara. Hanya satu katak yang tetap bersemangat dan akhirnya berhasil mencapai tujuan, meskipun para penonton terus meragukannya. Katak pemenang itu ternyata tuli sehingga tidak mendengar kata-kata neg
This document provides guidance and expectations for students using laptops at SPA Middle School. It outlines 10 things students should know, such as shutting down laptops before putting them in bags to prevent damage, being careful what is installed on laptops, and backing up files regularly. It also lists technology expectations like using computers as a learning tool, taking responsibility for their condition, and only printing when directed by teachers. Ground rules for appropriate computer and internet use are reviewed, focusing on being respectful, ethical, lawful, and responsible online.
The document provides details on several Starfleet vessels from the Star Trek universe, including their classes, registrations, characteristics, and roles. It summarizes the USS Voyager, an Intrepid-class ship that completed a seven-year journey in the Delta Quadrant between 2371 and 2378, the USS Prometheus experimental prototype capable of splitting into three parts, and the USS Enterprise-E, a Sovereign-class flagship known as the most advanced Starfleet ship in 2373.
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
Cerita ini menceritakan tentang sekumpulan katak kecil yang mengikuti perlombaan mendaki menara tinggi. Para penonton meragukan kemampuan katak-katak itu untuk mencapai puncak menara. Hanya satu katak yang tetap bersemangat dan akhirnya berhasil mencapai tujuan, meskipun para penonton terus meragukannya. Katak pemenang itu ternyata tuli sehingga tidak mendengar kata-kata neg
This document provides guidance and expectations for students using laptops at SPA Middle School. It outlines 10 things students should know, such as shutting down laptops before putting them in bags to prevent damage, being careful what is installed on laptops, and backing up files regularly. It also lists technology expectations like using computers as a learning tool, taking responsibility for their condition, and only printing when directed by teachers. Ground rules for appropriate computer and internet use are reviewed, focusing on being respectful, ethical, lawful, and responsible online.
The document provides details on several Starfleet vessels from the Star Trek universe, including their classes, registrations, characteristics, and roles. It summarizes the USS Voyager, an Intrepid-class ship that completed a seven-year journey in the Delta Quadrant between 2371 and 2378, the USS Prometheus experimental prototype capable of splitting into three parts, and the USS Enterprise-E, a Sovereign-class flagship known as the most advanced Starfleet ship in 2373.
Вопросы, возникающие при использовании MVC, и их решение при помощи VIPER.
1. Проблемы, решаемые VIPER-ом. История появления.
2. Структура VIPER-модуля
3. Сервисы
4. Data flow
5. Навигация
6. Вложенные модули
7. Data flow между модулями
8. Кодогенерация. Vipergen
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
В докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
GTUG Almaty. Dependency Injection в Android Madina Kamzina
Об использовании подхода внедрения зависимостей (Dependency Injection) в разработке Android-приложений. Зачем это нужно и какие преимущества дает. А так же о том, как построить на основе DI гибкую архитектуру приложения.
Ивент здесь: https://plus.google.com/u/0/events/c6bh3b26o29g4k2fom09636fn00
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
Мы создаем nodejs приложения, используя различные современные технологии, такие как Docker, Consul, pm2. Современный спектр решений настолько обширен, что сложно не заблудиться. Как же выбрать нужные вашему проекту технологии, чтобы успешно его запустить и поддерживать? Будут рассказаны истории и, конечно же, даны вредные советы :)
Как на nodejs пройти путь от Hello world приложения до распределённого решения, состоящего из микросервисов?
Мы пройдём жизненный цикл продукта, начав с простого приложения на nodejs. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.
Построив таким образом архитектуру на чистом nodejs, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. Запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.
Часто при разработке ios приложения разработчик попадает в ситуацию когда ViewController начинает аккумулировать в себе больше количество бизнес логики. Из-за накапливающегося связанного кода ViewController становится очень трудно поддерживать. Не так давно в мире ios разработки появилось решение - архитектура VIPER. VIPER это способ разбить massive view controllеры, на набор элементов (View, Interactor, Presenter, Entity, Router) с едиными ответственностями, которые так или иначе удовлетворяют принципам SOLID. Такие модули легко тестирвоать, расширять и переиспользовать.
Вопросы, возникающие при использовании MVC, и их решение при помощи VIPER.
1. Проблемы, решаемые VIPER-ом. История появления.
2. Структура VIPER-модуля
3. Сервисы
4. Data flow
5. Навигация
6. Вложенные модули
7. Data flow между модулями
8. Кодогенерация. Vipergen
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
В докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
GTUG Almaty. Dependency Injection в Android Madina Kamzina
Об использовании подхода внедрения зависимостей (Dependency Injection) в разработке Android-приложений. Зачем это нужно и какие преимущества дает. А так же о том, как построить на основе DI гибкую архитектуру приложения.
Ивент здесь: https://plus.google.com/u/0/events/c6bh3b26o29g4k2fom09636fn00
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
Мы создаем nodejs приложения, используя различные современные технологии, такие как Docker, Consul, pm2. Современный спектр решений настолько обширен, что сложно не заблудиться. Как же выбрать нужные вашему проекту технологии, чтобы успешно его запустить и поддерживать? Будут рассказаны истории и, конечно же, даны вредные советы :)
Как на nodejs пройти путь от Hello world приложения до распределённого решения, состоящего из микросервисов?
Мы пройдём жизненный цикл продукта, начав с простого приложения на nodejs. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.
Построив таким образом архитектуру на чистом nodejs, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. Запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.
Часто при разработке ios приложения разработчик попадает в ситуацию когда ViewController начинает аккумулировать в себе больше количество бизнес логики. Из-за накапливающегося связанного кода ViewController становится очень трудно поддерживать. Не так давно в мире ios разработки появилось решение - архитектура VIPER. VIPER это способ разбить massive view controllеры, на набор элементов (View, Interactor, Presenter, Entity, Router) с едиными ответственностями, которые так или иначе удовлетворяют принципам SOLID. Такие модули легко тестирвоать, расширять и переиспользовать.
3. Термины
Сервис - объект, который может выполняет какую-либо
требуемую функцию
Клиент - тот, кто использует сервис
Зависимость - сервис, который требуется другому объекту
для выполнения каких-либо функций
Зависимый - объект, которому нужен сервис для того,
чтобы выполнять какие-либо возложенные на него функции
4. IoC, истоки
public class Reporter
{
public void SendReports()
{
var reportBuilder = new
ReportBuilder();
var report =
reportBuilder.CreateReport();
var reportSender = new
EmailReportSender();
reportSender.Send(report);
}
}
7. Эволюция
public class Reporter
{
public void SendReports()
{
var reportBuilder =
ServiceLocator.ReportBuilder;
var report =
reportBuilder.CreateReport();
var reportSender =
ServiceLocator.ReportSender;
reportSender.Send(report);
}
}
8. Стало лучше, но...
Мы должны поддерживать ServiceLocator
Зависимый объект всё равно
определяет свои зависимости внутри
реализации
Зависимости неочевидны
9. IoC approach
public class Reporter
{
private readonly IReportBuilder _builder;
private readonly IReportSender _sender;
public Reporter(IReportBuilder builder,
IReportSender sender)
{
_builder = builder;
_sender = sender;
}
public void SendReports()
{
var report = _builder.CreateReport();
_sender.Send(report);
}
}
10. IoC approach
ReportSender не может определить свои
зависимости самостоятельно
Зависимости очевидны
Тестировать проще
Слабосвязанная архитектура
11. DI with IoC containers
Ответсвенность за внедрение
зависимостей перекладывается на
специальный фреймворк (IoC container)
Зависимости конфигурируются в коде
или конфиг-файлах
12. DI with IoC containers
var reporter = container.Get<Reporter>();
reporter.SendReports();
14. Control Freak /
Диктатор-наркоман :)
public class Reporter
{
public void SendReports()
{
var reportBuilder = new
ReportBuilder();
var report =
reportBuilder.CreateReport();
var reportSender = new
EmailReportSender();
reportSender.Send(report);
}
}
15. Bastard injection /
внебрачные зависимости
public class Reporter
{
private readonly IReportBuilder _builder;
private readonly IReportSender _sender;
public Reporter(IReportBuilder builder,
IReportSender sender)
{
_builder = builder;
_sender = sender;
}
public Reporter()
this(ReportBuilder.GetDefaultBuilder(),
ReportSender.GetDefaultSender())
{
_builder = builder;
_sender = sender;
}
}
16. Constrained construction /
ограниченное построение
Type bulderType = GetBuilderType();
Type senderType = GetSenderType();
Reporter reporter =
Activator.CreateInstance(typeof(Reporter)
, builderType, senderType);
17. Service locator
public class Reporter
{
public void SendReports()
{
var reportBuilder =
ServiceLocator.Get<IReportBuilder>();
var report =
reportBuilder.CreateReport();
var reportSender =
ServiceLocator.Get<IReportSender>();
reportSender.Send(report);
}
}
18. Property injection *
Не антипаттерн в класическом понимании, но
требует осторожности
Используйте только тогда, когда это
дейтствительно нужно (какой-либо фреймворк
требует конструктор без параметров)
Используйте тогда, когда поведение объкта
меняется во время выполнения
19. Property injection *
public class Reporter
{
public IReportBuilder Builder { get;set; }
public IReportSender Sender { get;set; }
public void SendReports()
{
var report = Builder.CreateReport();
Sender.Send(report);
}
}
20. Property injection *
Можно изменить зависимости во время
выполнения (например, при смене
настроек без перезапуска приложения)
Если забыть определить зависимости, то
получим исключение на этапе
выполнения