Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
1. Что такое дистрибутив большого продукта?
2. Проблема: знаниями о процессе установки продукта владеет малое число людей.
3. Шаблоны + DSL - решение всех проблем!
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
1. Описание старого процесса сбора данных о тестах: как было до, что хорошего, что плохого
2. Influxdb, как хранилище time-series данных,
3. Zabbix - мониторинг нагрузочных стендов: windows и linux агенты, активный сбор данных, autodiscovery виртуальных машин в esx
4. Grafana, как способ превратить графики и дашборды в конфетку
5. Автоматизация нагрузки от пользователей через web-UI при помощи Jmeter, отображение статистики в реальном времени, CI в Teamcity
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days
1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Презентация с технической секции #BitByte - фестиваля профессионального развития, который прошел 19 мая в Санкт-Петербурге.
Даниил Павлючков, Team Lead компании ITMozg: «REST: от GET до HMAC или как создать качественное REST API».
DEV Labs 2016. Микросервисы - первая кровьSasha Soleev
Микросервисная архитектура - это не только новая мода но и хорошее решение для нынешних реалий разработки программного обеспечения. Однако, с ними не все так просто, как хотелось бы. В этом докладе будет рассказано о практическом опыте разработки системы, основанной на микросервисах, и проблемах, с которыми столкнулись разработчики. К каждой проблеме будет приложен совет, который поможет либо решить ее, либо предупредить. Видео https://youtu.be/79o2nt-wKsI
Секционный доклад
Экскурс в мир WEB разработки
Дмитрий Лаабе
Генеральный директор и основатель рекрутинговой компании IT-Доминанта
Технический директор и программист
портала Айти-Событие
Россия. Санкт-Петербург
http://it-sobytie.ru/events/3120
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
1. Что такое дистрибутив большого продукта?
2. Проблема: знаниями о процессе установки продукта владеет малое число людей.
3. Шаблоны + DSL - решение всех проблем!
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
1. Описание старого процесса сбора данных о тестах: как было до, что хорошего, что плохого
2. Influxdb, как хранилище time-series данных,
3. Zabbix - мониторинг нагрузочных стендов: windows и linux агенты, активный сбор данных, autodiscovery виртуальных машин в esx
4. Grafana, как способ превратить графики и дашборды в конфетку
5. Автоматизация нагрузки от пользователей через web-UI при помощи Jmeter, отображение статистики в реальном времени, CI в Teamcity
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days
1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Презентация с технической секции #BitByte - фестиваля профессионального развития, который прошел 19 мая в Санкт-Петербурге.
Даниил Павлючков, Team Lead компании ITMozg: «REST: от GET до HMAC или как создать качественное REST API».
DEV Labs 2016. Микросервисы - первая кровьSasha Soleev
Микросервисная архитектура - это не только новая мода но и хорошее решение для нынешних реалий разработки программного обеспечения. Однако, с ними не все так просто, как хотелось бы. В этом докладе будет рассказано о практическом опыте разработки системы, основанной на микросервисах, и проблемах, с которыми столкнулись разработчики. К каждой проблеме будет приложен совет, который поможет либо решить ее, либо предупредить. Видео https://youtu.be/79o2nt-wKsI
Секционный доклад
Экскурс в мир WEB разработки
Дмитрий Лаабе
Генеральный директор и основатель рекрутинговой компании IT-Доминанта
Технический директор и программист
портала Айти-Событие
Россия. Санкт-Петербург
http://it-sobytie.ru/events/3120
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
GraphQL API: Patterns | Андрей Чиж | Zlit TechZlit
Это некий список шаблонов, подходов и рекомендаций при разработке API (включая опыт, ошибки из реальной жизни, как не упустить задел на будущее etc), который можно рассматривать как определенный "code style" для API.
Любая команда в любой компании открывает этот доклад / репозиторий в гитхаб и проектирует крутой API без детских ошибок, с легкой возможностью раcширять функционал и в котором учтены потребности бекенда и фронтенда.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
Основные понятия связанные с разработкой ПО: просто о сложном.
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
Я расскажу о том, как мы разрабатываем фронтенд и бэкенд параллельно, используя protobuf + JSON RPC.
Часто фронтенд выставляет требования к бэкенду, из этих требований получается API, и разработка возможна только при одновременной работе серверного и клиентского девелопера.
Мы же начинаем разработку с API, и фронтенд (а также мобильные приложения) никак не зависят от степени готовности бэкенда.
– Я поделюсь тем, как мы делаем API до начала разработки;
– Success story использования protobuf + RPC;
– И немного – о разработке клиента вообще без серверного кода.
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
Ни один современный продукт не обходится без API. Этот API может быть внешним, для публичного использования, а может быть сугубо внутренним, но требования к созданию расширяемого, версионируемого, тестируемого, документированного программного интерфейса очень похоже. В этом докладе мы поговорим о том, как создавать подобные API на основе REST, какие существуют best-practices, чего следует избегать, на что обращать внимание при проектировании.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
Эта презентация расскажет простым языком о том, что за технология Python, какие у нее сильные и слабые стороны, кто ее использует и для каких проектов она подходит.
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
Наша команда в DevExpress недавно выпустила Preview версию нового продукта, RTF web-редактора – ASPxRichEdit.
Продукт требует высокой отзывчивости на действия пользователя и максимальной производительности. Поэтому клиент получился «толстым» в отличие от «тонких клиентов» большинства бизнес-приложений.
В составе продукта два полнофункциональных компонента - клиентский и серверный текстовые процессоры. Оба компонента работают независимо друг от друга. Клиентская часть создавалась как оптимизированная версия серверного компонента, переписанного с .NET на TypeScript.
Клиентская часть не уступает в сложности серверной. Кроме того, возникают дополнительные проблемы синхронизации состояний моделей на клиенте и сервере и глубокого тестирования клиент-серверного взаимодействия.
В этом докладе вы узнаете, как мы разрабатывали этот продукт, какие проблемы встретили и какие методики тестирования использовали.
Видеозвонки и шаринг экрана в мобильном приложенииVoximplant
Александр Сербул (Битрикс24)
Видеозвонки и шаринг экрана в мобильном приложении
О спикере
Отвечает за контроль качества интеграции и внедрений компании «1С-Битрикс» и выступает в роли архитектора и разработчика проектов, связанных с высокой нагрузкой и отказоустойчивостью («Битрикс24»). Окончил кафедру «Автоматизация и информатика» Донского государственного технического университета. До 2002 года работал советником в администрации Президента России по Южному федеральному округу, разработал официальный портал Юго-Западного банка Сбербанка России. Увлекается философией Unix, гибкими методологиями разработки ПО, системным анализом и проектированием.
О докладе
Рассмотрим технологию реализации видеозвонков HD-качества и шаринга экрана для мобильных приложений на платформах Android и Apple. Подробно остановимся на подводных камнях и доработках ядра WebRTC.
INTERCOM 2016, Москва
Сайт конференции: https://intercomconf.com/
The document discusses Uber's APIs and how they can be used to build experiences that enhance transportation. It notes that Uber has facilitated over 2 billion trips across more than 470 cities. Developers can integrate their apps with Uber's APIs to authenticate users, request rides, access ride details and context through the trip to improve users' experiences. The document provides examples of how ride context could be used to suggest local guides, play media based on trip duration, and control smart home devices like heating when approaching home.
This document discusses building and shipping software using GitHub. It provides key facts about GitHub such as being founded in 2008, having over 15 million registered users and 36 million repositories. It also shares principles from "The Zen of GitHub" including that responsive is better than fast, practicality beats purity, and favor focus over features. The document advocates for empowering businesses to build great software through culture, tools, process and a DevOps approach.
This document introduces .NET Core and its advantages over the .NET Framework. It discusses how .NET Core is cross-platform, uses the .NET Standard library, and can create self-contained applications. It also highlights how .NET Core applications are smaller, faster, and container-friendly. The document demonstrates how to use the dotnet CLI and publish .NET Core applications to reduce their deployment size. Overall, it promotes adopting .NET Core for its performance, portability, and familiar .NET APIs.
René Gröschke gave a talk on the latest features and future direction of Gradle. Some of the key points included:
- Gradle is moving to a Kotlin-based DSL for improved performance, tooling support, and bringing application patterns to builds.
- Performance improvements include a dedicated performance team that has improved Android Gradle Plugin build times significantly.
- Composite builds allow including external projects to debug dependencies or test plugins against real projects.
- Build cache and distributed build cache are incubating features to cache and share build results for faster rebuilds.
- Gradle build scans provide insights into builds to debug issues, optimize performance, and compare builds
The document discusses containerizing ASP.NET Core applications with Kubernetes. It begins with an overview of .NET Core and containers, and how they have converged. It then discusses Kubernetes and how it can help manage containers at scale. It covers Kubernetes building blocks like deployments, pods, labels, services, and replica sets. It provides examples of deploying containers with Kubernetes, including demonstrations of creating deployments, services, scaling applications, and rolling updates.
9. 9“Магазин”. День 0
Выбрали HTTP, почему нет
GET запрос на список товаров, json в ответ
GET запрос на детальное описание товара, json в ответ
Остальное по аналогии
Выпустили на iOS и Android
10. 10День 1
А давай добавим немного HTML в описание товара?
Ну совсем чуть-чуть
Да на самом деле хватит одного <b>
11. 11День 1. Мысли
Нужна обратная совместимость для клиентов на бою
Добавить параметр в запрос?
Сделать новую версию api?
Отдавать в ответе всё — и старое и c <b>?
А что если в дальше понадобится <i>?
12. 12День 2
А давай сделаем чат? Пользователи будут в восторге!
Причём давай наш собственный, с уникальными фичами
13. 13День 2. Мысли
HTTP — однонаправленный. Клиент спросил — сервер ответил
А тут надо в обе стороны… хм…
Ок, быть может long polling сойдёт…
14. 14День 3
А давай раскатим чат только на часть аудитории?
И сделаем A/B-тест!
15. 15День 3. Мысли
Ок, добавим запрос на конфигурацию фичи
В ответе также будет вариант A/B теста
16. 16День 4
А давай добавим ссылки в сообщения в чате?
И чтобы они вели на другие экраны приложения
И не забудь, теперь мы всегда выкатываем постепенно!
17. 17HTTP
С развитием продукта просто HTTP не хватает
Хочется чтобы API был про продукт, а не про стандарт
Нужна идеология, план расширения
19. Свой протокол
Заточен под продукт
Больше возможностей
Меньше неопределённостей
Удобнее, потому что самим для себя
Но имеет свою цену
19
20. Badoo — MAPI
Выкатили в 2010
Постоянно вносим изменения
Поддерживаем пять платформ
Прошли несколько мажорных редизайнов продукта
Ни разу не хотели всё переделать
20
21. Protobuf
Типизированный формат описания данных
Есть примитивные типы, перечисления и структуры
Все поля структур опциональны
Поля структур могут быть массивами
21
22. Protobuf
Набор генераторов кода для всех основных ЯП
Превращает спеку в модель на выбранном языке
Предоставляет де/сериализацию в бинарь и JSON
22
25. struct Message {
var messageId: UInt32?
var connectionId: UInt32?
var bodies: [MessageBody]?
}
25
26. MessageBody
Состоит из типа и тела
Все типы — значения перечисления
Все тела — поля одной структуры. Это дёшево!
Строгое соответствие тип → тело
У сообщения тела может не быть
26
27. struct MessageBody {
var type: MessageType?
var serverAppStartup: ServerAppStartup?
var clientAppStartup: ClientAppStartup?
var genericError: GenericError?
[…]
}
27
28. enum MessageType {
case acknowledge // body: null
case serverAppStartup // body: serverAppStartup
case clientAppStartup // body: clientAppStartup
case genericError // body: genericError
[…]
}
28
29. struct MessageBody {
var type: MessageType? // = .serverAppStartup
var serverAppStartup: ServerAppStartup?
var clientAppStartup: ClientAppStartup?
var genericError: GenericError?
[…]
}
29
30. struct MessageBody {
var type: MessageType? // = .clientAppStartup
var serverAppStartup: ServerAppStartup?
var clientAppStartup: ClientAppStartup?
var genericError: GenericError?
[…]
}
30
31. struct MessageBody {
var type: MessageType? // = .genericError
var serverAppStartup: ServerAppStartup?
var clientAppStartup: ClientAppStartup?
var genericError: GenericError?
[…]
}
31
35. struct ServerAppStartup {
var appVersion: String?
var platformType: PlatformType?
var deviceInfo: DeviceInfo?
var sessionId: String?
var capabilities: [CapabilityType]?
var features: [FeatureType]?
}
35
36. enum CapabilityType {
case supportsBoldTagInDescriptions
case supportsItalicTagInDescriptions
[…]
}
enum FeatureType {
case chat
case nativeLinksInChat
[…]
}
36
37. struct ClientAppStartup {
var features: [AppFeature]?
[…]
}
struct AppFeature {
var type: FeatureType?
var isEnabled: Bool?
var abTestVariationId: String?
}
37
38. Транспортировка сообщений
В HTTP каждый запрос независим от предыдущих
В данном подходе предполагается обратное
Бинарный формат Protobuf!
38
48. API — в репозиторий
Атомарные изменения нескольких документов
Каждому изменению — тикет с причиной
Привычный процесс ревью, как с кодом
Генерация вебсайта билд-системой
Удобно подключается к кодобазам проектов
48
49. Закрепим
Участвуйте в создании и развитии API
HTTP — не серебряная пуля
Протокол под себя — дороже, зато удобнее
Документация — максимально подробно, с примерами
Всё — в репозиторий
49