SlideShare a Scribd company logo
1 of 40
Download to read offline
Они не те кем кажутся
Транзитивные
зависимости
Гордиенков Андрей
@violettape
my@violet-tape.net
Download presentation how it should be
from here
Транзитивность
A->B, B->C
A->C
Транзитивная зависимость — это тот артефакт, от которого зависит
прямая зависимость проекта.
A v1
B v1 C v1 D v2
E v1 D v1
Пакетные менеджеры
• Self-contained model (npm)
• Share model (NuGet)
projectproject
http://stackoverflow.com/questions/4256994/openwrap-vs-nuget
naos.deployment.Core
(get-package -list naos.deployment.Core| select -ExpandProperty
dependencies) -replace ":|","`r`n"
NuGet 2.x – Визуальный помощник
naos.deployment.Core
Удаление
- RemoveDependencies
NuGet Broken by Design
• Это просто макрос
• Минимум подтверждений от пользователя
• Что устанавливать? По умолчанию последнюю стабильную версию
• Как решать зависимости? Выбрать наименьшую версию
удовлетворяющую пакетам. См.п1.
• Какой набор DLL установить? Чтобы лучше всего подходил версии
фреймворка проекта
PS> Полные права при запуске скриптов
- Возможность запускать любые скрипты
• Newtonsoft.JSON запускает браузер
+ Настройка MSBuild
+ Открытие Readme
+ Скаффолдинг
+ Трансформации XML конфигов
PS> next__
Тесное переплетение со студией
- Установкапакетов требует студии
- Зависимости указаны в *.csproj
+ Все действия полностью аналогичны ручному процессу
Нет новых концепций
Явные минусы
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesDapper.1.42libnet45Dapper.dll</HintPath>
<Private>True</Private>
<Reference Include="Its.Log, Version=2.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesIts.Log.2.8.3libnet40Its.Log.dll</HintPath>
<Private>True</Private>
</Reference>
Явные минусы
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesDapper.1.42libnet45Dapper.dll</HintPath>
<Private>True</Private>
<Reference Include="Its.Log, Version=2.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesIts.Log.2.8.3libnet40Its.Log.dll</HintPath>
<Private>True</Private>
</Reference>
Фиксация версии пакета
Явные минусы
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesDapper.1.42libnet45Dapper.dll</HintPath>
<Private>True</Private>
<Reference Include="Its.Log, Version=2.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesIts.Log.2.8.3libnet40Its.Log.dll</HintPath>
<Private>True</Private>
</Reference>
Конфликты в csproj
Явные минусы
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesDapper.1.42libnet45Dapper.dll</HintPath>
<Private>True</Private>
<Reference Include="Its.Log, Version=2.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesIts.Log.2.8.3libnet40Its.Log.dll</HintPath>
<Private>True</Private>
</Reference>
Multi-Homed проект
Явные минусы
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesDapper.1.42libnet45Dapper.dll</HintPath>
<Private>True</Private>
<Reference Include="Its.Log, Version=2.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..packagesIts.Log.2.8.3libnet40Its.Log.dll</HintPath>
<Private>True</Private>
</Reference>
Перенаправление проекта
Будущее NuGet
• Не трогать *.csproj
• Автоматический ретаргетинг проекта
• Глобальная инсталляция пакетов
• Множественные подключения
• «Плавающие» версии пакетов
• Установка из командной строки (не PS консоль VS)
Демо
Что же делать?
5.3.20 +1-αMajor Minor Patch Qualifier Metadata
Semantic Versioning
http://semver.org/lang/ru/
Без обратной
совместимости
Новый
функционал
Исправление
багов
Служебная
информация о сборке
Предрелизная
метка
Обязательная обратная совместимость
Локальный, проверенный руками
репозиторий?
+ Свое родное
+ Безопасные пакеты (…кажется)
- Всё проверять на практике
- Но всё проверить невозможно
- Можетбыстро устареть
NuGet 2.x - Dep Version
<configuration>
<config>
<add key="DependencyVersion" value="HighestPatch" />
</config>
</configuration>
Возможные значения
- Lowest: самая ранняя возможная версия
- HighestPatch
- HighestMinor
- Highest: самая последняя версия
NuGet 2.x – Визуальный помощник
NuGet 3.x Визуальный помощник
Project.json (> NuGet 3.0)
• https://github.com/aspnet/Home/wiki/Project.json-file
• https://docs.nuget.org/Consume/ProjectJson-Intro
• Только для
• Universal Windows Platform
• Portable class libraries
• ASP.NET 5 applications
NuGet 3.x
Paket
https://github.com/fsprojects/Paket
http://fsprojects.github.io/Paket/
install-packagepaket
paket init
paket install
Можно подключать пакеты NuGet
Можно подключать файлы из GitHub
https://fsprojects.github.io/Paket/github-dependencies.html
Принципы работы Paket
Следование принципам SemVer
Неинвазность работы с csproj и работа из консоли
Максимально предсказуемая политика по работе с версиями
библиотек.
Файлы Paket
• paket.dependencies (.sln)
• все зависимости решения
• paket.lock (.sln)
• Описание ресурсов
• Описание всех транзитивных зависимостей для каждой сборки
индивидуально
• paket.references
• Опиание прямых зависимостей (только имена)
paket.dependencies
paket.lock
paket.references
https://fsprojects.github.io/Paket/references-files.html
Конвертация
paket convert-from-nugget -f
Итого
• Используйте новый NuGet 3.2Paket
• Для NuGet используйте графический
интерфейс
• Используйте политики обновлений для
Nuget 2.X
• Следите за зависимостями в проекте
• Следовать SemVer
Ссылки
• http://stackoverflow.com/questions/4256994/openwrap-vs-nugget
• http://blog.nuget.org/20141010/nuget-is-broken.html
• https://fsprojects.github.io/Paket/
• https://docs.nuget.org/Consume/ProjectJson-Intro
• http://codepyre.com/2012/10/nuget-youre-doing-it-wrong/
• http://habrahabr.ru/company/jugru/blog/191246/ про Maven
• https://github.com/McSherry/libSemVer.NET
Контакты
Андрей Гордиенков
my@violet-tape.net
@violettape
http://softblog.violet-tape.ru

