TBD, Shist Left тестирование, SCRUM и прочее, можно ли внедрить это всё в большой продукт? Как эти практики помогают поставлять ценность?
Разберём реальные примеры факапов и успешных случаев. А также рассмотрим рекомендаций, какие практики нужны вашей команде.
Вспомним, зачем нам на самом деле библиотеки и фреймворки, попытаемся понять, где мы свернули не туда и научимся проектировать приложения устойчивые к любым изменениям.
Доклад посвящен созданию универсальных, легко подключаемых CI/CD пайплайнов для фронтенд-разработчиков.
Основное внимание будет уделено ускорению процессов, масштабируемости и повторному использованию конфигураций в различных проектах.
Сколько типов вы пишете и используете в своих проектах? Насколько они сложны? Случалось ли вам думать, что что-то невозможно полноценно затипизировать? А задумывались ли вы о том, на что действительно способна система типов TypeScript?
Спойлер: она способна на большее, чем вы думаете.
В докладе продемонстрирую возможности нескольких продвинутых типов TypeScript, используя модуль интерполяции в качестве примера, и докажу, что на типах можно программировать.
Поговорим о нейронных сетях, рассмотрим общие принципы их функционирования, напишем простейший классификатор картинок, рассмотрим существующие решения задач цифрового зрения.
Доклад, про особенности внедрения и развития автоматического тестирования для легаси проектов. С чего начать, как развивать и поддерживать.
Поговорим про самые полезные, на мой взгляд, паттерны при написании автоматических тестов и про особенности модели "Пирамида тестирования" для легаси проекта.
Современный backend из десятков микросервисов — опасная вещь. Как быстро выяснить что пошло не так? Что нужно сделать чтобы глубже разобраться в проблеме?
В докладе пойдёт речь о трассировке, которая может помочь дать ответы на эти вопросы в экстренной ситуации.
Вы узнаете о том что такое трассировка, как это выглядит, что даёт OpenTelemetry и как он упрощает жизнь при поиске дефектов
Ознакомимся с нотацией BPMN и рассмотрим один из самых популярных инструментов для работы с ней - Camunda.
Поговорим о подводных камнях производительности данной системы, способах её оптимизации и ускорения, а также о методике нагрузочного тестирования данного продукта.
Как небольшой команде удалось создать популярный медиа-сервис.
manga.ovh - это крупный агрегратор литературы, преимущественно азиатской. Мы находимся в топ 200К сайтов по данным Cloudflare, имеем полмиллиарда page view ежемесячно по данным Google. При этом нашу деятельность сложно назвать коммерческой, так как небольшое количество рекламы покрывает только само содержание портала.
В этих условиях необходимо: ⁃ раздавать 150Тб контента ежемесячно; ⁃ иметь uptime 99.95; ⁃ развивать проект.
В докладе расскажу про общую архитектуру сервиса, собственные грабли и процесс бесшовной миграции.
pytest - не просто фреймворк для тестирования, но целая экосистема. Его используют в том числе и для интеграционных тестов, и в BDD, и для тестирования скриптов на другом языке программирования. Потому что он удобен!
В докладе познакомимся с основными концепциями этого фреймворка, а также разберём популярные библиотеки, которые делают его использование таким простым и универсальным.
Мир Python отчаянно движется в сторону асинхронщины.
Прошло всего 10 лет с выпуска asyncio, но у нас уже десяток фреймворков и несколько серверов приложений.
Большинство из них так или иначе реализуют стандарт ASGI - о нём как раз и поговорим. Чем он отличается от WSGI, зачем нужен и какие сложности привносит.
Нельзя так просто взять и запустить приложение в Kubernetes! На примере простого Django-монолита разберём способы оптимизации docker-образов и типичные ошибки, соберём docker-compose для тестовых окружений и напишем манифесты для Kubernetes. Доклад поможет разобраться не только как что-то сделать, но и почему именно так.
Как не сойти с ума, если у вас десятки репозиториев?
Поделюсь опытом разработки и внедрения шаблона микросервиса на основе FastAPI с помощью Cookiecutter. Он поможет всё упростить и стандартизировать, но для начала надо продать его бизнесу.
Расскажу об опыте внедрения на уровне команды и кросс-командного взаимодействия и разработки. Рассмотрю «палку» с двух сторон.
Путь к TBD долог и тернист, на пути встретится много препятствий. В докладе разберем один из самых главных компонентов — Feature Flags. Обсудим как с ними работать и подводные камни внедрения.
Многие рассказывают о том, как построить дизайн систему с нуля, но что делать, если у вас есть продукт с 20 миллионной аудиторией, огромной кодовой базой, массой поверхностей и хочется от хаоса прийти к дизайн системе.
Об этом пути, попытках поймать дзен, политике и технических аспектах расскажу в этом докладе
Мы поговорим об основных подходах к аутентификации в SPA приложениях, рассмотрим популярные ошибки безопасности при использовании JWT токенов, затронем рекомендации OWASP и проблему библиотек которые пытаются дать готовый инструмент.
Часто для небольших команд и стартапов дорого или неудобно брать отдельного дизайнера в штат, а нанимать фрилансера — страшно или непонятно как. Что происходит, когда он «где-то там»? Как контролировать его работу? Как поставить задачу? Что вообще входит работу дизайнера?
А также для многих разработчиков не всегда ясно из каких этапов строится работа такого близкого, но не совсем технического коллеги, без которого обойдется мало какой продукт.
Разберемся как строится дизайн-процесс на фрилансе или аутсорсе от «А что надо делать?» до «Я готов передать макет на вёрстку».
Тащить всё на своем горбу – не всегда желанная роль для программиста. Но есть один такой проект, который иначе не вывезешь. Имя ему "жизнь".
Порой выходит так, что писать программки мы умеем, а "жить жизнь" почему-то нет. Дык хочется вдобавок жить так, чтобы и смысл был, и счастье, и здоровье и конкурсы интересные.
В докладе пробежимся по базе и разберем вопрос с трех точек зрения – социальное, ментальное и физиологическое здоровье.
Как всем этим жонглировать и как заложить прочный фундамент, который во многом определит серость наших будней и яркость выходных.
Факты, исследования, мысли, идеи, плюшки и пряники (без сахара) – всё это ищите в моем докладе
Приложение без базы данных жить не может. Но БД нужно управлять, и для этого строят целые cms системы. А ещё нужна API чтобы можно было общаться с ней.
А что если я скажу, что все что вам надо, это просто описать как будет выглядеть интерфейс ваших данных, а все остальное вы получите из коробки?
Не верите? Так давайте проверим!
Тяжело встретить IT-компанию, которая не имеет в своем пользовании определенной технической инфраструктуры. Как правило, компании либо сами закупают необходимые ресурсы, либо используют ресурсы облачных провайдеров.
Ansible позволяет автоматизировать процесс развертывания инфраструктуры, уменьшая фактор человеческой ошибки. Поговорим о том, как написать скрипт управления конфигурациями и установить контроль над удаленными серверами с помощью Ansible.
Создание умного дома — это увлекательный путь. Особенно для тех, у кого отдых от программирования — это программирование.
Расскажу как я иду по этому пути, начав его еще до того как появились готовые устройства и решения для автоматизации домашней рутины.
Промышленность — очень консервативный пользователь программного обеспечения, где отдельные подходы и протоколы не меняются десятилетиями. Все их нельзя описать и за неделю. Мы же поверхностно поговорим об индустрии и о некоторых современных тенденциях, которые существуют в этой предметной области.
Работа приложений без стабильного подключения к интернету давно не кажется чем-то удивительным. В отдельных случаях, например с Youtube, работа в offline сводится к простейшему скачиванию видео "на потом". Но как быть если ваше приложение это сплошные формочки приправленные формочками? Как обеспечить корректность одновременного редактирования данных несколькими пользователями?
В докладе мы рассмотрим возможные подходы к решению этих проблем на примере технологии Logux.
При разработке бэкенда для бизнес приложений хорошо себя зарекомендовала чистая архитектура от Роберта Мартина, она позволяет правильно структурировать код, чтобы в процессе жизненного цикла бэкенд не скатился в большой ком грязи.
Одним из вариантов развития подхода с чистой архитектурой является Vertical Sliced архитектура, она позволяет избежать некоторых недостатков классической реализации чистой архитектуры и сделать больший акцент на слайсах - изолированных функциональных кусочках приложения.
Работа с асинхронностью не самая простая задача, благо язык не стоит на месте и становится удобнее, но все равно это остается такой же сложной задачей как и была. В своем докладе я расскажу вам о другом способе работы в асинхронностью в JS — библиотеке RxJS.
Разберем на нескольких примерах использование этой библиотеки и сравним оба подхода. Выделим плюсы и минусы обоих подходов.
Одна из самых полезных свойств технологии Web Components — это возможность абстрагировать сложные UI элементы в независимые от проектов и фреймворков пакеты зависимостей.
Из доклада вы узнаете как среди корпоративного “зоопарка” библиотек и фреймворков раскрыть огромный потенциал native технологии Web Components и имплементировать любой каприз дизайнеров и аналитиков в единой точке обслуживания.
В мире фронтенда нет единого подхода к организации структуры проекта. Мало реальных примеров с жизнеспособной архитектурой. Каждый проект делают по внутренним стандартам компании и в итоге каждый раз надо вникать в архитектуру. К тому же, чаще всего она затачивается под конкретный фреймворк или библиотеку. Последствия не верного выбора архитектуры в проекте обычно выражаются в росте хаоса, беспорядка, как следствие - неустойчивость к изменениям.
Я постараюсь рассказать вам про один стандартизированный подход - Feature Sliced. Но перед этим изучим популярные ошибки и подходы к их решению.
Со временем CSS проекта стремится к некоему хаосу. Проблема в том, что мы не можем остановить этот процесс, но… мы можем существенно его замедлить. По ходу доклада разберём, какие же есть способы и решения этой проблемы
Бывает, задача решается итеративно, где следующий шаг зависит от результата предыдущего. Кажется, что решение горизонтально не масштабируется и выражается императивным кодом вместо идиоматичного SQL.
В докладе вспомним, какие алгоритмы можно распараллелить, что такое MapReduce в программировании и моноид в математике. Выявим общую закономерность и распараллелим то, что ранее казалось невозможным, а бонусом получим красивый SQL.
Поговорим о самом распространенном и используемом варианте ускорения выполнения запросов к реляционным БД — BTree индексах.
Затронем структуру, особенности, способы применения и влияние данного типа индекса на различные операции при работе с БД.
Что сейчас творится с этим серверлессом и как спроектировать сервис для работы с медиа файлами под Amazon Web Services, Google Cloud Platform, Microsoft Azure, IBM Cloud.
Обсудим варианты проектирования нового Go приложения, чтобы его не пришлось переписывать в самом ближайшем будущем.
Будет не описание "серебрянной пули", которой не существует, а примеры проблем и возможные варианты решения.
Внешние и внутренние зависимости, настройки окружения, работа в распределенной ненадежной среде, ограничение ресурсов, деплой, и т.д.
Если специфика вашей работы не связана с картами и геоинформационными системами, то зачастую это воспринимается как нечто непонятное и сложное. На самом деле это довольно просто, особенно с такими потрясающими инструментами как JTS и PostGIS.
В докладе я расскажу о том, зачем я использую статический анализ кода, как внедряю новые правила, чтобы она начинали работать быстро, но при этом команду не бомбило, и покажу конкретный набор плагинов для flake8, о которых вы, возможно, не знали.
Все мы любим микросервисы, но порой эта любовь несёт лишь боль и разочарование.
В докладе Станислав расскажет о своих поисках серебряной пули при переходе к микросервисной архитектуре, проблеме выбора в Python и чем всё это закончилось.
Сетевые коммуникации в современном бэкенде - это множество конкурирующих протоколов, стандартов и подходов. У нас есть "REST", который каждый разработчик реализует по-своему, есть пересекающиеся JSON Schema и Open API, есть JSON API, GraphQL, gRPC и много чего еще.
Большинство Python приложений начинает свое сетевое общение с REST.
По мере развития разработчику приходится отвечать на мелкие, но важные вопросы: как передавать дату и время, большие объемы данных, обеспечивать авторизацию и так далее.
В докладе я расскажу про современные подходы коммуникаций Python backend приложений друг с другом и фронтендом, с какими сложностями мы боремся и что сейчас считается Pythonic.
Большая часть промышленного оборудования использует интерфейсы RS-232 и RS-485.
В докладе расскажу о них, как с ними работать и создавать драйвера на python.
Разберем физический уровень обмена данными с устройствами.
С какими сложностями сталкивался при разработке драйверов и как их решал.
Разберем возможные варианты работы с PostgreSQL: какие плюсы и какие минусы несут за собой те или иные решения, какие сложности вносят ORM и как они проявляются при асинхронном взаимодействии.
Расскажу о нашем опыте создания статически типизированного Rest API и генерации кода для клиентов.
Будут рассмотрены такие вещи, как Swagger, NSwag, Typescript и спецификация OpenAPI.
Покажу, как мы избавились от ручного написания fetch/ajax запросов, а также получили строгую типизацию и использовали одинаковые типы на фронтенде, и бекенде.
Рассказ о нескольких несвязанных клёвых, но малоизвестных возможностях делающих жизнь пользователей лучше и приятнее.
Пройдем все этапы внедрения темизации, от «защиты» до «реализации». Обсудим, как убедить коллег использовать вашу библиотеку. Составим техническое задание. Рассмотрим решение на основе CSS vars & SASS использованное в Skyeng.
Nuxt.js — это аналог Next.js, только для Vue.js вместо React.
Сама по себе штука даже не является фреймворком: скорее, это генератор приложений на Vue.js с огромным количеством готовых настроек «из коробки».
В докладе Григорий расскажет, чем Nuxt.js может помочь и начинающим и опытным разработчикам.
Вы узнаете как генерировать статику для размещения демо на GitHub Pages в одно касание, использовать готовые настройки SSR, поддержку TypeScript и PostCSS.
Будет много полезных мелочей: dev-режим с пробросом консоли, stream rendering и prefetch, лейауты, альясы и другие штуки, которые пригодятся в хозяйстве веб-разработчику.
Яндекс Деньги прошли долгий путь от XSLT до React, при этом соответственно изменялся и бэкенд.
Мы жили на XScript (тайные древние технологии!), на чистом Express и вот теперь переезжаем на Nest.
Вы узнаете, зачем мы это сделали, чем хорош Nest и почему отчаянный рефакторинг занял больше трёх месяцев.
Можно ли обойтись без Redux и нужно ли? Как уменьшить свой bundle? У кого performance больше? И как не изобретать велосипед.
Расскажу что Android предлагает в плане графики и обработки жестов, как это работает под капотом, на каких математических основах это строится и как из всего этого можно собрать простой графический редактор.
Я расскажу о том, как в приложении Яндекс эволюционировало меню и как неправильно принятые архитектурные решения отразились в последствии на скорости разработки и сложности кода.
Поделюсь опытом внедрения MVVM в приложение и какой профит оно принесло.
Расскажу что такое "Управление мобильностью" на предприятии (EMM), зачем она оно нужно, как сделать свою EMM и с какими особенностями и проблемами мы столкнулись у себя в компании.
Полнотекстовый поиск - фича, требования к которой часто кажутся бизнесу очевидными.
В докладе обсудим, как найти правильный баланс токенайзеров и бизнес-требований, что делать и как перестать бояться и сделать ES основным хранилищем данных в проекте.
Доклад предполагает наличие хотя-бы минимального опыта работы с ES у слушателя.
Если клиентскую и серверную часть вашего приложения разрабатывают разные люди, то, скорее всего, вы сталкивались с проблемой четкого взаимопонимания разработчиков, при проектировании взаимодействия между этими частями.
Хочу рассказать об этой и другой похожей проблематике, и о том, как мы это решили у себя с помощью Swagger (OpenAPI):
Любой код стремится стать легаси. А если продукт живой, и в него постоянно вносятся много изменений, или над ним работает несколько команд - все превращается в легаси очень быстро.
Я расскажу про фреймворк принятия архитектурных решений, который помогает долго оставаться гибкими и готовым к новым изменения. И о том как мы применяем эти практики в Skyeng для рефакторинга старых сервисов и запуска новых.
Расскажу о том, почему сейчас e-commerce, ERP, CRM решения пишут до сих пор на PHP, и почему так будет и дальше, после выхода PHP 7. Опишу типовые проблемы CMS и сообществ разработчиков, и как разные платформы их решили. Покажу на примере Drupal кейс с бесшовным CI-решением, настройкой инфраструктуры для работы команды разработчиков.
Я расскажу о том, как в Яндекс.Облаке работает группа сервисов управляемых баз данных.
Как устроены внутренние механизмы деплоя, бекапа, мониторинга, логирования и почему они так устроены.
Мы пишем код за деньги и решаем проблемы бизнеса, а значит, отталкиваясь от бизнес-проблем. Мы будем писать более читаемый код, лучше покрывать его тестами, доставлять и так далее. Domain driven design (DDD) как раз об этом. Читая книги, мы думаем, что aggregate root, repositories, ubiquitous language и есть то, что нам нужно. Однако, чтобы строить приложение, в центре которого находится бизнес, необязательно все это применять.
В докладе я расскажу:
Доклад “зайдет” всем, независимо от уровня: поверьте, и миддлы, и джуны, и сеньоры - все со временем приходят к этому.
Для многих технология передачи видео в реальном времени остается белым пятном, и я хочу доступно, но без капитанства рассказать, как работают Google Hangouts, Skyeng Vimbox и другие сервисы, которые ее используют.
Вы узнаете:
Доклад о том, как автоматизировать анализ производительности и подсвечивать проблемы конкретно с вашим проектом так, чтобы каждый разработчик понимал свой вклад в производительность и мог её улучшить.
В Интернетах принято ругать CSS, если не понимаешь, как с ним работать. Тем не менее, CSS в связке с HTML — Тьюринг-полный язык программирования, а если к ним добавить Houdini API и CSS Custom Properties — можно творить настояющую магию.
Социальные сети начали выходить за рамки привычного общения, иногда хочется чего-то большего.
Мы Вконтакте придумали, как мы можем помогать и себе, и бизнесу за счет новой платформы VK Mini Apps — маленькие, но мощные приложения, которые включают в себя мощь нативного клиента и веба одновременно.
Расскажу, как мы к этому пришли и почему мы так верим в эту историю, в которую вы тоже можете внести вклад.
Мы рассмотрим базовые понятия функционального подхода, которые станут основой знаний о чистых функциях.
Отдельным блоком разберем актуальные инструменты, библиотеки и подходы — почему их сложно использовать в корпоративном стеке и что с этим делать?
Вся полученная информация поможет понять базовый принцип чистых функций — как его можно применять в .NET с помощью инструментов.
Методология статического анализа год за годом зарекомендовывает себя в поисках дефектов в исходном коде программ. Если Вы не знакомы с этой методологией, или знакомы, но не применяете ее в процессе разработки, то доклад для Вас будет интересен.
Будет подробно рассказано про методологию статического анализа, а также узнаем какие у нее плюсы и минусы. Подробно рассмотрим технологии этой методологии, которые позволяют выявлять разнообразнейшие дефекты в коде. Рассмотрим некоторые интересные примеры ошибок в реальных проектах, которые были найдены при помощи статического анализа. Рассмотрим важный вопрос интеграции инструментов статического анализа в проекты любой сложности и почему так важно регулярное использование подобных инструментов.
С одной стороны наша компания сопровождает много больших проектов использующих PostgreSQL как ключевую базу и мы имеем довольно обширный опыт настройки PostgreSQL и поиска узких мест в работе с ней. Это и web сервисы, онлайн магазины, телеком, банковский сектор, сложные аналитические базы данных и многое другое.
С другой стороны бэкенд разработчики основные клиенты базы данных и часто им не хватает времени разобраться со внутренними механизмами БД и понимать как правильно организовать работу приложения с БД.
В рамках доклада, мы посмотрим, какие виды нагрузки возникают на БД, как они выражаются на графиках мониторинга. Рассмотрим все типовые примеры проблем решений в работе с БД и методы как их избегать, получая на выходе максимум производительности от базы данных, тем самым обеспечим себе возможность заниматься разработкой основного функционала приложения и не заниматься поиском решений, которые повлекут за собой сильную перестройку архитектуры приложения и рефакторинг кода. Весь разговор будет ориентирован исключительно на бэкенд разработчиков, без скучной DBA терминологии и закапывания во внутренности PostgreSQL.
Первая мысль, приходящая на ум каждому программисту, который видит новый код: "Пора все переписывать".
В этом докладе я расскажу, как бороться с такими мыслями, чем они плохи, какие есть подходы к рефакторингу, и чего им можно добиться на примере компьютерной игры.
Это вторая версия доклада в которой будет больше примеров и меньше теории
Мы живём в сложное микросервисное время. Нельзя просто взять и написать код.
От современного разработчика требуется понимание и использование инструментов, которые выходят за рамки кода, отвечающего за бизнес функционал.
Service discovery, centralized configuration, distributed tracing, circuit breaking, API gateway — все эти штуки из удела высшего общества давно превратились в обыденные механизмы, без которых не построить современное приложение.
Одно хорошо — обо всём этом уже позаботились другие люди и приготовили для нас замечательные готовые решения.
Казалось бы, добавил новую библиотечку в зависимости, и готово. Однако всё не так просто — обрастая функциональностью, мы теряем лёгковесность. Всё это сопровождается постоянным усложнением систем и новыми функциональными хотелками.
В докладе расскажу про способ, как мы в Леруа Мерлен справляемся с излишним ожирением наших микросервисов.
У нас ВКонтакте очень много пользователей, поэтому часто на первый взгляд незначительный баг может оказаться неприятным.
Я расскажу несколько историй про баги, с которыми я сталкивался, про некоторые технические решения, которые необходимы с учётом нашей специфики, и постараюсь передать, каково это — работать ВКонтакте.
У любой системы есть конечная ёмкость — максимальное количество запросов, которое она может обработать. Можно (и нужно) уметь правильно выбирать и планировать емкость системы. Но важно понимать, что когда система сталкивается с нагрузкой, превышающей эту емкость, кто-то из её потребителей обязательно должен за это заплатить.
Выбор простой: либо заплатят все (полная деградация и недоступность сервиса), либо только часть. Если вы не делаете выбор осознано, то по умолчанию получите первый вариант.
Сделать выбор мало, нужно уметь его реализовать. Реализовали? А вы всё учли? Всё-всё, что может случиться? Проверим?
Как сделать высокопроизводительный API, если использование кеша запрос-ответ становится неэффективным? Добавим требования отказоустойчивости и масштабируемости.
Мы нашли для себя ответ в использование In-Memory Data Grid, и даже In-Memory Compute Grid.
Много слухов ходит, про загадочный и суровый сайт в компании Одноклассники. Многие слышали, что там все делается на Java. Даже фронтенд.
А что же на самом деле там происходит?
В этом докладе будет история того, как это получилось, какие были проблемы, и как был найден путь решения с использованием новой виртуальной машины GraalVM и React.
Я расскажу о том:
Этим докладом я постараюсь раскрыть тему "облачковой" разработки. Расскажу, как мы применяем это в продакшене, как оно работает, и чем разработка serverless бэкенда отличается от микросервисов. Приведу небольшое сравнение "облачков" от разных поставщиков и, конечно, расскажу о боли, куда без нее.
Рано или поздно тебе придется столкнуться с проблемами утечек памяти Windows приложений и первый твой вопрос будет — "с чего начать поиски?". Для начала, в этом докладе, мы постараемся вспомнить как используется память процессами и посмотрим общую картину её использования с помощью WinDbg.
Расскажу о том, как мы в Avito используем логическую репликацию. Основные различия логической и физичекой репликации. Почему мы до сих пор используем репликацию на основе триггеров. Каким образом доставляем данные до поисковых серверов. В качестве демо, наглядно покажу, как используя Go и транзакционную очередь на базе PGQ реплицировать данные из PostgreSQL в Redis.
Жить на одном сервере просто и удобно — но не всегда разумно. Поговорим про то, зачем, когда и как нужно масштабироваться горизонтально. А также о возникающих в процессе подводных камнях и стратегиях их обхода.
Полгода с ELK. Рассмотрим тонкости развертывания кластера, мониторинга кластера и индексов.
Обсудим с какими сложностями можно столкнуться во время использования.
Рассмотрим хорошие практики современных сборщиков в мире фронтенда. Разберём популярные проблемы. Попрощаемся со страхом копания в конфигах, а также узнаем, как настроить вебпак со снайперской точностью.
В TypeScript есть прекрасная возможность спрятать повторяемую логику в декораторах. NGXS это Redux спрятанный в декораторах. Больше не надо писать редюсеры и эффекты, только набор экшенов и класс-состояние. Всю остальную скучную рутину NGXS декорирует под своим капотом. Сравниваем реализацию кейсов на NGXS и NGRX.
В своем докладе я расскажу про способы генерации PDF на клиенте и сервере, которые наша команда успешно применила в продукте с пользовательской базой в 2.5M+ человек. Сравню такие подходы как: серверная генерация документов из HTML с помощью WickedPDF и Pupeeter, клиентская/серверная генерация документов из react шаблонов посредством react-pdf и просмотр pdf на клиенте с помощью PDF.js. Также в докладе будет много о фейлах и проблемах, с которыми мы столкнулись и как из-за черного квадратика мы потеряли лояльного пользователя
Вопрос оптимизации всегда актуален, а с темпом развития технологий на фронте — вдвойне. Я расскажу как мы решали основные проблемы производительности сайта, который находится в продакшене. Рассмотрим сервис Google PageSpeed и на основе его критериев, попытаемся вывести формулу повышения производительности приложения.
Кому и зачем нужны статические типы в динамически типизированном языке?
Как упростить код с помощью библиотеки в одних местах или усложнить в других. Примеры использользования для решения типовых задач.
Как облегчить себе жизнь при разработке SaaS приложений с помощью небольшого кусочка магии. Также пройдёмся по внутренностям DjangoORM при работе с PostgreSQL.
Трудно представить хороший современный сайт без анимации. Часто приходится поломать голову над реализацией той или иной идеи дизайнера.
Как добиться желаемого результата и не выбиться из сил? Какой подход выбрать? Чистый CSS, изменение стилей через JS или пора задействовать Canvas? Что будет работать быстрее? Где посмотреть производительность?
Я постараюсь ответить на все эти вопросы и наглядно продемонстрировать преимущества разных подходов.
Почему-то многие забывают, что фронтенд — это, прежде всего, междисциплинарная среда. Поэтому мы поговорим об основных приемах дизайна и как они работают, а также как овладеть этой стороной силы, если ты технарь и/или вообще не понимаешь зачем «делать красиво».
Каких навыков не хватает разработчику, чтобы создавать качественные продукты самостоятельно? Как развить эстетическое видение (и зачем)? И почему логика не нужна?
Делай дизайн, словно тебя никто не видит.
О Redux сказано уже достаточно много, но в рамках этого доклада мы постараемся окончательно закрыть эту тему, выполнив глубокое исследование этой технологии, рассмотрев проблематику, архитектуру и реализацию этой библиотеки, найти ее сильные и слабые стороны, и напоследок попробуем создать аналогичное решение, которое было бы лишено обнаруженных недостатков.
Многие используют инструменты для типизации JS кода, а потом пишут еще много кода для разного рода проверок, документирования и подобных сопутствующих вещей. Так может хватит дублировать информацию?
Поговорим о том, как этого можно написать минимум кода и получить максимум пользы. Опыт одного ленивого разработчика
Как работает «3d-хак» translateZ(0), когда он помогает, а когда мешает. Для чего нужен CSS Containment? Как заставить страницу скроллиться на 60 fps (или хотя бы чуть пободрее)?
Немного матчасти и много практики.
Как просто и быстро начать использовать TypeScript в связке с Node.js для построения серверных приложений. Покажу как правильно описать модели для ORM и постараюсь ответить на типичные вопросы связанные с внедрением TypeScript на сервер.
Взгляд на жизнь с Kubernetes со стороны разработчика. Поговорим про адаптацию приложений для корректной работы в экосистеме Kubernetes. Разберем эволюцию развертывания от простейших примитивов до использования широкого спектра возможностей платформы. Обсудим, какие практики мы применяем для Kubernetes приложений, с какими проблемами сталкивались и как решали.
Как начать писать приложение на Java и запустить его уже к вечеру того же дня. Какие возможности предоставляет JHipster, как обновлять приложение с помощью генератора, когда мы уже имеем бизнес-логику. Рассмотрим поближе структуру монолитного приложения, сгенерированного с помощью JHipster. Познакомимся со Spring Data для построения запросов с использованием интерфейсов.
Основной продукт Arkadium, — компании, в которой я работаю, — это веб-порталы с играми. На наших серверах ежедневно играют миллионы человек. Наш продукт непрерывно изменяется и обновляется, иногда несколько раз в день. При этом у нас нет дежурных смен или выделенных специалистов по мониторингу. Поддержка стабильной работы в таких условиях — непростая, но очень интересная задача. Как мы с этим справляемся и до сих пор не сошли с ума — узнаете из моего доклада.
Кто же такой тестировщик игр? На самом ли деле тестировщики игр играют с утра до ночи, получая за это еще и зарплату? Как стать тестировщиком игр, какими навыками и личными качествами необходимо для этого обладать?
«На эти и не только вопросы вы получите ответы в моём докладе. Я расскажу о специфике и отличиях тестирования игр от тестирования веба и приложений. Также я поведаю о многих прелестях и адских вещах, которые происходят в суровой жизни Game QA».
Dat — некоммерческий открытый протокол обмена данными для приложений будущего. Децентрализованная сеть, использующая p2p потоки с возможностью публиковать контент и приватно делиться файлами. Он может забрать власть у провайдеров и социальных сетей и вернуть её в руки самих пользователей.
«В докладе я расскажу вам, как работает Dat, что уже существует в инфраструктуре, какие приложения уже можно писать и использовать, и чего следует ожидать в обозримом будущем».
Функциональный стиль всё глубже проникает в привычные императивные языки. И всё равно для многих это диковинка, которую тыкают палкой издалека. Многие апологеты сразу начинают тыкать функторами и монадами в лицо, рассказывая, какие же они клёвые. Я ж попробую зайти с другого конца — с начала.
А откуда взялись «лямбды»? Что за теория категорий, о которой все говорят, и как она связана с кодом? Как можно «доказать» программу? Ну и наконец, все вокруг говорят о монадах, а я ни сном, ни духом!
Всё это и ещё немного философских размышлений ждут вас на моём докладе.
CSS ведь тоже меняется, и меняется быстро.
«В своем докладе я расскажу о новых спецификациях CSS, которые разрабатывает рабочая группа W3C. Много интересного про то, как разрабатываются стандарты, как их утверждают, какие стадии они проходят. Поговорим о семи интереснейших спецификациях в CSS и немного о JS».
За 15 лет практики и более 100 завершённых проектов, а ещё больше в качестве консультанта, я видел многое и поработал в разных ролях. Самая интересная, сложная, но при этом спорная и неоднозначная, всегда была роль Архитектора.
В докладе мы попробуем (хоть и в виде монолога) подискутировать на эту тему.
Я расскажу про различные архитектурные трюки и инструменты, а ещё будут реальные примеры и даже немного кода, ну и прочего не закрытого NDA.
«В своем докладе я хочу поделиться некоторыми открытиями, которые сделал для себя за последние полгода на стыке программирования и психологии. Покажу, откуда возникают психические проблемы у работников клавиатуры и монитора. Почему наши мечты не соответствуют реальности, как с этим жить и получать удовольствие от работы каждый день».
PostgreSQL является объектно-реляционной системой управления базами данных (ОРСУБД) на основе POSTGRES, версия 4.2. В PostgreSQL реализованы многие возможности, традиционно встречавшиеся только в масштабных коммерческих продуктах. Эта СУБД имеет встроенные возможности для отказоустойчивой работы с участием администратора БД, которые могут быть усовершенствованы с помощью внешних наборов программ до уровня автоматического failover’а.
«В докладе я расскажу вам про современные решения по обеспечению отказоустойчивости PostgreSQL с автоматическим failover’ом: 1.Patroni; 2. Stolon; 3. Corosync/Pacemaker; 4. расширение Multimaster Postgres Pro Enterprise.
Вы узнаете про их достоинства, недостатки и области применения».
«Scrum — это процессный фреймворк, который начали использовать для управления работой над сложными продуктами в начале девяностых годов. Scrum не является процессом, техникой или исчерпывающим методом. Напротив, Scrum — это фреймворк, в котором можно использовать разнообразные процессы и методы», — к сожалению, эти слова из Scrum Guide знакомы далеко не многим. Это приводит к множеству недопониманий, ложных интерпретаций и незаслуженной критике.
«В моем докладе я постараюсь помочь вам понять суть Scrum в том виде, в котором он представлен в Scrum Guide. Для этого мы рассмотрим не только теорию, но и кейс практического применения Scrum в одной из моих команд».
«В своем докладе я расскажу, о чем обычно молчат на докладах о мобильных приложениях на веб-технологиях: специфичные UI/UX решения, работа с доступами и пользовательскими данными, и деплое. Также рассмотрим, как реализовать кроссплатформенную оплату и, в качестве бонуса, как все это закодить, чтобы не было мучительно больно поддерживать».
Финальный внешний вид проекта совсем не похож на идеально вылизанный в фотошопе нарисованный макет сайта или приложения? Кто в этом виноват — дизайнер или фронтендер?
«В своём докладе я хочу попытаться разобраться, на каком этапе создания дизайна проекта наступает точка невозврата, когда макет уже невозможно сверстать хорошо, чтобы он 1 в 1 соответствовал красивым утверждённым картинкам. Мы поговорим, почему дизайнеры такие, какие они есть и как это изменить, обсудим адовые макеты и как сделать так, чтобы они не случались. Словом, как подружить дизайнера и разработчика, чтобы для обоих это не было мучительно больно».
Все знают, что нужно тестировать свой код. Но никто не тестирует! В том числе и потому, что считают тестирование сложным и долгим процессом. Ведь есть столько всего, что усложняет тестирование: HTTP запросы, webpack конфигурации, Vuex, состояния. И прочая асинхронщина. На самом деле — нет. Vue и JS дает нам отличный инструментарий для тестирования. А подходы, которые я покажу, можно брать и использовать: быстро и просто.
Эмоциональный интеллект — такой же участник мыслительного процесса, как и привычный нам думающий рациональный ум. Чем лучше мы ориентируемся в своих эмоциях и чем большим количеством способов реагирования владеем, тем лучше мы можем справляться со своей жизнью, в том числе и в процессе труда. Это особенно важно при работе в команде и в условиях ограниченности ресурсов. Без искусства общения сложно вести за собой людей.
Мы рассмотрим пять основных областей эмоционального интеллекта — знание своих эмоций, управление эмоциями, мотивация для самого себя, распознавание эмоций в других и поддержка взаимоотношений — и разберемся как прокачивать эти скиллы.
Разработка API/Framework/библиотеки сильно отличается от разработки обычного front-end проекта. Разработчикам необходимо постоянно думать про обратную совместимость, про удобство использования API, про документацию и примеры, и про многие другие вещи. Из доклада вы узнаете, чем же разработчики API занимаются на работе. Услышите рекомендации по созданию своего API.
Мониторинг является одним из важнейших элементов инфраструктуры, обеспечивающих её надёжную и эффективную работу. Главные задачи процесса мониторинга в этом деле — это способность предотвратить серьёзные проблемы и оперативно оценить текущее состояние системы.
Другая важная роль мониторинга — помощь в процессе принятия практически любых решений, связанных с оптимизацией и развитием IT-инфраструктуры. Нередко наличие даже самых базовых статистических данных за прошлые периоды помогут вам выбрать гораздо более верное решение.
«В своём докладе я хотел бы рассказать немного о базовых понятиях любой системы мониторинга, об общем подходе к мониторингу „чего-либо“, и более подробно остановиться на Zabbix, с которым я работаю последние 8 лет».
В своем докладе я представлю, как можно старый, испытанный временем паттерн проектирования применить к ReactJS, а также покажу преимущества и недостатки этого подхода по сравнению с использованием "чистого" ReactJS и использованием Redux (и всего, что с ним связано).
Расскажу о том, что такое прогрессивные веб-приложения (Progressive Web Apps, PWA) и веб-компоненты (Web Components), и почему вам следует использовать эти технологии в своём будущем проекте. Также расскажу, как собрать рабочее PWA целиком из готовых веб-компонентов, как из кубиков Lego, используя Polymer и Firebase, на практическом примере MVP для стартапа «ГдеЗерно».
В этом докладе будет дано введение в Elm как язык разработки веб-интерфейсов, будет рассмотрен инструментарий разработчика на Elm, а также обсуждены плюсы и минусы по сравнению с JavaScript, и что удобно делать с помощью Elm, а что затруднительно.
Современный мир front-end меняется с космическими скоростями: постоянно растут требования, меняются подходы, появляются новые возможности. Каждый год выходят новые стандарты ECMAScript, каждые несколько месяцев появляются новые технологии, библиотеки. В своем докладе я хочу поговорить с вами о том, как не увязнуть в legacy, а идти в ногу со временем. Обсудим историю развития нашего технологического стека, как мы пришли к open source решениям, какие на этом пути были трудности и как мы с ними справились.
Расскажу о тёмной лошадке мира .Net: об уникальных фишках для создания DSL, «горутинах», которые лучше чем в Go, о строгости языка и богатой системе типов, а так же о том, чего вы никогда не получите в C#.
Когда нужен свой кластер для сервисов на честном железе, но нет экспертизы в Kubernetes, а платить облачному провайдеру — не комильфо. Расскажу о встроенном в Docker режиме Swarm, который позволяет сделать простейший кластер одной командой, и как мы сами наворачивали все то, что есть в k8s из коробки, на базе Spring Cloud и Netflix OSS. Java головного мозга детектед.
Как быстро организовать полнотекстовый поиск? Как работает лексический анализатор, и чем он отличается от токенизатора? Разбираемся с индексами, токенами, маппингами и прочими страшными словами в Elasticsearch. Поговорим об инфраструктуре Elasticsearch, разберём синтаксис запросов и область его применения, а также полюбуемся красивыми графиками в Kibana.
Я расскажу из каких python-компонентов можно создать текстового чат-бота. Что происходит от момента получения пользовательского сообщения до момента получения ответа от бота (NLU, NLG, ML-классификаторы). Как адаптировать бота под разные мессенджеры и не только мессенджеры. А также о том, как повысить отказоустойчивость бота на примере Telegram API.
Расскажу, что такое веб-компоненты, и с чем их едят. Будем разбираться о том, как мы к этому пришли, и что нас ждёт в будущем. Поговорим о таких фреймворках и библиотеках как Angular, Polymer, StencilJS и о том, как они работают с веб-компонентами.
Расскажу о современном подходе к разработке статических сайтов. Мы рассмотрим, что такое JAMstack и с чем его едят, и более подробно остановимся на моем любимом „блюде“ — генераторе статических сайтов „GatsbyJS“. После презентации ни у кого не останется сомнений, что ServiceWorker’ы и GraphQL — это сложно.
Современные сайты — это сложные приложения с разнообразными интерфейсами и пользовательскими сценариями. Всё должно работать как часы. Однако это не всегда так. Например, иногда не выходит оплатить товар в интернете, потому что у iframe не выставилась высота, — и таких случаев сколько угодно. Попробуем разобраться, почему наши интерфейсы всё ещё иногда ломаются и что мы можем с этим сделать.
Расскажу о внутренней структуре React Native приложения: о том, как происходит сборка приложения, как привязать нативный модуль к вашему приложению и о том, как преобразуется вёрстка на React к вёрстке на целевой нативной платформе.
DevOps это не должность и не профессия, а методология разработки. Её главная особенность в применении подходов разработки к инфраструктуре. О программировании и рефакторинге инфраструктуры и поговорим.
Нагрузочное тестирование своими руками — нужно ли это, и что делать, если ответ положительный. Разберемся, как построить тестовый стенд с нуля, и какие выгоды это может принести.
Расскажу о том, что делать с аутентификацией, если вы оказались в мире .NET и с вами случились микросервисы. Рассмотрю IdentityServer 4, как частный случай реализации аутентификации поверх OAuth 2.0 и OpenID Connect. Основное внимание будет уделено протоколам и механизмам, поэтому будет интересно и полезно абсолютно всем.
Что лучше монолит или микросервисы? Разбираемся, когда не нужно использовать микросервисы. Пример реализации микросервисной архитектуры с помощью Spring, Netflix OSS и Docker. Мониторинг на ELK. CI/CD плюшки сервисов.
Расскажу про оптимизацию изображений на фронтенде. Особенности форматов графики в вебе, как разумно адаптировать и сжимать изображения, расставлять приоритеты загрузки, отложенную загрузку и предзагрузку.
Расскажу об оптимизации кода React на примерах проекта и с реальными результатами. Покажу приемы того, как, например, избежать избыточного ре-рендеринга, и сравню результаты разных методов оптимизации. Будет и о том, как без велосипедов использовать возможности React на реальных примерах.
Расскажу о своём опыте с GraphQL. Доклад для тех, кто хочет понять что такое GlaphQL, стоит ли его использовать и в каких проектах. Доклад не претендует на супер-уникальность, но с помощью живого общения вместе попробуем разобраться с этим модным пушным зверем.
Расскажу о том, как начать использовать паттерн redux в экосистеме Angular и как асинхронно управлять side-эффектами. Поговорим так же о том, как этот подход влияет на change detection и о малоизвестных use cases (preloading store with Route Guards, новый модуль ngrx/entity).
Я собираюсь показать силу доступных и бесплатных инструментов отладки на примерах, которые помогают выявлять серьезные баги и экономят компаниям время и деньги. В последнем заинтересованы многие.
Звездой процесса будет конечно WinDbg.
Git мощная штука, и те, кто с ним работают, думаю, это понимают. Я расскажу о том:
И да, я НЕ расскажу о том, как работает git "под капотом".
Думаю, это будет интересно профессионалам, которые постоянно находится в процессе оптимизации своего рабочего процесса. И новичкам, которые ещё сомневаются в выборе системы контроля версий.
Я хочу познакомить слушателей с этим языком программирования, рассказать о сферах его применения, а также развеять некоторые мифы.
Непосредственно термин кросс-функциональные команды не привязан ко всей Agile культуре, а идёт из основ Scrum фреймворка (да-да, именно фреймворка, а не "методологии", как принято называть его в России).
В отличие от классического "функционального" подхода к формированию команд или отделов, где back-end специалисты выделяются в один отдел, front-end дэвы в другой, а QA и инфраструктура вообще сбоку, кросс-функциональный подход к формированию команд позволяет иметь "на борту" всех специалистов (не только технических), необходимых для работы над проектом или текущими задачами. Как раз это и позволяет нам оперативно реагировать на изменения и избегать написания кода "в стол", устраняя внешние зависимости.
Для разработчиков Agile интересен тем, что они получают относительную свободу действия, т.к. исчезает пресловутый микроменеджмент (упор делается на самоорганизацию в рамках команд). Также они получают возможность самостоятельно определять технический способ достижения поставленных бизнесом целей, т.к. предполагается наличие полного доверия профессионализму команды со стороны бизнеса.
Самоорганизация внутри команды играет огромное значение, ведь, как я и говорил раньше, мы целиком и полностью полагаемся на их знания и опыт, а не водим "за ручку" по тексту многотомного ТЗ.
Vue.js - изначально лишь библиотека, отвечающая за рендеринг DOM-элементов на основе данных и шаблона. Ну примерно как React.
Помимо самой библиотеки для рендеринга отдельными модулями поставляются различные компоненты, необходимые для создания приложения, такие как роутер, адаптер для webpack, модуль state-менеджмента.
Собрав эти модули вместе, мы получаем нечто похожее на фреймворк, но в произвольном исполнении.
Так вот, если Vue.js - библиотека, то Nuxt.js - полноценный фреймворк для строительства приложений, который включает в себя все необходимые для работы приложения модули.
Так уж получилось, что в процессе работы, занимаясь стартапами, мы, сотрудничая с ФРИИ, получили специальные условия работы с Microsoft Azure, AWS и IBM Bluemix. В условиях такого большого выбора просто жизненно необходимо иметь провайдеро-независимое решение для всех инфраструктурных задач, оперируя достаточно низкоуровневыми блоками - виртуальная машина, маршрутизатор, жесткий диск, сетевой интерфейс. Хэштеги можно продолжить, но надеюсь, суть понятна.
На докладе я покажу весь путь построения хранилищ для работы в кластере, а также покажу сравнительные цифры производительности нашего решения.
Экосистема React (Native, DOM и различные кастомные рендереры) и как это все работает.
Так же затрону тему о будущем React, а именно о Fiber и 16 версии, которая уже вот-вот пойдет в релиз.
О тестах, ревью, анализе ошибок с продакшена, а так же о других практиках которые используются у него в компании и о том, как это оказывает влияние на качества кода и продукта в итоге.
Темой выбрал тест Джоэла, т.к. его автор, да и сам тест довольно известные. Думаю, каждый хотя бы должен знать о чем он.
Про автора я немного расскажу на самом выступлении, но самое интересное - его тест, который был опубликован еще в далеком 2000 году.
Основной кейс этого теста - быстро понять катится ли Ваша команда разработки в тартарары, или у Вас пока все хорошо.
Еще некоторые используют тест, чтобы оценить будущее место работы на собеседованиях в различные компании.
Я хочу рассказать на конференции об этом тесте и вместе с залом решить, устарел ли он за почти 20 лет, и какие правки в него стоит внести.
В iOS SDK есть несколько способов хранения данных, таким образом, чтобы они были доступны после повторного запуска приложения. Это NSUserDefaults, Keychain и Core Data. Первые два годятся для небольших объёмов, когда как Core Data предназначен для более сложных и массивных задач.
Суть этого фреймворка - API для более удобной работы с базой данных. Но что для прожженных хакеров удобно, для других - муть мутная. И поэтому ребята решили сделать фреймворк под названием Realm. У него такие же задачи и функции, но другая реализация и, соответственно, плюсы и минусы. Ну и конечно ios-ники за милое дело разводят холивары по поводу того, какой же из фреймворков лучше.
Любит сложные и хорошо спроектированные интерфейсы и использует Ruby on Rails в связке c React/Redux, а еще D3 и Ember.js. Работал full-stack чуваком в ресторанном стартапе Смартомато и успел поработать со Злыми Марсианами, а сейчас — в небольшой команде These Guys со своим лучшим другом Тихоном. В родном Ростове входит в независимую фронтенд-группировку Code Hipsters , а еще у них есть стикеры в виде почтовых марок.
Как-то сестра показала, как проигрывать звуки через биппер в QBasic. Написал пианино и почувствовал себя таким крутым! Пианино считывало букву с клавиатуры и играло ее. Во фронтенд пришел из C/С++: сокеты, треды, мьютексы, IPC — бесценный опыт!
Расскажет про анимации в React-like приложениях.
Мы уже научились строить чистые интерфейсы, думать о состояниях, «путешествовать во времени» и писать undo-redo в две строки. Но как же анимации? Их всегда обходят стороной и они плохо вписываются в подход (state) ↦ DOM. Расскажет про «грязные» компоненты и про подходы, которые использует для анимаций в своих приложениях.
Знать React необязательно. Будет интересно не только фронт-, но и бекенд ребятам.
Front-End разработчик, бас-гитарист, женат.
В разработку его заманили печеньками.
Он расскажет о фреймворке, который на его взгляд весьма неплох, но почему-то не очень популярен у нас.
Всем, кто хоть немного касается разработки web-приложений доклад будет интересен!
Фронтенд-разработчик. Любит приложения со сложными и не стандартными интерфейсами, интересует вычислительная биология и вообще любое применение программирования в биологии, химии и медицине. Также его интересуют преподавание, иностранные языки и комиксы.
В разработку попал через стартап, который он с друзьям, основал на 3-ем курсе университета, на небольшом чердаке в офисном здании.
На конференции расскажет что браузеры сегодня поддерживают целый ряд технологий, которые ещё недавно было сложно себе представить в вебе, такие как WebGL, WebVR, Websocket и конкретно о том, как совершить звонок на мобильный телефон из вашего браузера при помощи WebRTC и Websocket.
Доклад будет интересен фронтенд-разработчикам, а также тем кто занимается разработкой облачных решений для Call-центров.
Программист-прагматик. Отец был программистом, так что компьютер появился уже лет в 8 и у него не было выбора. Сначала basic с pascal, потом C++, сейчас занимается back-end разработкой.
"Postgres. Он крут! Хочется показать, что современная СУБД это не только хранение данных, но также... в общем, приходите."
Доклад будет интересен в первую очередь тем, кто работает с другими СУБД, но о Postgres слышал мало.
Опытный архитектор и разработчик высоконагруженных распределённых систем, специалист в области видеонаблюдения и машинного зрения, интересуется вопросами разработки искусственного интеллекта и глубокими нейронными сетями.
В разработку привело желание сделать мир лучше.
Расскажет об архитектуре проекта HolaCDN и об организации процесса разработки в одной из самых необычных компаний мира.
Доклад будет интересен представителям компаний, осуществляющих трансляцию видео через интернет, и архитекторам и разработчикам распределённых систем.
Не веришь в HighLoad на Node.JS? Приходи, обсудим!
Фронтенд-разработчик в Student Loan Hero. Интересуется веб стандартами и применяет их в работе. В свободное время изучает восточную философию, ходит в походы, коллекционирует монеты.
В детстве у него было Lego, подростком читал много фантастики и киберпанка. Так и заинтересовался разработкой.
Расскажет о том, что такое доступность интерфейсов. Какие ограничения бывают у людей. О том, что слепые тоже могут и хотят пользоваться вашим сайтом. И о том, что нам делать с нашими проектами до изобретения интерфейса могз-компьютер.
Доклад будет интересен широкому кругу веб-разработчиков, в особенности фронтендерам и веб-дизайнерам.