ݺߣ

ݺߣShare a Scribd company logo
Контейнер Сервисов
Что? Где? Когда?
Ханов Руслан
hanov.ruslan@gmail.com
Полезные ссылки
● https://yugeon-dev.blogspot.ru/2010/07/inversion-of-control-containers-and_21.html
● https://symfony.com/doc/current/book/service_container.html
● https://habrahabr.ru/post/278049/
2
SOLID
Первые пять принципов OOAD
Объектно-ориентированный анализ и проектирование
3
Dependency inversion principle
Принцип инверсии зависимостей
4
Реализация
● Фабричный метод (Factory method)
● Локатор сервисов (Service locator)
● Внедрение зависимости (Dependency injection)
5
Фабричный метод
6
7
# Factory.php
class Factory
{
public function getRepository()
{
return new Repository();
}
}
# Controller.php
class Controller
{
public function executeAction()
{
$factory = new Factory();
$repository = $factory->getRepository();
# do some action ...
}
}
Локатор сервисов
8
9
# ServiceLocator.php
class ServiceLocator
{
public function get($name)
{
return $this->services[$name];
}
}
# Controller.php
class Controller
{
public function executeAction()
{
$repository = $this->serviceLocator->get(‘repository’);
# do some action ...
}
}
Внедрение зависимости
10
11
# Controller.php
class Controller
{
# dependency injection …
public function executeAction()
{
$repository = $this->repository;
# do some action ...
}
}
Реализация (для закрепления)
● Фабричный метод (Factory method)
● Локатор сервисов (Service locator)
● Внедрение зависимостей (Dependency injection)
12
Плюсы
13
Плюсы
● Гибкость
14
Плюсы
● Гибкость
● Тестируемость
15
Плюсы
● Гибкость
● Тестируемость
● Немногословность (no boilerplate code)
16
Минусы
17
Минусы
● “Размазанная” логика
18
Минусы
● “Размазанная” логика
● Использование общего состояния (Doctrine index)
19
Минусы
● “Размазанная” логика
● Использование общего состояния (Doctrine index)
● Переусложнение
20
Реализация в symfony
Внедрение зависимостей
21
Реализация в symfony
Внедрение зависимостей
Контейнер сервисов (Service container)
22
Контейнер сервисов
● Сервисы
● Контейнер
23
Типы внедрения
24
● Через конструктор
● Через вызов метода
● Через свойство
24
Через конструктор
25
26
# Controller.php
class Controller
{
public function __construct(Repository $repository)
{
$this->repository = $repository;
}
public function executeAction()
{
$repository = $this->repository;
# do some action ...
}
}
# services.yml
services:
repository:
class: Repository
controller:
class: Controller
arguments:
- “@repository”
Через вызов метода
27
28
# Controller.php
class Controller
{
public function setRepository(Repository $repository)
{
$this->repository = $repository;
}
public function executeAction()
{
$repository = $this->repository;
# do some action ...
}
}
# services.yml
services:
repository:
class: Repository
controller:
class: Controller
calls:
- [setRepository, [“@repository”]]
Через свойство
29
30
# Controller.php
class Controller
{
/**
* @var Repository
*/
public $repository;
public function executeAction()
{
$repository = $this->repository;
# do some action ...
}
}
# services.yml
services:
repository:
class: Repository
controller:
class: Controller
properties:
repository: “@repository”
Типы внедрения (для закрепления)
● Через конструктор
● Через вызов метода
● Через свойство
31
Примеры внедрения
● Controller
● Repository
● Form & FormType
● Command
● Lots of services!
32
33
# Controller.php
class Controller
{
public function executeAction()
{
# do some action ...
}
}
# services.yml
services:
controller:
class: Controller
34
# Repository.php
class Repository
{
public function find($id)
{
# find entity ...
}
}
# services.yml
services:
repository:
class: Repository
factory:
- “@doctrine.orm.default_entity_manager”
- getRepository
35
# FormType.php
class FormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
# build form ...
}
}
# services.yml
services:
form_type:
class: FormType
tags:
- {name: form.type, alias: form_type}
form:
class: SymfonyComponentFormForm
factory:
- “@form.factory”
- create
arguments:
- form_type
36
# Command.php
class Command
{
protected function execute(InputInterface $input, OutputInterface $output)
{
# execute command ...
}
}
# services.yml
services:
repository:
class: Command
tags:
- {name: console.command}
37
# lots-of-services.yml
services:
validator:
class: Validator
serializer:
class: Serializer
client:
class: Client
storage:
class: Storage
translator:
class: Translator
Антипаттерны
● Использование service locator (вне инфраструктурного
кода)
● Использование micro service locator
● Семантическая конфигурация
38
Service locator
39
40
# Controller.php
class Controller
{
public function setContainer(ContainerInterface $container)
{
$this->container = $container;
}
public function executeAction()
{
$repository = $this->container->get(‘repository’);
# do some action ...
}
}
# services.yml
services:
repository:
class: Repository
controller:
class: Controller
calls:
- [setContainer, [“@service_container”]]
Micro service locator
41
42
# Controller.php
class Controller
{
public function setFormFactory(FormFactory $formFactory)
{
$this->formFactory = $formFactory;
}
public function executePostAction()
{
$formPost = $this->formFactory->create(‘form_type_post’);
# do post action ...
}
public function executePutAction()
{
$formPut = $this->formFactory->create(‘form_type_put’);
# do put action ...
}
}
# services.yml
services:
controller:
class: Controller
calls:
- [setFormFactory, [“@form.factory”]]
Семантическая конфигурация
43
44
# CompilerPass.php
class CompilerPass extends CompilerPassInterface
{
public function process(ContainerBuilder $containerBuilder)
{
$definition = $container->getDefinition(‘service’);
$definition->setLazy(true);
}
}
# services.yml
services:
service:
class: Service
# lazy: true
# CompilerPass.php
class CompilerPass extends CompilerPassInterface
{
public function process(ContainerBuilder $containerBuilder)
{
$parameters = $container->getParameter(‘vendor’);
foreach ($parameters as $key => $value) {
$container->setParameter(‘vendor_’ . $key, $value);
}
}
}
# services.yml
parameters:
vendor:
key_1: value_1
key_2: value_2
services:
service:
class: Service
arguments:
- “%vendor_key_1%”
- “%vendor_key_2%”
45
Антипаттерны (для закрепления)
● Использование service locator (вне инфраструктурного
кода)
● Использование micro service locator
● Семантическая конфигурация
46
Плюсы (для закрепления)
● Гибкость
● Тестируемость
● Немногословность (no boilerplate code)
47
Заключение
● Многое становится проще
● Есть несколько реализаций
● Если не читать документацию, можно “заиграться”
● Можно самостоятельно реализовать
48
Спасибо за внимание!
hanov.ruslan@gmail.com
https://github.com/hanovruslan
49