More Related Content

What's hot

Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
Vladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingIevgenii Katsan
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...SQALab
 
Навигация в Android без боли и слез
Навигация в Android без боли и слезНавигация в Android без боли и слез
Навигация в Android без боли и слезMobileUp
 
Micro services – surgical team in test automation with SeleniumSelenium micro...
Micro services – surgical team in test automation with SeleniumSelenium micro...Micro services – surgical team in test automation with SeleniumSelenium micro...
Micro services – surgical team in test automation with SeleniumSelenium micro...egorzzamaraev
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flashguestb0af15
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияbearoff
 
Ядро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуруЯдро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуруSQALab
 
Prometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоPrometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоOntico
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиковITCrowd Almaty
 
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015Zabbix
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Ontico
 
Настраиваемое тестирование производительности
Настраиваемое тестирование производительностиНастраиваемое тестирование производительности
Настраиваемое тестирование производительностиSQALab
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 

What's hot (20)

Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
Vladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testing
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
 
Навигация в Android без боли и слез
Навигация в Android без боли и слезНавигация в Android без боли и слез
Навигация в Android без боли и слез
 
Micro services – surgical team in test automation with SeleniumSelenium micro...
Micro services – surgical team in test automation with SeleniumSelenium micro...Micro services – surgical team in test automation with SeleniumSelenium micro...
Micro services – surgical team in test automation with SeleniumSelenium micro...
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
Ядро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуруЯдро автоматизации под микро-сервисную архитектуру
Ядро автоматизации под микро-сервисную архитектуру
 
Prometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий ЛевченкоPrometheus мониторинг микросервисных приложений / Виталий Левченко
Prometheus мониторинг микросервисных приложений / Виталий Левченко
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиков
 
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
 
Настраиваемое тестирование производительности
Настраиваемое тестирование производительностиНастраиваемое тестирование производительности
Настраиваемое тестирование производительности
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 

Similar to Transitive dependencies

Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеKirill Vechera
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаAlexander Kirillov
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаOpen-IT
 
Как я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил ReduxКак я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил ReduxIT61
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаPositive Hack Days
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...it-people
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 
Автоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеАвтоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеEvgeny Savitsky
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...Ontico
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 

Similar to Transitive dependencies (20)

Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальше
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
Как я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил ReduxКак я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил Redux
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчика
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Методоллогии Agile
Методоллогии AgileМетодоллогии Agile
Методоллогии Agile
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration management
 
Автоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапеАвтоматическое управление DevOps активностями в стартапе
Автоматическое управление DevOps активностями в стартапе
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 

Transitive dependencies