Роман Дворнов (Avito)
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
После докладов мы проведём дискуссионную панель на тему "Организация системы компонент", в которой примут участие докладчики, а также приглашенные эксперты.
Дизайн платформа в Avito - Александр Лобашев (Avito)AvitoTech
Компонентный подход принес много пользы, а вместе с тем и проблему переиспользования компонентов. В проекте появились сотни, тысячи компонентов, но со временем мы совсем забыли где они живут, как их использовать и как они выглядят. А что если дизайнер нарисовал интерфейс с новой кнопкой? Использовать текущий компонент или сделать новую кнопку для маленького интерфейса?
Я расскажу, как мы сделали пряничный домик для дизайнеров, а также наладили коммуникацию и коллаборацию между дизайнерами, разработчиками и менеджерами.
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
Я расскажу о том, как мы разрабатываем фронтенд и бэкенд параллельно, используя protobuf + JSON RPC.
Часто фронтенд выставляет требования к бэкенду, из этих требований получается API, и разработка возможна только при одновременной работе серверного и клиентского девелопера.
Мы же начинаем разработку с API, и фронтенд (а также мобильные приложения) никак не зависят от степени готовности бэкенда.
– Я поделюсь тем, как мы делаем API до начала разработки;
– Success story использования protobuf + RPC;
– И немного – о разработке клиента вообще без серверного кода.
Денис Давыдов - Кроссплатформенные инструменты серверной разработки .NETElias Fofanov
Денис Давыдов расскажет как жить, если вы хотите разрабатывать и запускать серверные приложения под .NET, не используя Windows.
В числе прочего, вы узнаете:
.NET Framework, .NET Standard, .NET Core, Mono – чем отличаются и где следует применять.
Rider, VS for Mac, VS Code — что можно использовать уже сегодня, сидя в Старбакс с макбуком.
Restore, build, pack – как перейти с msbuild на ты.
Расширение dotnet cli – как разработать свою dotnet command.
Есть три богатыря нагрузочного тестирования, и каждый инструмент хорош по-своему: Microsoft Visual Studio, HP LoadRunner и Apache JMeter. Хотели бы Вы выполнять нагрузочное тестирование удобно, бесплатно и правильно? Тогда можно взять от каждого инструмента самое лучшее. Впомогательные инструменты и структуру теста удобно взять из HP LoadRunner. Писать и отлаживать скрипт удобнее всего в Visual Studio. А подавать нагрузку, создавать контролируемое количество потоков выполнения, из Apache JMeter.
Дизайн платформа в Avito - Александр Лобашев (Avito)AvitoTech
Компонентный подход принес много пользы, а вместе с тем и проблему переиспользования компонентов. В проекте появились сотни, тысячи компонентов, но со временем мы совсем забыли где они живут, как их использовать и как они выглядят. А что если дизайнер нарисовал интерфейс с новой кнопкой? Использовать текущий компонент или сделать новую кнопку для маленького интерфейса?
Я расскажу, как мы сделали пряничный домик для дизайнеров, а также наладили коммуникацию и коллаборацию между дизайнерами, разработчиками и менеджерами.
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
Я расскажу о том, как мы разрабатываем фронтенд и бэкенд параллельно, используя protobuf + JSON RPC.
Часто фронтенд выставляет требования к бэкенду, из этих требований получается API, и разработка возможна только при одновременной работе серверного и клиентского девелопера.
Мы же начинаем разработку с API, и фронтенд (а также мобильные приложения) никак не зависят от степени готовности бэкенда.
– Я поделюсь тем, как мы делаем API до начала разработки;
– Success story использования protobuf + RPC;
– И немного – о разработке клиента вообще без серверного кода.
Денис Давыдов - Кроссплатформенные инструменты серверной разработки .NETElias Fofanov
Денис Давыдов расскажет как жить, если вы хотите разрабатывать и запускать серверные приложения под .NET, не используя Windows.
В числе прочего, вы узнаете:
.NET Framework, .NET Standard, .NET Core, Mono – чем отличаются и где следует применять.
Rider, VS for Mac, VS Code — что можно использовать уже сегодня, сидя в Старбакс с макбуком.
Restore, build, pack – как перейти с msbuild на ты.
Расширение dotnet cli – как разработать свою dotnet command.
Есть три богатыря нагрузочного тестирования, и каждый инструмент хорош по-своему: Microsoft Visual Studio, HP LoadRunner и Apache JMeter. Хотели бы Вы выполнять нагрузочное тестирование удобно, бесплатно и правильно? Тогда можно взять от каждого инструмента самое лучшее. Впомогательные инструменты и структуру теста удобно взять из HP LoadRunner. Писать и отлаживать скрипт удобнее всего в Visual Studio. А подавать нагрузку, создавать контролируемое количество потоков выполнения, из Apache JMeter.
В мире автоматизации давным-давно успешно используют W3C Webdriver HTTP протокол. С его помощью реализовано множество проектов и библиотек на различных языках (selenide, protractor, webdriverio и тысячи других). Но так же в последнее время все больше и больше команд решают использовать Chrome Debug Protocol, в частности инструмент Puppeteer. Он основан на WebSockets, и имеет свои особые возможности - двухсторонняя связь, возможность подписки на события в браузере, и многое другое. В этом докладе мы посмотрим возможности обоих протоколов, поэкспериментируем и совместим их вместе в одном проекте, чтобы заставить браузер работать на полную и взять лучшее от двух каналов связи.
https://seleniumcamp.com/talk/webdriverio-puppeteer-double-gun-double-fun/
In the automation world, W3C Webdriver HTTP protocol has been successfully used for a long time. With its help, many projects and libraries in various languages have been implemented (selenide, protractor, webdriverio and thousands of others). But more and more teams decide to use Chrome Debug Protocol, in particular the Puppeteer tool. It is based on WebSockets, and has its own special features – two-way communication, ability to subscribe to events in the browser, and much more. In this talk, we will look at the capabilities of both protocols, experiment and combine them together in one project to make the browser work at full power, and take the best from both communication channels.
"Prom.ua shopping cart workflow as a microfrontend", Danylo KazymyrovFwdays
For a long time, the Prom.ua shopping cart was part of a monolith. After migration to SSR there was a need to reuse it and make it a separate application.
In my talk, I will tell about the approach to building interaction between frontend applications and show how we applied it to Prom.ua shopping cart.
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Fwdays
В докладе расскажу о шишках, набитых в процессе настройки SEO для конкретного проекта. Речь пойдет о настройке SEO для своего одностраничного приложения как с привлечением сторонних сервисов, так и самостоятельно, используя PhantomJS или рендеринг на стороне сервера. Также, поделюсь особенностями размещения share-кнопок от различных провайдеров.
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.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
* приемы доступа к данным;
* прикладной класс работы с БД поверх PDO, особенности PDO;
* связки пуллов коннектов;
* API хранимых процедур;
* работа c распределенным хранилищем;
* RPC между базами на примере асинхронного геокодинга.
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
Rempl – крутая платформа для крутых инструментовRoman Dvornov
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
CodeFest, Новосибирск, 2017
Рано или поздно возникает необходимость в собственных инструментах по разным причинам: либо не хватает готовых, либо есть какая-то особенность в проекте. Разработка инструментов, работающих в браузере, является непростой задачей. Самое сложное — чтобы они умели работать удаленно, вне страницы. Это многих пугает — нужно много сделать и во многом разобраться. Но если большая часть проблем уже решена, и можно сосредоточиться лишь на основной функции инструмента? Что если такие инструменты смогут работать в произвольном WebView, будь оно встроено в браузер, редактор или другое приложение на любом устройстве? Доклад про удалённые инструменты: какие есть сложности и как их обойти, как перестать бояться и начать делать инструменты под свои задачи и технологический стек.
В мире автоматизации давным-давно успешно используют W3C Webdriver HTTP протокол. С его помощью реализовано множество проектов и библиотек на различных языках (selenide, protractor, webdriverio и тысячи других). Но так же в последнее время все больше и больше команд решают использовать Chrome Debug Protocol, в частности инструмент Puppeteer. Он основан на WebSockets, и имеет свои особые возможности - двухсторонняя связь, возможность подписки на события в браузере, и многое другое. В этом докладе мы посмотрим возможности обоих протоколов, поэкспериментируем и совместим их вместе в одном проекте, чтобы заставить браузер работать на полную и взять лучшее от двух каналов связи.
https://seleniumcamp.com/talk/webdriverio-puppeteer-double-gun-double-fun/
In the automation world, W3C Webdriver HTTP protocol has been successfully used for a long time. With its help, many projects and libraries in various languages have been implemented (selenide, protractor, webdriverio and thousands of others). But more and more teams decide to use Chrome Debug Protocol, in particular the Puppeteer tool. It is based on WebSockets, and has its own special features – two-way communication, ability to subscribe to events in the browser, and much more. In this talk, we will look at the capabilities of both protocols, experiment and combine them together in one project to make the browser work at full power, and take the best from both communication channels.
"Prom.ua shopping cart workflow as a microfrontend", Danylo KazymyrovFwdays
For a long time, the Prom.ua shopping cart was part of a monolith. After migration to SSR there was a need to reuse it and make it a separate application.
In my talk, I will tell about the approach to building interaction between frontend applications and show how we applied it to Prom.ua shopping cart.
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Fwdays
В докладе расскажу о шишках, набитых в процессе настройки SEO для конкретного проекта. Речь пойдет о настройке SEO для своего одностраничного приложения как с привлечением сторонних сервисов, так и самостоятельно, используя PhantomJS или рендеринг на стороне сервера. Также, поделюсь особенностями размещения share-кнопок от различных провайдеров.
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.
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
DevConf 2016
"Великолепный API без Rest", Констатин Якушев (Badoo)
О чём пойдёт речь:
1. Мы используем Google Protobuf для документации и как протокол для нативных платформ. На вебе они оборачиваются в JSON через http + server-sent events. Расскажу, как это помогает в документации и в процессах.
2. Все поля и сообщения документируются, для новых функций пишется подробный обзор со скриншотами "по шагам" и примерами сообщений и ответов. Покажу, как это выглядит и зачем нужно.
3. Версионирование осуществляется через флаги "Клиент умеет такую-то возможность" или "Клиент знает о таком-то изменении протокола". Это гораздо лучше, чем номер версии и резко увеличивает гибкость системы. Разберу с конкретными примерами, как это работает.
4. Кроме того, расскажу об отдельной команде в Badoo, занимающейся развитием этой истории.
* приемы доступа к данным;
* прикладной класс работы с БД поверх PDO, особенности PDO;
* связки пуллов коннектов;
* API хранимых процедур;
* работа c распределенным хранилищем;
* RPC между базами на примере асинхронного геокодинга.
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
Rempl – крутая платформа для крутых инструментовRoman Dvornov
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
CodeFest, Новосибирск, 2017
Рано или поздно возникает необходимость в собственных инструментах по разным причинам: либо не хватает готовых, либо есть какая-то особенность в проекте. Разработка инструментов, работающих в браузере, является непростой задачей. Самое сложное — чтобы они умели работать удаленно, вне страницы. Это многих пугает — нужно много сделать и во многом разобраться. Но если большая часть проблем уже решена, и можно сосредоточиться лишь на основной функции инструмента? Что если такие инструменты смогут работать в произвольном WebView, будь оно встроено в браузер, редактор или другое приложение на любом устройстве? Доклад про удалённые инструменты: какие есть сложности и как их обойти, как перестать бояться и начать делать инструменты под свои задачи и технологический стек.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Когда проект делает один разработчик — все просто. Когда над ним работает небольшая команда, можно синхронизироваться и договориться. А вот когда проектов (сайтов и приложений) становится много, и над ними трудится множество команд с перекрестной функциональностью и смежными зонами ответственности, все становится сложным и запутанным.
Я расскажу о своем виденье архитектуры фронтенда, какой она должна быть, чтобы обеспечить её масштабируемость. На основе своего опыта и проблем, с которыми сталкиваются большие проекты.
Видео: https://www.youtube.com/watch?list=PLknJ4Vr6efQFtZmsXmGG64Rz_PHrcXCBL&v=z9y6PNC2FL0
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
Презентация к вебинару об устройстве фреймворка symfony 2.
Видеозапись вебинара находится в моём блоге по адресу http://frontend-dev.ru/2012/12/12/symfony2-основы
Нещодавно відбувся Online TechTalk “Flutter Mobile Development”!
Під час заходу спікери розібрали, що таке Flutter, та навіщо використовувати саме його. Також поговорили про основні принципи та підходи до розробки на Flutter, його перспективи та найпопулярніші аплікації зроблені на ньому.
Деталі та відео заходу: https://bit.ly/3mKszBR
Случалось ли, что вы видели (чужой) код и хотели все переписать? Бывало такое, что вы не могли понять, почему кем-то было принято конкретное решение, не другое? Хотели ли вы воскликнуть:«А я бы сделал еще круче!»?
Если вы задумывались об этом, вам будет интересно послушать историю о том, как эти вопросы возникали у Александра и Кирилла и как они решались в условиях большой компании.
Разработчики расскажут, как в самом начале пути вытаскивали шашки и шли в атаку на проблемную архитектуру. Но все оказалось не так просто, и по мере погружения в проект парни стали понимать, что архитектура большой системы — компромисс между различными подходами и решениями, инновациями и легаси (наследованным кодом), централизацией и децентрализацией компонентов. Докладчики наработали очень много опыта в решении архитектурных задач и поделятся опытом и выработанными принципами, которых придерживаются в настоящее время.
Во время доклада будут обсуждаться непростые вопросы, возникающие при принятии решений о том, как будет жить и эволюционировать система.
Вместе со слушателями Александр и Кирилл проделают упражнение по созданию «таблицы технологий» и её эволюции. Также они покажут, насколько важно инженерное решение на любой из стадий развития системы.
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Yandex
Рассказ о том, что представляет собой наш «станок» верстальщика сегодня. Рассказывается с примерами, какие браузеры поддерживаем, как производим кроссбраузерное тестирование и какие инструменты используем, готовя проект к выходу в свет.
Сегментация изображений на острие науки (Евгений Нижибицкий, Rambler&Co)AvitoTech
В последнее время на популярных площадках появляется все больше конкурсов, связанных с компьютерным зрением, и в особенности — с сегментацией изображений. Некоторое время назад в таких задачах повсеместно доминировали подходы на основе сети U-Net. Евгений расскажет о решениях двух недавно завершившихся конкурсов, где хорошо зарекомендовали себя подходы на основе новой, претендующей на “народное признание“, сети.
Применение компьютерного зрения для анализа спортивных соревнований (Николай ...AvitoTech
Большое количество статистической информации о ходе спортивных игр и соревнований собирается вручную. Для автоматизации этого процесса можно использовать методы компьютерного зрения. В докладе будут рассмотрены подходы к анализу видеопотока с игры в настольньй теннис в реальном времени. Будут предложены алгоритмы, основанные на искусственных нейронных сетях и классическом компьютерном зрении для определения игровых событий, траектории мяча и фиксации результатов с судейского табло, а также представлены первые результаты.
Распознавание лиц с помощью глубоких нейронных сетей (Сергей Миляев, VisionLabs)AvitoTech
В докладе будут рассмотрены основные научные работы, которые позволили нейронным сетям распознавать людей точнее, чем это делает человек. Также будут продемонстрированы результаты компании VisionLabs на независимых международных тестах Face Recognition Vendor Test института NIST и Labeled Faces in the Wild Университета Массачусетса.
AvitoNet: сервис компьютерного зрения в Avito (Артур Кузин, Avito)AvitoTech
В Avito активно используется машинное обучение в различных микросервисах и продуктах. В докладе будет рассказано про часть, связанную с компьютерным зрением: AvitoNet. Это внутренний датасет и обученные на нём нейросети. Артур Кузин расскажет про задачи, которые ставились перед сервисом AvitoNet на этапе планирования, а также о выбранном подходе к решению и эволюции сервиса. Будут показаны результаты с демонстрацией работы AvitoNet во время подачи объявлений.
Добиваемся эффективности каждого из 9000+ UI-тестов - Максим Сахаров (Tutu.ru)AvitoTech
Любой проект со временем растет и наполняется новыми функциональными возможностями. QA-процессы должны оперативно и адекватно на это реагировать. Например, увеличением количества тестов всех видов. В этом докладе мы будем говорить про UI-тесты, которые играют важную роль в создании качественного продукта.
Количество тестов постепенно растет: от 1000 к 3000, от 6000 к 9000+ и т.д. Чтобы эта лавина не "накрыла" наш QA-процесс, нужно с самого раннего этапа развития проекта автоматизации думать про эффективность всей системы и каждого теста в ней.
В этом докладе я расскажу, как сделать систему гибкой к изменениям, а также про эффективное использование каждого из тестов. Кроме того, мы поговорим про оценку и метрики не только процессов автоматизации, но и всего QA.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Проблемы управления тестами, или Что мешает создавать дешевые и полезные тест...AvitoTech
Мы все стремимся создавать качественные продукты. Мы знаем, что для того, чтобы создавать качественные тесты, их надо проверять, а значит, создавать тесты. Мы все знаем насколько это нужно… до того момента, пока не начинаем делать продукт.
И как только мы с горящими глазами садимся создавать свои тесты, нам тут же начинает мешать множество вещей: долго, дорого, ненужно, неэффективно… Хотя вот буквально пару недель назад все были согласны, что нужно писать тесты.
Давайте посмотрим, можно ли выбраться из этого лабиринта отговорок и создавать тесты быстро, дёшево и эффективно их потом поддерживать.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Запускаем тесты в Continuous Integration - Сергей Пак (JetBrains)AvitoTech
Continuous integration умеет запускать тесты. Для этого его и придумали. Однако, как всегда, есть нюансы, связанные с теми или иными видами тестов. На митапе я расскажу про особенности настройки CI для работы с нагрузочным, приёмочным, интеграционным, UI- и Smoke-тестированием, проверкой корректности установки и апгрейда. Поговорим о том, на какие грабли можно при этом наступить и как их обойти.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Векторы развития систем автоматизации тестирования - Дмитрий Химион (Avito)AvitoTech
Вы думаете, что сделали все для того, чтобы ваша система автоматизации тестирования работала чётко и правильно? Закрыли список задач? Или наоборот, находитесь в поиске того, что еще не охвачено? Тогда этот доклад для вас и для всех, кто интересуется автоматизацией тестирования и её гранями.
Когда все процессы в системах автотестирования работают нормально и выдают релевантные результаты, есть риск обмануться, что сделано уже всё, впереди — лишь унылая актуализация автотестов. Доклад прольет свет на то, что можно делать полезного в рамках и вокруг автоматизации тестирования.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
Прокачиваем WebDriverAgent, или Как тестировать iOS-приложения после ядерного...AvitoTech
Когда в прошлом году Apple с выходом Xcode 8 отказались от UI Automator, мы, как и многие, оказались у разбитого корыта. Appium, который у нас использовался, потерял актуальность, мы начали искать альтернативы и нашли инструмент WebDriverAgent от Facebook. Доклад о том, с какими проблемами мы столкнулись, как мы их решали и как это повлияло на нашу инфраструктуру тестирования iOS-приложений.
Avito Automation Meetup (26.08.2017)
https://avitotech.timepad.ru/event/542380/
30. 21
Разделение ответственности
Хорошо ложится на паттерн
publisher-subscriber
Runtime
Data
Subject
UI
Publisher
собирает и публикует данные
Subscriber
визуализирует полученные данные
Tool
34. Ключевые проблемы
• Сложность реализации инфраструктуры
(интеграции, транспорт, протоколы, API и т.д.)
• Неудобство процесса разработки
• Версионирование
• …
24
habrahabr.ru/company/jugru/blog/317060/
41. Терминология
• Subject – то, за чем наблюдаем
• Publisher – собирает и публикует данные
• Subscriber – получает данные и строит интерфейс
• Transport – канал и протокол взаимодействия
• Host – интеграция в другие приложения (плагин),
создает sandbox для выбранного publisher'а
• Sandbox – изолированная среда для subscriber'а
• Env – доступ к окружению с дополнительной
функциональностью (devtools, редактор…)
31
42. Терминология
• Subject – то, за чем наблюдаем
• Publisher – собирает и публикует данные
• Subscriber – получает данные и строит интерфейс
• Transport – канал и протокол взаимодействия
• Host – интеграция в другие приложения (плагин),
создает sandbox для выбранного publisher'а
• Sandbox – изолированная среда для subscriber'а
• Env – доступ к окружению с дополнительной
функциональностью (devtools, редактор…)
31
Инструмент
43. Терминология
• Subject – то, за чем наблюдаем
• Publisher – собирает и публикует данные
• Subscriber – получает данные и строит интерфейс
• Transport – канал и протокол взаимодействия
• Host – интеграция в другие приложения (плагин),
создает sandbox для выбранного publisher'а
• Sandbox – изолированная среда для subscriber'а
• Env – доступ к окружению с дополнительной
функциональностью (devtools, редактор…)
31
Инструмент
44. Фокус на самом инструменте –
об остальном позаботится rempl
32
51. Принцип работы
34
Publisher Subscriber (UI)
publish(data) subscribe(data => { … })
call('method', …args, callback)method(…args, callback)
on each update
52. Принцип работы
34
Publisher Subscriber (UI)
publish(data) subscribe(data => { … })
call('method', …args, callback)method(…args, callback)
callback(…args)
on each update
53. Где живет subscriber?
35
• Subcriber может запускаться в произвольном
WebView
• Если WebView-клиент будет знать о subscriber,
то будет заточен на один UI и его версию
• Поэтому информация о subscriber хранится в
publisher'е, а клиент ее запрашивает
70. Типы subscriber'а
45
script – JavaScript bundle (string)
sandbox.eval(rempl.source)
sandbox.eval(content)
url – адрес страницы с subcriber'ом
sandbox.src = content
// нужно подключить rempl самим
Better for
production
Better for
development
71. rempl.source (quine)
46
Rempl может реплицировать себя
Не нужно включать rempl.js в subscriber (для script)
;(function $rempl() {
// … rempl bundle (rempl.js)
rempl.source = ';(' + $rempl + ').call(this);';
}).call(this);
Финальный шаг сборки
99. Плюсы
• Можно открыть в любом rempl-хосте
• Построен на web-технологиях
• Проще делать UI
• Возможность сделать более богатый UX
• Можно прикрутить готовые решения для
анализа и пр.
62
108. Несколько идей
• Во что ресолвится ссылка на модуль и переход
к нужному файлу
• Во что транспилируется редактируемый файл
• Подсвечивать на странице то, на что влияет
редактируемый файл или его часть
• Доступные в шаблоне биндинги или текущие значения
• … ограничивается лишь вашей фантазией
69
117. В первую очередь
• Стабилизировать API
• Документация, туториалы, примеры
• Обкатать ключевые компоненты (хосты,
транспорты и т.д.), реализовать недостающее
• Больше опций для поставки UI
78
118. Интеграции
• Browser's devtools
• Chrome (Opera)
• Firefox (планируется)
• В других браузерах пока невозможно
• Редакторы и IDE
• Atom
• VS Code (github.com/Microsoft/vscode/issues/22068)
• JetBrains IDEs (планируется)
• …
79
119. В долгосрочной перспективе
• SDK для наиболее частых задач (данные, DOM etc)
• Перевести существующие инструменты на rempl
• Безопасность
• Возможность авторизации и разделения прав
• Connection specific content
• … новые идеи появляются постоянно ;)
80
122. В чем польза
83
Для разработчиков
• Не нужно тратить
время на инфраструктуру
• Готовые решения
для типовых задач
• Надежная и обкатанная
платформа (в перспективе)
• Не нужно наступать на грабли ;)
• Не нужно ставить плагины
под каждый инструмент
• Возможность выбрать
наиболее подходящий
сценарий использования
• Нужно разобраться только
с одним решением (rempl)
Для пользователей