Доклады конференции YappiDays'18
Купить билет

Как устроен полнотекстовый поиск

Алексей Бичук
Каждый день мы сталкиваемся с поиском различных данных. Почти на каждом веб-сайте с большим количеством информации сейчас есть поиск. Поиск есть в домашних компьютерах, в мобильных телефонах, в различного рода программном обеспечении. Конечно, если спросить любого разработчика про поиск с точки зрения технологий, на ум сразу придет elasticsearch, lucene или sphinx. Сегодня я хочу заглянуть «под капот» полнотекстового поиска и разобраться в первом приближении, как же он работает.
Full text search
Алгоритмы

Прагматическое профилирование Java приложений

Алексей Рагозин
В экосистеме Java нет недостатка в профайлерах, как коммерческих, так и бесплатных. Однако, если перед вами проблема, связанная с производительностью Java кода, просто взять профайлер не достаточно, необходимо уметь им правильно пользоваться. В докладе вы узнаете о возможностях и ограничениях, Java профайлеров (в первую очередь бесплатных), а так же о том, как эффективно их применять в зависимости от проблемы, которую вы решаете.
Производительность
Java

Самозванцы, выгорание, границы

Анастасия Калашникова
  • Самоощущение себя, как самозванца в профессии – что это значит и почему такое происходит;
  • Как неуверенность в своих профессиональных навыках ведет к выгоранию, и чем оно страшно;
  • Взаимосвязь между неустойчивыми границами и чувством самозванца;
  • Что со всем этим делать.
Психология в IT

Опыт разработки статического анализатора кода

Андрей Карпов
Один из основателей проекта PVS-Studio расскажет об опыте разработки статического анализатора кода C++. У инструментов статического анализа кода существует "проблема айсберга". От пользователей скрыты сложные механизмы анализа кода, и иногда им кажется, что статические анализаторы – это просто какие-то утилиты, ищущие опечатки с помощью регулярных выражений. Автор доклада постарается в общих чертах описать, как всё обстоит на самом деле. Он покажет на примерах, почему нормальный анализ с помощью регулярных выражений нереализуем, что такое Data Flow анализ, а также расскажет о других технологиях, применяемых при анализе кода. Вкратце будет затронут вопрос использования нейронных сетей, обсуждение которых сейчас является очень модной темой, и рассказано, почему с точки зрения анализа кода отношение к этому направлению является очень скептическим.
Алгоритмы
Статический анализ кода
С++
Нейронные сети

Kotlin DSL за час

Антон Архипов
Какие языковые конструкции в Kotlin делают возможным создание DSL и зачем это нужно.
Kotlin
DSL
JetBrains

Мастер-класс «SonarQube: от установки до анализа production-кода»

Филипп Хандельянц и Святослав Размыслов
SonarQube представляет собой открытую платформу для обеспечения непрерывного контроля качества исходного кода. Она поддерживает большое количество языков программирования, позволяет удобно визуализировать результаты анализа и получать отчеты по множеству метрик. В общем виде SonarQube позволяет отследить динамику развития проекта во времени.
Одна из замечательных возможностей платформы - аккумуляция результатов анализа на одном проекте от нескольких инструментов по поиску ошибок. Семинар нацелен на демонстрацию развертывания сервера SonarQube с последующей загрузкой и проверкой проекта различными статическими анализаторами кода.
SonarQube
Статический анализ кода
Качество кода

Массовая оптимизация запросов PostgreSQL

Кирилл Боровиков
Как оптимизировать производительность запросов в PostgreSQL, если серверов - сотни, а баз - тысячи?
Производительность
Базы данных
PostgreSQL

Эволюция архитектуры nopCommerce

Андрей Мазульницын
Сегодня nopCommerce - одно их самых популярных ASP.NET решений с открытым исходным кодом, на основе которого работает более 50.000 сайтов.
В докладе вы узнаете о том, как менялась архитектура продукта за последние десять лет. Как мы переходили на .NET Core, с какими сложностями столкнулись, и как их решали. Что стоит использовать в open-source, а чего лучше избегать.
Будет рассказано, как можно зарабатывать на бесплатном продукте и сколько. А также с какими сложностями и вызовами мы столкнулись за эти годы.
Open Source
Архитектура
.NET
.NET Core

Эффективная работа с IntelliJ IDEA

Антон Архипов
Обзор возможностей для настройки и использования IDE, новшества последних релизов, и много-много комбинаций клавиш.
Intellij IDEA
JetBrains

Open Source Distributed Machine Learning Library для Apache Ignite

Алексей Зиновьев

Что за скрывается за фасадом хайповых слов? Зачем нужна еще одна библиотека машинного обучения? Как начать делать pull request для популярной тулы? Доклад для тех кому интересно машинное обучение, написание библиотек для open source, распределенные вычисления и задачи, которые приходится решать в ходе разработки подобных библиотек.

В ходе доклада будет показано на каких принципах работает Apache Ignite ML, что там внутри и чем это отличается от Spark ML, Flink ML, scikit-learn, Smile и прочих.

Apache Ignite ML
Machine Learning
Open source

Тестирование: как забыть о проблемах с Selenium