More Related Content

Viewers also liked (20)

Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Mail.ru Group
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Mail.ru Group
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Mail.ru Group
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
Mail.ru Group
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
Mail.ru Group
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
Mail.ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
Mail.ru Group
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
Mail.ru Group
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
Mail.ru Group
Profiling and optimizing go programs
Profiling and optimizing go programsProfiling and optimizing go programs
Profiling and optimizing go programs
Badoo Development
Парсим CSS
Парсим CSSПарсим CSS
Парсим CSS
Badoo Development
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтовАлександр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Mail.ru Group
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Mail.ru Group
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Mail.ru Group
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Mail.ru Group
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Mail.ru Group
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2
Badoo Development
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Mail.ru Group
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Mail.ru Group
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
Mail.ru Group
Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Александр Лисаченко, Alpari, «Решение вопросов сквозной функциональности в пр...
Mail.ru Group
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Максим Попов, Mail.Ru Group, «Асинхронные запросы в MySQL или когда PDO стано...
Mail.ru Group
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Mail.ru Group
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
Mail.ru Group
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
Mail.ru Group
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
Mail.ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
Mail.ru Group
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
«Свой PhoneGap за 15 минут», Алексей Охрименко (IPONWEB)
Mail.ru Group
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
«Компонентная верстка с AngularJS», Андрей Яманов (CTO TeamHunt)
Mail.ru Group
Profiling and optimizing go programs
Profiling and optimizing go programsProfiling and optimizing go programs
Profiling and optimizing go programs
Badoo Development
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтовАлександр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Александр Щусь, Mail.Ru Group, Детектирование взломов почтовых аккаунтов
Mail.ru Group
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Сергей Герасимов (ВМК МГУ), Александр Мещеряков (Институт космических исследо...
Mail.ru Group
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Ростислав Яворский, Высшая Школа Экономики, «Как использовать анализ сетевых ...
Mail.ru Group
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Сергей Николенко, Deloitte Analytics Institute, Высшая Школа Экономики, «От н...
Mail.ru Group
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Иван Лобов, Data-Centric Alliance, «Текущие тенденции в сфере исследования гл...
Mail.ru Group
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2
Badoo Development
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Определение качества сетевого соединения в iOS-почте, Даниил Румянцев, разраб...
Mail.ru Group
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Введение в паттерн Schedulable object, Павел Осипов, руководитель разработки ...
Mail.ru Group
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
«Pocker - GUI для Docker», Владимир Василькин (ALMWorks, Санкт-Петербург)
Mail.ru Group

Similar to Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?» (20)

Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
Ontico
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
Technopark
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Kirill Chebunin
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
Andrew Mayorov
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Dev_Party
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.
Igor Shkulipa
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
dva
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтенд
Timophy Chaptykov
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
Roman Dvornov
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
Magecom Ukraine
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Александр Егурцов
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
Igor Shkulipa
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
Denis Tsvettsih
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
Ontico
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
Technopark
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Kirill Chebunin
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
Andrew Mayorov
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Dev_Party
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.
Igor Shkulipa
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
dva
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтенд
Timophy Chaptykov
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
Roman Dvornov
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
Magecom Ukraine
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Александр Егурцов
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
Igor Shkulipa
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
Denis Tsvettsih

More from Mail.ru Group (20)

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Mail.ru Group
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Mail.ru Group
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Mail.ru Group
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Mail.ru Group
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
Mail.ru Group
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Mail.ru Group
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
Mail.ru Group
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
Mail.ru Group
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
Mail.ru Group
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Mail.ru Group
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Mail.ru Group
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Mail.ru Group
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Mail.ru Group
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Mail.ru Group
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Mail.ru Group
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Mail.ru Group
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Mail.ru Group
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
Mail.ru Group
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Mail.ru Group
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Mail.ru Group
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
Mail.ru Group
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Mail.ru Group
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
Mail.ru Group
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
Mail.ru Group
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
Mail.ru Group
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
Mail.ru Group
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Mail.ru Group
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Mail.ru Group
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Mail.ru Group
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Mail.ru Group
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Mail.ru Group
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Mail.ru Group
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Mail.ru Group

Руслан Ханов, «Контейнер сервисов — Что? Где? Когда?»