Иван Крутов
Разрабатываете веб-приложение? Пишете функциональные тесты с использованием Selenium Grid? Мучаетесь от постоянных падений и нестабильной работы самого Selenium? В этом докладе я познакомлю вас с новым open-source инструментом Selenoid, после установки которого вы, наконец, начнете спокойно спать по ночам.

  1. Selenium - это стандарт браузерной автоматизации, но текущая реализация неудобная и неэффективная
  2. Почему Docker и изоляция в контейнерах - незаменимый инструмент для Selenium
  3. Selenoid - новая эффективная реализация Selenium протокола
  4. Как быстро попробовать
  5. Что он умеет: VNC, запись видео, запись логов, заливка в S3, мобильные платформы
  6. Как масштабировать решение. Про балансировку нагрузки и сервер Ggr.
Selenium Grid
Selenoid
Автоматическое тестирование

Проектирование, разработка и эксплуатация высоконагруженной системы онлайн репликации >500 ТБ и 1 млрд. файлов клиентов между континентами: Amazon S3 (США) - облако Mail.ru (Россия)

Александр Сербул
В докладе расскажем об особенностях lambda-архитектур, платформе микро-сервисов Amazon Lambda, а также подводных камнях и победах с Node.JS и многопоточной Java. Затронем тему эффективной разработки и тестирования надежного и устойчивого многопоточного кода на Java. Поделимся опытом организации промежуточного дифференциального хранилища и непростым выбором между LMDB (lightning memory-mapped database), LevelDB (используется в Bitcoin blockchain), Apache Derby и Berkeley DB. Подробно расскажем о тонкостях использования инфраструктуры очередей на базе Amazon SQS, NoSQL в DynamoDB и мониторинге системы для предотвращения потерь данных клиентов и минимизации рисков последствий отказов и аварий датацентров. Разберем практику применения алгоритмов кластерной координации на примере ZooKeeper/Curator для масштабирования приложения.
Доклад будет полезен разработчикам высоконагруженных и многопоточных систем, работающих с большими объемами данных в жестких условиях обеспечения высокого уровня надежности и отказоустойчивости. Также информация будет полезной менеджерам, решающим профильные задачи сохранения и репликации данных в распределенных облачных проектах.
AWS
Архитектура
Производительность

Docker Driven Development

Андрей Копылов
Бытует мнение, что docker сложен и нужен только для использования на проде. И даже там он нужен только корпорациям.
Я попробую доказать, что docker может и должен использоваться в процессе разработки на компьютерах разработчиков. Это утверждение верно даже если на проде у вас нет и не будет docker-а.
Docker
DevOps

Микросервисы Netflix и Kubernetes

Владимир Ильмов
Популярность облачных сервисов очень выросла за последние несколько лет, в данном докладе я сделаю обзор решений для разработки облачных сервисов.
Что объединяет kubernetes, docker swarm, azure и aws?
Чем занимается Netflix и зачем они сделали свой стек?
Подробнее расскажу на подходе cloud native сервисов и технологического стека Netflix, роль Eureka, Ribbon, Zuul.
Поделюсь опытом и попытаюсь беспристрастно сравнить преимущества и недостатки.
Kubernetes
Cloud

Безопасная разработка на потоке, или Как улучшить безопасность ПО без отрыва от производства

Алексей Жуков
Когда разработка ставится на поток из-за высокого спроса на услуги и продукты, все больше разработчиков стремятся выстроить ее более гибко и эффективно, внедряют процессы непрерывной интеграции и поставки (CI/CD). Обеспечение безопасности разрабатываемого ПО — неотъемлемая часть такого процесса. Нужно точно и без отрыва от производства определять и устранять риски безопасности — уязвимости. Но как показывает практика, здесь есть две проблемы. Первая — анализ качества кода ошибочно считают достаточной мерой для проверки ПО в том числе на риски безопасности. Вторая — те, кто понимают, что этого недостаточно и прибегают к инструментам анализа защищенности сталкиваются с трудностью: мало просто найти уязвимости, их нужно верифицировать (подтвердить, что это не ложное срабатывание), ведь только в этом случае уязвимость можно исправить. Усугубляет проблему тот факт, что верификация в большинстве случаев делается вручную, а с учетом того, что число уязвимостей может достигать сотен и тысяч, не просто эффективность, но в целом целесообразность поддержки процесса CI/CD оказывается под большим вопросом.
В своем докладе я расскажу, как сделать так, чтобы в реалиях непрерывности процесса, больших объемов и горящих дедлайнов дефекты безопасности не остались незамеченными, а процесс их верификации не превратился в бутылочное горлышко. Мы подробно поговорим о том, как грамотно автоматизировать процесс обеспечения безопасности ПО, не снижая — а даже повышая эффективность выполнения основных задач.
Информационная безопасность
Continuous Integration

Distributed Tracing 101

Михаил Кабищев
В последнее время тема distributed tracing становится все более и более популярной. В этом докладе я расскажу про:
  • историю появления систем для distributed tracing
  • opentracing / OpenCencus
  • какие задачи можно и нельзя решить с его помощью
  • практические советы по внедрению distributed tracing в вашу систему

Распределенные системы
Мониторинг

Ещё один подход к предоставлению Kubernetes кластеров как PaaS

Андрей Евтеев
Сейчас возрастает популярность микросервисной архитектуры. Мы разработали платформу оркестрации на основе Kubernetes и Docker для запуска микросервисных приложений и их быстрого развертывания на несколько регионов.
Для этого мы добавили от себя:
  • несколько классов хранилищ,
  • балансировку на двух уровнях,
  • централизованный сбор и обработку логов и визуализацию с помощью kibana
  • сделали возможным сбор широкого набора метрик (CPU, MEM, storage, network) c визуализацией,
  • Docker VM
  • удобный дашборд для пользователей

И мы расскажем, как мы это сделали и зачем...
Распределенные системы
Kubernetes
Docker